众所周知,android 默认工具gradle可以配置多个productFlavors,以此实现配置多个不同版本,渠道的app应用,笔者认为这个编译速度很慢,于是乎有了今天的方案。希望能抛砖引玉为大家带来不一样的思路,废话不多说。
大体思路
gradle可以自定义任务,通过自定义任务可以把编译的apk 进行复制到不同渠道的文件夹。
不同渠道文件夹内的app 通过 反编译->修改apk内的资源->重新打包->重新签名
实现步骤
gradle自定义任务
此部分不是今天的重点,大家可以自行百度,网上资料一大片
Apk修改内容
反编译
使用apktool_2.7.0.jar 通过命令行
C:\ProgramFiles\Java\jdk1.8.0_181\bin\java -jar apktool_2.7.0.jar d -f app.apk
出现如图结果,则表示已经完成
修改
静态资源都可以修改,笔者修改了mainfest 和 assert
重新打包
使用apktool_2.7.0.jar 通过命令行
C:\ProgramFiles\Java\jdk1.8.0_181\bin\java -jar apktool_2.7.0.jar b app
出现如图结果,则表示已经完成
重新签名
使用apktool_2.7.0.jar 通过命令行
C:\ProgramFiles\Java\jdk1.8.0_181\bin\jarsigner -keystore D:\\test\key.jks -storepass 2023 -signedjar D:\test\app\dist\app_signed.apk D:\test\app\dist\app.apk app
出现如图结果,则表示已经完成
命令解释:
jarsigner -verbose -keystore [签名文件的完整路径名] -signedjar [签名后apk完整路径名] [待签名apk的名称] [签名文件的别名]
至此简单的修改就结束了,感谢大家的观看。有兴趣的也可以把jar 集成到工程中,就不用命令了,其实就是调用两个接口。
最后,希望大家把技术用到正规用途,有的小伙伴私信我,让我帮他破姐VIP 时长的,在此奉劝一句,别再私信我了,请用于学习或者科学研究用途!!!