apk反編譯和重新打包

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章