#构建系统概述
Android构建系统是用于构建,测试,运行和打包app的工具包。构建系统可以集成到Android Studio菜单中,也可以单独使用命令行运行。构建系统的特点:
- 自定义,配置和扩展构建过程;
- 为同一个
project
或者moudles
,创建多个不同的APP;- 重用代码和资源。
转载请注明出处 : https://blog.csdn.net/hpu_zyh/article/details/48447081
博客主页 | 简书 | 知乎 | 微博 | github
##构建过程
构建.apk
文件的过程涉及到许多工具,并且产生一些中间文件。如果您正在使用Android Studio,每次执行你的project
或者module
的 Gradle build task
都可以看到完整的构建过程。构建过程是非常灵活的,大部分的构建过程都是可配置和可扩展的。下图描述了构建过程中涉及的一些工具和构建流程:
一个典型的构建过程的一般如上图所示。构建系统读取配置的product flavors
build types
dependencies
,然后合并所有的资源。如果不同的文件夹中包含相同的资源名称或设置,下面覆盖的优先顺序是:dependencies
覆盖build types
, build types
覆盖product flavors
,product flavors
覆盖源代码目录
。
Android的资产打包工具(AAPT)
把你的应用程序资源文件进行编译,如AndroidManifest.xml
文件和一些XML文件
,R.java
文件是由你的Java代码中引用的资源自动生成的。aidl工具
,将.aidl接口
转换成Java接口
。- 所有的Java代码,包括
R.java
和.aidl文件
,由Java编译器编译成.class文件
。 DEX工具
转换.class文件
的Dalvik字节码。使用的第三方库
和.class文件
也被转换成.dex文件
,以便它们可以被打包成最终的.apk文件
。- 所有非编译资源(如图片),已编译的资源,以及
.dex文件
被发送到apkbuilder工具
打包成一个apk文件。 - 一旦apk文件生成,它在安装之前需要使用debug或者release key进行签名 。
- 最后,应用程序被签名后,使用
zipalign工具
压缩.apk文件
, 减少最终的.apk所占空间注:应用程序被限制在64K方法参考限值。如果您的应用程序达到此限制,构建过程输出以下错误信息:
为了避免这种错误,请参阅构建应用程序与在65K方法。1
Unable to execute dex: method ID not in [0, 0xffff]: 65536.
##构建输出
构建生成APK每个 build variant
在app/build
文件夹app/build/outputs/apk/
目录中包含一个名为app-<flavor>-<buildtype>.apk
的 .apk文件;例如, app-full-release.apk
和 app-demo-debug.apk
.