反編譯修改Android apk的版本號

最近遇到一種突發情況,cp那邊的游戲打包后沒改版本號,上傳不了gp,今天又恰巧是周末,cp那邊沒上班,項目很趕,無奈之下,想到了直接使用反編譯改完之后再回編的方式,修改一下版本號。這篇文章主要是記錄一下整個流程。

準備工作

  1. 官網下載apktool,Apktool是一個逆向android非常有用的工具,可以用來反編譯apk文件,并且能在修改部分文件后,重新打包成一個新的apk,首選我們需要下載一個apktool的jar包
  2. 下載完后,把名稱改成apktool.jar(沒有梯子的同學可以看下這里),然后新建一個bat腳本,內容如下:
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
chcp 65001 2>nul >nul
java -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0\apktool.jar" %* 

反編譯apk

準備工作完畢后,開始反編譯apk。
1.將你要反編譯的apk放到apktoo.bat的同一文件夾下,然后cd到這個目錄,執行以下命令:

apktool.bat d -o apk.out debug.apk

其中debug.apk為你要反編譯的apk的名字,替換一下即可

  1. 反編譯之后生成一個apk.out文件夾,其目錄如下:


    apk.out文件夾目錄.png
  2. 找到apktool.py文件,打開后,最下面的versionCodeversionName就是我們要修改的部分,這里直接改動成最新的版本號和code就行。
    apktool.py.png

回編譯apk

  1. 改完versionCodeversionName后,我們要把apk重新打包還原,執行以下命令:
apktool.bat b -o dst.apk apk.out

其中dst.apk為打包后生成的apk。

  1. 拿到新的apk之后,最后還需要兩步,一是重簽名,直接把簽名的keystore拷貝到當前的文件夾下,執行下面的命令:
jarsigner -verbose -keystore debug.keystore -signedjar dst_signed.apk dst.apk debug

其中debug.keystore為你自己的簽名文件,debug為簽名文件的keyAlias
然后輸入密碼就行,dst_signed.apk為簽名后生成的apk文件

  1. 最后通過zipalign.exe工具對dst_signed.apk進行文件對齊,這個工具在sdk的build-tools的版本下面
    zipalign.exe.png

    dst_signed.apk復制到zipalign.exe工具的文件夾下,cd進入該文件夾,然后執行以下命令:
zipalign -v 4 dst_signed.apk dst_signed_align.apk

執行完后,出現如下命令即代表成功

執行成功.png

這樣就是文件對齊之后的正確版本,一整套的流程基本就結束了,可以反編譯驗證一下是否成功。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容