这里分三部分:游戏母包game.apk 、渠道资源包、自动化打包系统。
游戏母包:接入聚合SDK,对接统一化接口,走通整体SDK的登录、支付、数据上报交互逻辑的游戏包体。
渠道资源包:整合了中间层和业务层SDK。
打包系统:输入游戏母包和渠道资源包后,自动化解包、合并资源、封包,最终输出游戏_渠道包。
整个过程由打包系统进行。
输入游戏母包和SDK(为了代码安全建议使用 ProGuard 工具对代码混淆)
使用apktools 对游戏母包进行反编译
java -jar */apktool.jar d -o *.apk ./dir -f --only-main-classes
将SDK资源拷贝到反编译后的对应文件夹
合并manifest文件
使用aapt工具编译资源生成R文件 并 打包成 jar
生成R文件 aapt p -f -m -J res目录 -I android.jar -M AndroidManifest.xml
javac -source 1.7 -target 1.7 -encoding UTF-8 */R.java
jar cvf */R.jar *
将SDK下所有的源码和引用的jar包转化成smali并拷贝到母包的smali目录
jar 2 dex dx.jar --dex --output=./r.dex ./R.jar dex 2 smali java -jar baksmali.jar -o ./smali ./r.dex
使用apktools回编译成apk文件
java -jar apktool.jar b ./dir -o unsign.apk
sign & zipalign
jarsigner -verbose -keystore *.keystore -storepass 密码 -keypass 密码 -signedjar sign.apk unsign.apk 别名