Android的构建过程涉及到许多工具和流程,并会产生一系列中间件,最终生成一个APK文件,可以根据官方提供的流程图来具体了解构建的过程。


通常的构建过程就是如上图所示,下面是具体描述:

1.AAPT(AndroidAssetPackagingTool)工具会打包应用中的资源文件,如AndroidManifest.xmllayout布局中的xml等,并将xml文件编译为二进制形式,当然assets文件夹中的文件不会被编译,图片及raw文件夹中的资源也会保持原来的形态,需要注意的是raw文件夹中的资源也会生成资源idAAPT编译完成之后会生成R.java文件。

2.AIDL工具会将所有的aidl接口转化为java接口。

3.所有的java代码,包括R.javaaidl文件都会被Java编译器编译成.class文件。

4.Dex工具会将上述产生的.class文件及第三库及其他.class文件编译成.dex文件(dex文件是Dalvik虚拟机可以执行的格式),dex文件最终会被打包进APK文件。

5.ApkBuilder工具会将编译过的资源及未编译过的资源(如图片等)以及.dex文件打包成APK文件。

6.生成APK文件后,需要对其签名才可安装到设备,平时测试时会使用debugkeystore,当正式发布应用时必须使用release版的keystore对应用进行签名。

7.如果对APK正式签名,还需要使用zipalign工具对APK进行对齐操作,这样做的好处是当应用运行时会减少内存的开销。

在构建APK的过程中,当APK过大,应用中的方法数量超过65536限制的时候,可能会报如下错误:Unabletoexecutedex:methodIDnotin[0,0xffff]:65536。一旦遇到上述错误,就需要使用MultiDex方案来解决,但官方的MultiDex方案有一些限制,因此还得使用各种策略填坑才行,具体可参考网上不少较优秀的解决方案。


参考文档:https://developer.android.com/sdk/installing/studio-build.html#detailed-build


更多相关文章

  1. eclipse新建android工程出现This template depends on Android(
  2. android AIDL服务
  3. Android下生成core dump的方法
  4. Android(安卓)adb的使用略解
  5. 硬件访问服务4之Android硬件访问服务框架及系统函数全详细实现
  6. Android(安卓)Adapter的那些事
  7. 对Android平台Linux部分的初步理解
  8. 电脑APK
  9. NPM 和webpack 的基础使用

随机推荐

  1. [置顶] Android(安卓)NDK开发轻松入门
  2. Android(安卓)之父鲁宾迈向新征程:人工智
  3. android应用程序基本原理
  4. Android(安卓)Gradle知识点总结
  5. Adobe不再为Android提供Flash,移动Flash死
  6. 基于Android(安卓)Bionic 库动态编译busy
  7. 实现了 Android(安卓)设备之间通过 Wifi
  8. Android(安卓)播放gif
  9. Android(安卓)开发者的下半场
  10. Android(安卓)Binder机制之 ServiceManag