替換APK中的檔案重新打包
阿新 • • 發佈:2018-11-10
這兩天遇到一個問題,一直沒有頭緒,為了確認原因,需要將新的資源和程式碼,替換到老包中,看看問題是否會出現,結果很無情,問題依舊。不過倒是研究了下如何替換assets中的檔案。指令碼基本都是網上搜集來的,發現這個方法有個bug,替換可以,無法刪除,因此res會變大。用的時候要注意這點。
#簽名相關資訊 需要按需修改為自己的 SET KEYSTORE_NAME=xxxxxxxxxxxxxx.keystore #app別稱 SET KEYSTORE_ALIAS=xxxxxxxxxxxxxx #簽名密碼 SET KEYSTORE_STOREPASS=xxxxxxxxxxxxxx #簽名密碼 SET KEYSTORE_KEYPASS=xxxxxxxxxxxxxx #原apk名字 SET INPUT_APK=.\input.apk #新建META-INF和assets兩個目錄 其中META-INF新建幾個和apk中名字一樣的檔案 但是大小為0 可以用touch命令 SET META-INF=.\META-INF #assets儲存著需要被替換的檔案 SET ASSETS=.\assets #新建output目錄 SET UNSIGNED=.\output\Unsinged.apk SET SIGNED=.\output\Signed.apk SET OPT=.\output\output.apk copy %INPUT_APK% %UNSIGNED% jar -uf %UNSIGNED% %META-INF% jar -uf %UNSIGNED% %ASSETS% @echo 替換檔案完成! jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore %KEYSTORE_NAME% -storepass %KEYSTORE_STOREPASS% -keypass %KEYSTORE_KEYPASS% -signedjar %SIGNED% %UNSIGNED% %KEYSTORE_ALIAS% @echo 簽名完成! del /F /Q %OPT% #zipalign在android 的SDK中,可以新增環境變數或者直接拷貝到當前目錄 .\zipalign 4 %SIGNED% %OPT% @echo 優化完成! del /F /Q %UNSIGNED% del /F /Q %SIGNED% @echo 操作完成! @pause