使用Ant打包Android应用——apk生成过程

    前文 《 使用Ant打包Android应用详解》和 《使用Ant打包Android应用详解——Ant使用解析》讲述了如何使用Ant及打包apk,本文总结下apk包的生成过程。
    apk包就是一个zip格式文件(可通过二进制软件查看其是否压缩),利用解压缩软件可看到其结构如图所示:

使用Ant打包Android应用——apk生成过程_第1张图片
  总的可分为资源、代码、签名信息,具体为资源:assets、res、resources.arsc,android应用的配置清单AndroidManifest.xml文件 代码:classes.dex 和lib目录中的共享库文件 签名:META-INF
再来看这些文件具体的生成过程如同所示:
使用Ant打包Android应用——apk生成过程_第2张图片
此图省略了对aidl文件,so文件等的处理
  1.aapt资源处理:
  aapt扫描android工程目录中的资源文件,一方面处理png图片,生成二进制的xml文件(解压apk包是无法看到xml文件内容的),另一方面索引资源,生成R.java文件,将aidl文件生成对应的Java源文件
  2.编译代码
(1)src目录中的源文件,上面生成的java文件通过javac编译生成class文件,与lib库中的jar文件一起,通过dx程序转化成被dalvik虚拟机执行的dex文件
(2)jni目录中的源文件,利用ndk-build编译后生成so文件,保存在lib目录中
  3.归档
  apkbuilder(新版的sdk中已经见不到它的影子,其实都是在sdklib.jar中)将处理的资源文件、代码文件、lib库文件以zip格式归档在一个apk文件中
  4.签名
  利用jarsigner,对apk文件进行签名,相应的在META-INF目录中生成*.RSA *.SF和MANIFEST.MF,其中MANIFEST.MF文件记录了对除META-INF目录外的其它文件计算的摘要值

  对应到Ant的打包步骤上,打包生成apk文件的过程如下图所示(解析SDK中build.xml的release mode):
使用Ant打包Android应用——apk生成过程_第3张图片
  基本的过程是首先初始化基本参数,如是否是库工程,是打包成debug版还是release版,是否需要使用proguard混淆代码,其次就是打包(package),最后如果是release版本就需要签名和zip包优化 。同时也可以返回查看并理解 使用Ant打包Android应用详解》中定制化的步骤及原因。

你可能感兴趣的:(ant编译,apk文件结构,apk生成过程)