使用Ant打包Android应用——apk生成过程
程序开发
2023-09-04 15:25:35
前文 《 使用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应用详解》中定制化的步骤及原因。
总的可分为资源、代码、签名信息,具体为资源: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应用详解》中定制化的步骤及原因。
标签:
上一篇:
sass中如何使用绝对路径?
下一篇:
相关文章
-
无相关信息