【Qboy】
2014年12月21日
这几天,我第一次做的android游戏(WE!青春纪)马上就要上线。上线之前需要把各个渠道的SDK加入到我们游戏中,与渠道进行联运。但是商务很给力,一下子联系了10多个渠道,让我应接不暇。还好有了AnySDK,可以一键打包。但是问题来了,这帮Any的人太忙了,而渠道的SDK更新太快。所以有些时候就会出现Any中的SDK版本与渠道的版本可能不一致的情况。那怎么办?一种联系AnySDK的人更新(好像没这么快),二是如果只是换一些资源和jar包的,是否可以利用工具进行反编译。现在我把这次的痛苦经历写出来吧。
主要流程如下图所示:
各个工具是:
apktool:V2.0.0-RC3
dex2jar:V0.0.9.15
smali:V2.0.3
jdk:1.7
各个命令分别是:
1、拆包:apktool d a.apk
2、jar->dex:d2j-jar2dex.bat xxx.jar
3、java -jar baksmali.jar -o classoutput xxx.dex
4、打包:apktool b a(文件夹)
5、签名,如果没有特殊要求的签名可以使用dex2jar集合中的d2j-apk-sign进行签名,如果自己有签名那使用jarsigner进行签名。
签名的命令行:jarsigner -verbose -keystore (keystore文件) -signedjar a.apk(签名输出的apk名) -digestalg SHA1 -sigalg MD5withRSA game.apk(输入apk) alias(别名)。
ps:特别要注意标红的那部分,如果jdk7需要加这个,如果不加签名后的包无法进行安装。jdk加上也不会出错,所以建议加上。
以上,只是我第一次对apk中很初步的一个拆包解包的过程,希望对大家有点帮助吧。