Andrioid 编译系统是你用于build,test,runapp的工具箱。编译系统的运行,可以通过Android Studio的菜单或者是独立的命令行。通过编译系统的特性你可以做以下的事情:

(1)自定义,配置,扩展编译进程。

(2)用同一个project and modules创建拥有不同特性的apk。

(3)通过来源设置重用代码和资源。

Android编译系统的自由性,能够在不修改您应用程序的核心源文件的基础上实现您想要的一切。

如何使用Android Studio 编译项目,请看我的下一篇文章Build And Running From Android studio。

如何自定义编译配置,请看我的下一篇文章:configuringgradle builds。

A Detailed Look atthe Build Process

编译进程包含了许多的工具和进程,这些使得在编译apk的过程中会生成很多中间文件。如果你在Android studio中开发,每次当你为你的app运行Gradle编译任务的时候,整套的编译过程就会被执行。编译系统的自由性使它有益,但是,因为大部分的构建过程是可配置的和可扩展的,所以我们要了解在这之下到底发生了什么。下图描述了在构建中涉及的不同的工具和过程:


一个经典的构建过程一般如下:编译系统对比合并所有的已配置的 product Flavors,build types,dependencies。如果在不同的文件夹中包含同样名字的资源或者设置,那么生效的优先级顺序是:dependencies 覆盖build types,build types 覆盖product flavors,product flavors 覆盖main sources 目录。

(1)aapt 全称AndroidAsset packaging tool。该工具获取应用的资源文件,例如,AndroidManifest.xml,Activities的xml文件,并且编译它们。R.java文件被生成,所以你能将你的资源文件id在java code中使用。

(2)aidl工具转化你在java代码中引入的所有的.aidlinterface。

(3)所有的java code,包含R.java和.aidl将被java compiler工具编译,然后生成.class文件。

(4)dex工具转换.class文件成为Dalvikbyte code。任何的第三方库和.class文件也都会被转换成.dex文件。以至于最后它们能被打包成.apk文件。

(5)未被编译的资源如图片,已被编译的资源,.dex文件都会被发送到apkbuilder工具,从而生成apk。

(6)一但apk被构建,那么在安装到设备之前,它一定要被签名,要么是debug要么是release。

(7)一但apk是release的,那么一定要使用zip以align工具,它可以减少apk运行时所占用的内存。

注释:apk中的方法数是有限制的,不可以超过65535.具体的解决办法:请参考我的文章:Apps over 64K Methods。


作者有话说:如果您需要Android中文API,请扫一扫下面的二维码,您的关注,就是我的动力,最技术,我们认真的。


更多相关文章

  1. Android(安卓)dumpsys工具分析
  2. Android(安卓)SDK Manager中Google APIs无法显示问题(附SDK Manag
  3. unity obb 分包 上传googleplay
  4. 解决Android(安卓)4.2.2 脱机(offline)问题
  5. Android(安卓)ui utils-简单实用的Android界面工具
  6. Android: Android(安卓)Thumbnail 攻略
  7. android项目在不同平台切换的问题
  8. 内核版本与Android版本对应关系
  9. Android之traceview使用

随机推荐

  1. Android(安卓)Intent.FLAG_ACTIVITY_NEW_
  2. [Android]Android权限列表
  3. android Java 提交数据到服务器的两种方
  4. Android(安卓)游戏开发必备的基础知识
  5. 关于如何高效率开发一个Android(安卓)App
  6. android intent相关
  7. 开关飞行模式
  8. android 启动自动调用自己创建的脚本(应用
  9. Android——高德地图地点搜索框
  10. Android(安卓)拷贝Asset目录下文件或者文