android构建系统总览

Android构建系统是你用于构建,测试,运行及打包你的apps的工具包。构建系统既能够做为一个集成工具经过Android Studio的菜单运行,也能够在命令行中独立地运行。你可使用构建系统的功能来作这些事情: html

  • 定制,配置,及扩展构建过程
  • 使用相同的项目及模块,为你具备不一样功能的app建立多个APKs。
  • 在源码集合间复用代码和资源。

Android构建系统的灵活性使得你可以在不改变你的app的核心源代码文件的状况下达成全部这些目标。要编译一个Android Studio项目,请参考Building and Running from Android Studio。要对Android Studio项目配置特别的构建设置,请参考 Configuring Gradle Builds java

构建过程详解

构建过程包含了在产生.apk的过程当中用到的许多工具及有中间文件产生的子过程。若是你在使用Android Studio作开发,则在你每次为你的项目或模块运行Gradle build task时,都会完成完整的构建过程。构建过程是很是灵活的,而因为许多构建过程是可配置并可扩展的,于是理解构建过程背后都发生了什么是颇有用的。下图描述了包含在一次构建中的不一样工具及过程: android


一次典型构建的常规过程大致以下。构建系统从配置的product flavors,build types,和dependencies合并全部的资源。若是不一样目录下包含的资源具备相同的名字或设定,则遵循的覆盖优先级顺序为:dependencies覆盖build types,build types覆盖product flavors,product flavors覆盖main source目录: shell

  • Android Asset Packaging Tool (aapt)获取你的应用程序的资源文件,好比AndroidManifest.xml文件及你的Activities的XML文件,并编译它们。同时会产生R.java文件,以便于你能够在你的Java代码中引用你的资源。
  • aidl工具将你全部的.aidl接口转换为Java接口。
  • 你全部的Java代码,包括R.java和.aidl文件,被Java编译器编译为.class文件输出。
  • dex工具将.class文件转换为Dalvik字节码。你的模块中包含的全部第3方库及.class文件也会被转换为.dex文件,以便于它们能够被打包进最后的.apk文件。
  • 全部没有被编译的资源(好比图片),已编译的资源,及.dex文件被发送给apkbuilder工具来打包成一个.apk文件。
  • 一旦构建了.apk,则在它可以被安装到一个设备以前必须用一个debug或release key来签名。
  • 最后,若是应用以release模式签名,则你必须用zipalign工具来align你的.apk。Aligning最后的.apk在应用程序运行于一个设备上时能够下降内存的用量。

注意:Apps有一个限制,引用的method数被限制在64K之内。若是你的app达到了这个限制,构建过程将输出以下的错误消息: app

Unable to execute dex: method ID not in [0, 0xffff]: 65536.

要避免这个错误,请参考Building Apps with Over 65K Methods ide

构建输出

构建过程为每次构建在app/build目录下产生一个不一样的APK:app/build/outputs/apk/目录包含名为app-<flavor>-<buildtype>.apk的包;好比app-full-release.apk和app-demo-debug.apk。 工具

Done 测试

原文
gradle

相关文章
相关标签/搜索