二、apk 对齐命令
完整绝对路径执行的命令 ( 仅做参考 ) :
D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/zipalign -f 4 D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned.apk D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned-aligned.apk
参数说明 :
D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/zipalign 是 zipalign.exe 工具的完整绝对路径 ;
-f 参数代表 , 如果存在输出文件 , 则覆盖该文件 ;
4 表示 32 位对齐 ;
D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned.apk 表示被对齐的 apk 文件 的 绝对路径 ;
D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned-aligned.apk 表示对齐后的输出文件的 绝对路径 ;
三、apk 对齐操作代码示例
对齐操作代码示例 :
/* 4 . 对齐操作 */ // 对齐操作的输出结果, 将 app-unsigned.apk 对齐, 对齐后的文件输出到 app-unsigned-aligned.apk 中 var unSignedAlignApk = File("app/build/outputs/apk/debug/app-unsigned-aligned.apk") // 打印要执行的命令 println("cmd /c D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/zipalign -f 4 ${unSignedApk.absolutePath} ${unSignedAlignApk.absolutePath}") /* 将 app-unsigned.apk 对齐 使用 zipalign 工具命令 注意 : Windows 命令行命令之前需要加上 "cmd /c " 信息 , Linux 与 MAC 命令行不用添加 */ process = Runtime.getRuntime().exec("cmd /c D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/zipalign -f 4 ${unSignedApk.absolutePath} ${unSignedAlignApk.absolutePath}") // 等待上述命令执行完毕 process.waitFor() // 执行结果提示 if(process.exitValue() == 0){ println("对齐操作 执行成功"); } else { println("对齐操作 执行失败"); }
四、apk 对齐执行结果
执行结果 : 红色矩形框就是对齐后生成的 app-unsigned-aligned.apk 文件 ;
命令行输出 :
cmd /c D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/zipalign -f 4 D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned.apk D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned-aligned.apk 对齐操作 执行成功