最近用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