我在 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
----
-
-
d:\abc\qpython3-app-release-1.0.0\assets\public3.mp3
x4wQ997IgAoijGlKn2DOAQ==
lLzGYyqDYZ4OJ1kkOjP80zi66go=
这与MANIFEST.MF中的记录一致。