Android build system in AS
Android Studio使用Gradle来管理和编译Android工程,而为了生成Android应用衍生出了Android build system。Android build system就是用来构建、测试、运行还有打包app的一套工具,这里我们将具体了解Android build system。
Build Process--构建的流程
首先我们要对Android build system的总体行为有所了解。在Android Studio中生成apk文件需要运行Gradle build任务,这时会完整走一遍Build(构建)流程,这个流程包含了很多工具和步骤,期间还会生成过渡文件。
下图可以说明一个完整的构建流程:
可以归结为以下几步
- Android Asset Packaging Tool,也就是常说的aapt把资源文件进行编译(例如AndroidManifest.xml和Activity用的xml文件),同时生成的还有R.java。R.java相当于资源文件的索引,在java代码中就是通过R.java引用资源文件的。
- aidl tool将.aidl接口转化为java接口
- 所有的Java代码,包括R.java和.aidl生成的java接口代码,都被编译成.class文件
- dex tool将.class文件转化为Dalvik二进制代码.dex。所有的第三方库和.class文件也会被转化为.dex文件
- 所有文件,包括未编译资源、编译资源、dex文件,都由apkbuilder tool包装到apk文件中。
- apk生成后需要用debug key或 release key签名才能安装到设备中。
- 如果要发布apk,还需要使用zipalign工具使apk文件对齐
*注意:build system会合并所有资源,资源的可能来自默认资源目录app/src/main/res和dependencies指向的库,也可能受product flavors和build types的影响。如果不同来源的资源重名,则根据以下优先级,使用优先级最高的资源:dependencies > product flavors > build types > 默认资源目录
Build Configuration--Build配置
我们已经对Build有了一个整体的了解,但如果想要对Build任务做些修改,例如添加一个库,该怎么做呢?这就需要学习Build的配置了。
Android Studio工程有一个主配置文件,而工程下属的module也都各自有配置文件,他们的名称都是build.gradle,大多数情况下我们只需要编辑module下的build.gradle。
假如我们有一个名为app的module,app的build.gradle文件如下:
apply plugin: 'com.android.application' android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 8 targetSdkVersion 19 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile project(":lib") compile 'com.android.support:appcompat-v7:19.0.1' compile fileTree(dir: 'libs', include: ['*.jar']) }
我们一起来看看这份配置是怎么一回事:
-
apply plugin: 'com.android.application' 将名为com.android.application的插件应用到这个module。
实际上,这相当于做了一个声明,com.android.application表明这是一个Android 应用的build,也可以使用com.android.library表示一个library,或者java表示一个java工程。有了这个声明,build system才能接受这个build,同时此build任务会被加入到主build任务,而接下来的 android {...} 元素中的Android相关build选项也才变得可用。 -
android {...} 元素能配置所有build选项
- compileSdkVersion 指定编译应用的sdk版本
- buildToolsVersion 指定build tools的版本(build tools的主版本号应该不低于compileSdkVersion以及targetSdk);
- defaultConfig 会影响一些关键配置,以及manifest文件中的条目,出现在defaultConfig中的条目会覆盖manifest文件的;
- buildTypes build类型元素控制应用的build和打包,默认情况下有debug和release两种build类型:debug类型的应用包带有debug标签,而且被签名为debug key;release build 类型没有默认签名,要想生成必须要有指定的key。
- dependencies 声明了此module的依赖关系,后面将单独用一个小结来说明dependencies。
Dependencies
下面这段代码用到了所有三种依赖:
dependencies { // Module dependency compile project(":lib") // Remote binary dependency compile 'com.android.support:appcompat-v7:19.0.1' // Local binary dependency compile fileTree(dir: 'libs', include: ['*.jar']) }
Module dependencies
第一个compile project(":lib")是模块依赖,表示模块app依赖于模块lib。当app被build时,build system会把lib也包含进来。
Remote binary dependencies
接下来的是远程库依赖,compile 'com.android.support:appcompat-v7:19.0.1' 表示模块app依赖Maven库中版本为19.0.1的Android Support Library。默认情况下,远程库指向Maven中心库(Maven Central Repository)。
Local binary dependencies
最后的compile fileTree(dir: 'libs', include: ['.jar']) 表示本地库依赖。 一般而言,我们把本地库的jar文件放到模块的 libs 文件夹里,然后用compile fileTree(dir: 'libs', include: ['.jar'])告诉build system所有在libs下的jar文件都要被编译并且被包含进应用中。
相关推荐
将http://bbs.csdn.net/topics/390980466 里面的问题回复做了pdf格式,方便本地查看 如何在Android Studio里设置Build Tool版本?.pdf 如何在Android Studio里设置Build Tool版本?.pdf
内容包括:1.Android StudioRelease所有...3.Android Studio版本、Gradle版本、Build Tools版本详细对照,让大家不再因为版本问题而纠结,你只需要知道哪个Android Studio版本用对应Gradle以及Build Tools就可以了。
Android Studio学习教材,安卓学习必看
Android Studio Bumblebee 2021.1.1 Patch 1 (android-studio-2021.1.1.21-windows.exe)大黄蜂,适用于Windows x86_64系统,是Android Studio 4.3(Android Studio Arctic Fox 2020.3.1.26新版本命名)版本之后的新...
AndroidStudio使用详解 AS快捷键图解
Chapters also cover advanced features of Android Studio such as Gradle build configuration and the implementation of build variants to target multiple Android device types from a single project code ...
Android Studio Bumblebee 2021.1.1 Patch 2 (android-studio-2021.1.1.22-windows.zip)大黄蜂,适用于Windows x86_64系统,是Android Studio 4.3(Android Studio Arctic Fox 2020.3.1.26新版本命名)版本之后的新...
Android Studio Chipmunk Canary 2 (android-studio-2021.2.1.2-windows.zip) 花栗鼠 只适用于Windows系统。 Android Studio 版本倒序排列: Android Studio Chipmunk 2021.2.1 花栗鼠 (新版命名) Android Studio...
android studio ndk-build 编译C生成.so文件, 要把代码中加密的部分打包成so文件,
Android Studio Bumblebee 稳定版(android-studio-2021.1.1.20-windows.exe) 大黄蜂,适用于Windows x86_64系统,是Android Studio 4.3(Arctic Fox 2020.3.1.26新版本命名)版本之后的新版本Android Studio ...
Android Studio Bumblebee 稳定版(android-studio-2021.1.1.20-linux.tar.gz) 大黄蜂,适用于Linux x86_64系统,是Android Studio 4.3(Arctic Fox 2020.3.1.26新版本命名)版本之后的新版本Android Studio ...
Android Studio Chipmunk (2021.2.1) Beta 3 (android-studio-2021.2.1.10-mac_arm.zip)花栗鼠 适用于macOS Arm芯片系统,文件分割成两个压缩包,必须一起解压使用: Android Studio Chipmunk (android-studio-...
android studio 学生信息管理系统实现源码(安卓开发教程课后练习)android studio 学生信息管理系统实现源码(安卓开发教程课后练习)android studio 学生信息管理系统实现源码(安卓开发教程课后练习)android ...
Android Studio Electric Eel 2022.1.1 Canary 2(android-studio-2022.1.1.2-mac.zip) 适用于macOS Intel系统,文件使用WinRAR分割两个压缩包,必须一起下载使用。在macOS使用WinZip进行解压: Android Studio ...
Android Studio Dolphin (2021.3.1) Canary 3 (android-studio-2021.3.1.3-mac.zip)海豚 适用于macOS Intel芯片系统,文件分割成两个压缩包,必须一起下载两个压缩包进行解压使用: android-studio-2021.3.1.3-mac...
Android Studio Bumblebee 2021.1.1 Patch 2 (android-studio-2021.1.1.22-cros.deb)大黄蜂,适用于Chrome OS系统,是Android Studio 4.3(Android Studio Arctic Fox 2020.3.1.26新版本命名)版本之后的新版本...
Title: Learn Android Studio: Build Android Apps Quickly and Effectively Author: Adam Gerber, Clifton Craig Length: 484 pages Edition: 1 Language: English Publisher: Apress Publication Date: 2015-05-11...
Android Studio Chipmunk (2021.2.1) Beta 3 (android-studio-2021.2.1.10-mac_arm.zip)花栗鼠 适用于macOS Arm芯片系统,文件分割成两个压缩包,必须一起解压使用: Android Studio Chipmunk (android-studio-...
课程设计大作业基于java的Android Studio实现井字棋小游戏源码课程设计大作业基于java的Android Studio实现井字棋小游戏源码课程设计大作业基于java的Android Studio实现井字棋小游戏源码课程设计大作业基于java的...