替換APK中的jar包文件

【Qboy】java

2014年12月21日android

      這幾天,我第一次作的android遊戲(WE!青春紀)立刻就要上線。上線以前須要把各個渠道的SDK加入到咱們遊戲中,與渠道進行聯運。可是商務很給力,一會兒聯繫了10多個渠道,讓我目不暇接。還好有了AnySDK,能夠一鍵打包。可是問題來了,這幫Any的人太忙了,而渠道的SDK更新太快。因此有些時候就會出現Any中的SDK版本與渠道的版本可能不一致的狀況。那怎麼辦?一種聯繫AnySDK的人更新(好像沒這麼快),二是若是隻是換一些資源和jar包的,是否能夠利用工具進行反編譯。如今我把此次的痛苦經歷寫出來吧。工具

  主要流程以下圖所示:spa

  

各個工具是:命令行

apktool:V2.0.0-RC3blog

dex2jar:V0.0.9.15遊戲

smali:V2.0.3資源

jdk:1.7get

各個命令分別是:it

一、拆包:apktool d a.apk

二、jar->dex:d2j-jar2dex.bat xxx.jar 

三、java -jar baksmali.jar -o classoutput xxx.dex

四、打包:apktool b a(文件夾)

五、簽名,若是沒有特殊要求的簽名可使用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中很初步的一個拆包解包的過程,但願對你們有點幫助吧。

相關文章
相關標籤/搜索