当前位置: 代码迷 >> Android >> 使用Ant打包Android应用——apk生成进程
  详细解决方案

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

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


  总的可分为资源、代码、签名信息,具体为资源:assets、res、resources.arsc,android应用的配置清单AndroidManifest.xml文件 代码:classes.dex 和lib目录中的共享库文件 签名:META-INF
再来看这些文件具体的生成过程如同所示:

此图省略了对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):

  基本的过程是首先初始化基本参数,如是否是库工程,是打包成debug版还是release版,是否需要使用proguard混淆代码,其次就是打包(package),最后如果是release版本就需要签名和zip包优化。同时也可以返回查看并理解使用Ant打包Android应用详解》中定制化的步骤及原因。

版权声明:本文为博主原创文章,未经博主允许不得转载。

  相关解决方案