以下是Google官方的apk打包流程图,这个流程图很容易看懂,我们可以看到apk打包过程中需要用到的工具有java、aapt、aidl、dx、apksigner、zipalign。那么这些工具都在哪里呢?

看一下笔者的Android SDK根目录:

在SDK根目录中有一个build-tools目录,里面是这样的:

是一些版本号命名的文件夹,打开29.0.1这个文件夹,可以看到:

我们发现打包需要用到的aapt、aidl、apksigner、zipalign、dx工具都在这里。那么apkbuilder在哪里呢?
Android Apk打包流程中会用到一个叫apkbuilder的工具将.dex文件和优化的资源文件打包生成apk。在android sdk tools 22以前,apkbuilder是以脚本文件的形式存在于tools目录中。现在我们发现apkbuilder不见了? apkbuilder在哪呢?难道apkbuilder被废弃了,不用了?
其实apkbuilder并没有去掉,而是换了一种存在形式,或者换了一身衣服而已。看Google的解释:

原文地址:https://android.googlesource.com/platform/sdk/+/master/apkbuilder/readme.txt
意思是apkbuilder命令行工具已经废弃了,取而代之的是变成了一个java class。
这个class完整名称是com.android.sdklib.build.ApkBuilder,而且存在于sdklib这个文件中。
那么sdklib在哪呢?笔者在自己SDK中发现在 tools/lib/sdklib-26.0.0-dev.jar。使用JD-JUI工具打开这个jar包,果然发现了
com.android.sdklib.build.ApkBuilder。
关于签名这一步,签名可以使用jarsigner和apksigner,这是由开发者自己选择,apksigner是安卓独有的签名工具,jarsigner是java的签名工具。
关于最后一步,使用zipalign对齐apk,这一步是否是必须的呢? 并不是必须的,对齐后会让apk的体积小一点,apk跑起来也会快一点,最好将签名后的apk对齐。
如何检查apk是否已经使用zipalign对齐了呢?
使用zipalign命令即可检查:
zipalign -c -v 4 ApkPath 当显示Verification succesful即为已对齐,显示Verification FAILED为未对齐。
本文详细解析了Android APK的打包流程,介绍了所需工具如java、aapt、aidl、dx、apksigner、zipalign的位置及作用。揭示了apkbuilder的演变过程,从脚本文件转变为Java类,并说明了签名和zipalign对齐的重要性。
533

被折叠的 条评论
为什么被折叠?



