这篇文章给大家介绍如何理解apk反编译和重新打包,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
专注于为中小企业提供网站设计、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业南涧免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
最近用anysdk接android,接入有点小麻烦,不过确实带来了很大的便利,接入新渠道只需要设置参数就可以了,唯一要注意的就是,发布的时候把debugMode关闭。
不过android下面的anysdk有个问题,就是所有渠道必须用同一套资源,然后使用母包生成渠道包,包之间无法做差异化,这与我们项目有点矛盾。要解决这个问题,能想到的有两个办法:
母包就将某个渠道的最终资源弄进去,再生成渠道包,这个确实可行,但是实在太麻烦,不好维护,而且使anysdk带来的便利大大降低。
一次性生成所有渠道包,再用apktool等工具反编译,把差异化文件添加进去,再重新签名。
反编译倒是没问题,遇到了一个问题:需要额外下载一个apktool.jar。没想到重签名卡了好久,因为网上说的命令都是jarsigner -verbose -keystore xx.keystore -signedjar -pkg.apk pkg1.apk xx.keystore,也没讲每个参数什么意思,用的时候总是出错,搞了好久才成功。
下面将命令解释如下:
jarsigner:jdk下的一个工具,后缀exe
-verbose:输出详细信息
-keystore:秘钥文件
-signedjar:签名文件,第一个参数为签名后的文件,相当于输出文件,第二个为未签名文件,输入文件。开始搞反了,以为第一个是输入,第二个输出,被坑了一把。
最后一个参数,是keystore的alias名,网上说的真是误人子弟,放两个keystore文件名有何意义,是吧。
所以正确的命令应该是:jarsigner -verbose -keystore xx.keystore -signedjar output.apk input.apk alias
关于如何理解apk反编译和重新打包就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。