一次不成功的apk重新打包經過

lt發表於2017-02-07

我在 https://github.com/qpython-android/qpython3/releases/download/1.0.0/qpython3-app-release-1.0.0.apk 上下載了安裝包,

方法1:
用winrar開啟它,發現assets目錄下有個private3.mp3檔案,大約有8M,就把它用一個小的同名檔案替換。winrar重新壓縮, 結果放在android裝置上,能出來安裝提示框,但安裝不成功。

方法2:
在http://www.oogps.com/post/apktool.html 上看到了apktool工具,到https://ibotpeaches.github.io/Apktool/下載了目前(20170207)最新版本,apktool_2.2.2.jar,並按照上文提示,編輯了apktool.bat檔案,內容如下:
java -jar "%~dp0\apktool_2.2.2.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9

我的java版本是: java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) Client VM (build 25.101-b13, mixed mode, sharing)

執行D:\abc>d:\apktool d d:\qpython3-app-release-1.0.0.apk命令解包

把assets目錄下private3.mp3檔案用一個小的同名檔案替換

執行D:\abc>d:\apktool b qpython3-app-release-1.0.0命令重新打包

把D:\abc\qpython3-app-release-1.0.0\dist目錄下的apk檔案放在android裝置上,仍然是能出來安裝提示框,但安裝不成功。

把原始檔案apk檔案放在android裝置上,能安裝成功。

哪位網友如果已經成功地重新打包此檔案,請分享經驗。

我的裝置android版本是4.2.1.

apktool生成的apk預設是不帶 META-INF目錄的,要用-c選項才包含。

META-INF目錄下的MANIFEST.MF檔案中包含了每個檔案的sha1碼,如果真像前文所述地校驗,簡單複製應該不行.

從下面網頁下載檢視sha1摘要的工具
https://support.microsoft.com/en-us/help/841290/availability-and-description-of-the-file-checksum-integrity-verifier-utility
但它得出的sha1程式碼是16進位制,而MANIFEST.MF中的是Base64編碼。按照文件提示,用以下命令列

D:\abc>fciv D:\abc\qpython3-app-release-1.0.0\assets\public3.mp3  -both -xml p3.xml
//
// File Checksum Integrity Verifier version 2.05.
//
Error loading XML document.
Create New XML database
----
<?xml version="1.0" encoding="UTF-8"?>

-<FCIV>


-<FILE_ENTRY>

<name>d:\abc\qpython3-app-release-1.0.0\assets\public3.mp3</name>

<MD5>x4wQ997IgAoijGlKn2DOAQ==</MD5>

<SHA1>lLzGYyqDYZ4OJ1kkOjP80zi66go=</SHA1>

</FILE_ENTRY>

</FCIV>

這與MANIFEST.MF中的記錄一致。

相關文章