最近用anysdk接android,接入有点小麻烦,不过确实带来了很大的便利,接入新渠道只需要设置参数就可以了,唯一要注意的就是,发布的时候把debugMode关闭。

不过android下面的anysdk有个问题,就是所有渠道必须用同一套资源,然后使用母包生成渠道包,包之间无法做差异化,这与我们项目有点矛盾。要解决这个问题,能想到的有两个办法:

  1. 母包就将某个渠道的最终资源弄进去,再生成渠道包,这个确实可行,但是实在太麻烦,不好维护,而且使anysdk带来的便利大大降低。

  2. 一次性生成所有渠道包,再用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