标签:
Android构建系统是你用来构建、测试、运行和打包你的app的工具集。这个构建系统能作为Android Studio菜单的一个集成工具、和独立命令的方式运行。你能使用这个构建系统的如下功能:
自定义,配置,和扩展构建过程;
使用同一个项目和模块,为你的App创建多个不同功能的Apk;
通过资源集合的方式重用代码和资源;
Android构建系统非常灵活,可以使你实现一切功能,并且不用修改你的app的核心源代码。如何构建一个Android Studio项目,阅读Building and Running from Android Studio。如何在Android Studio项目进行自定义的配置,阅读Configuring Gradle Builds。
构建过程详解
----------------------------------------------------------------------------------------
构建生成一个.apk牵涉许多工具,和生成中间产物的过程。如果你使用Android Studio开发,完整的构建过程是你每次完成你的项目或者模块的Gradle构建task的运行。构建过程非常灵活,所以它是非常有用的,然而,需要了解在整个过程中发生了什么事情,因为大部分构建过程是可配置和可扩展的。下面的图描绘了在构建过程中相关工具和过程:
典型的构建过程如下。构建系统合并所配置的不同产品flavor、构建类型和依赖的资源。如果不同的文件夹包含同名或者设置的资源,下面介绍了优先级顺序:依赖优于构建类型,构建类型优于产品flavor,产品flavor优于主资源目录。
Android Asset Packaging Tool(aapt),拿到你的应用程序资源文件,如AndroidManifest.xml文件和你的Activity的XML文件,然后编译它们。产生了一个R.java,所以你能在你的Java代码中引用你的资源;
aidle工具转换所有你在Java接口中包含的.aild接口;
你的所有代码、包含R.java和.aidl文件,都被Java编译器编译,生成.class文件;
dex工具转换.class文件未Dalvik字节码,任何在你的项目中包含的第三方的库和.class文件,都被转换成.dex文件,它们被打包到最终的.apk文件中;
所有非编译的资源(如图片),编译的资源,和.dex文件被发送到apkbuilder工具,打包成一个.apk文件;
一旦.apk文件生成,在它被安装到设备之前,必须使用一个debug或者release key进行签名;
最终,如果应用程序在release模式下签名,你必须使用zipalign工具处理.apk文件。处理了最终的.apk文件,可以减少应用程序在设备上运行使用的内存;
注意:App有一个64K方法引用限制。如果你的应用程序促发了这个限制,构建过程输出下面的错误信息:
Unable to execute dex: method ID not in [0, 0xffff]: 65536.
为了避免这个错误,请阅读Building Apps with Over 65K Methods。
构建输出
构建在app/build文件加下为每个构建variant生成一个APK:这个app/build/outputs/apk目录下包含被命名为app-<flavor>-<buildtype>.apk;例如,app-full-release.apk和app-demo-debug.apk;
标签:
原文地址:http://blog.csdn.net/p106786860/article/details/50466327