产品每次发布,都需要打很多渠道的包。之前用per脚本打包,后来添加了自定义空间属性后,就不能打了。Ant脚本打包又嫌麻烦,引用的工程太多。最后想到一个办法就是反编译。
原理:每个渠道的包只有AndroidManifest.xml文件中渠道的ID不一样。所以反编译APK后,修改AndroidManifest.xml的渠道ID。最后重新打包。
步骤:
1.反编译已经打好包的APK(这里只用了-s,尝试过加上-r,但是AndroidManifest.xml文件没有被反编译,就删掉了)
1 java -jar apktool.jar d -s APK_NAME
2.修改AndroidManifest.xml文件中渠道ID
3.生成未签名的APK
1 java -jar apktool.jar b FILE_DIR UNSIGN_APK_NAME
4.将未签名的APK进行签名
1 jarsigner -verbose -keystore KEY_FILE_NAME -storepass PASSWORD -sigalg SHA1withRSA -digestalg SHA1 -signedjar SIGN_APK UNSIGN_APK ALIAS_NAME
5.将签名的APK进行优化
1 zipalign -v 4 SIGN_APK ZIPALIGN_APK
新的APK就生成了。以上步骤需要配置好JDK和SDK环境变量。
可以自己写一个java代码,循环替换渠道ID,就可以自动生成对应渠道包了
简略的写了个多渠道打包工具。可以猛戳这里进行下载。使用方法参见下载包里面的README.txt文件
时间: 2024-09-30 18:50:14