大家可能在日常工作中有需要打多个渠道包的需求,如果数量较少的话可以直接通过手动来完成,如果数量比较庞大的话就需要脚本来执行了。
下面给出一种比较简单的,效率较高的打渠道包的方法。这个方法是通过全程批处理来完成的,不需要其他语言协助。
思路:生成母包->反编译->修改渠道号->打包->签名->对齐(这里没有使用到直接打包的方法而使用了拆包打包,原因是直接打包的速度比较慢如果遇到大批量的生成的话会比较耽误时间)
首选,需要手动打出一个母包,我们暂且叫做test.apk
然后我们需要把这个母包反编译:
apktool d test.apk
在这里要说明一下,渠道号有些人会分为两种情况,一种是直接写在Androidmainfest.xml的,另外一种是在asset文件下有个渠道号文件。今天先说一下修改asset中文件的方式修改渠道号。批量渠道号需要存在一个文件中,格式:渠道号,渠道名
然后执行以下代码:
for /f %%i in (qudao.txt) do (
for /f "tokens=1,2,3 delims=," %%a in ("%%i") do (
echo %%a
echo %%b
echo %%c
if exist test\assets\qudao del test\assets\qudao
echo %%a > test\assets\qudao
apktool b test test.apk
ren test.apk test-%%b-unsigned.apk
jarsigner -verbose -keystore xxxx\key -signedjar test-%%b-signed.apk test-%%b-unsigned.apk xxxxxx -storepass xxxxx -keypass xxxxx
zipalign -v 4 new\test-%%b-signed.apk new\test-%%b-signed_zipaligned.apk
)
)
以上代码中,分别执行了修改渠道号->打包->签名->对齐。
这样就完成了一个简易的打包脚本。