您的位置:首页 > 教育 > 培训 > 记录一个安装失败的问题

记录一个安装失败的问题

2024/10/6 12:34:26 来源:https://blog.csdn.net/yeshennet/article/details/141968600  浏览:    关键词:记录一个安装失败的问题

背景是我们打包出来是7z格式的压缩包,最近我在安装里面的包的时候,发现一直安装失败。报错提示这个:

adb install base.apk
$ Performing Push Install
$ base.apk: 1 file pushed, 0 skipped. 0.3 MB/s (11702337 bytes in 33.669s)
$	pkg: /data/local/tmp/base.apk
$ Failure [INSTALL_FAILED_INVALID_APK]

尝试 adb push base.apk /sdcard/download中,手动安装也是提示失败。

file base.apk
base.apk: Zip archive data, at least v0.0 to extract, compression method=deflate

我用jadx打开也是报错。

jadx.core.utils.exceptions.JadxRuntimeException: Failed to process zip file: /temp/base.apkat jadx.api.plugins.utils.ZipSecurity.visitZipEntries(ZipSecurity.java:148)at jadx.api.ResourcesLoader.defaultLoadFile(ResourcesLoader.java:159)at jadx.api.ResourcesLoader.loadFile(ResourcesLoader.java:154)at jadx.api.ResourcesLoader.load(ResourcesLoader.java:47)at jadx.api.JadxDecompiler.getResources(JadxDecompiler.java:433)at jadx.api.JadxDecompiler.load(JadxDecompiler.java:127)at jadx.gui.JadxWrapper.open(JadxWrapper.java:72)at jadx.gui.ui.MainWindow.lambda$loadFiles$0(MainWindow.java:520)at jadx.core.utils.tasks.TaskExecutor.wrapTask(TaskExecutor.java:166)at jadx.core.utils.tasks.TaskExecutor.runStages(TaskExecutor.java:142)at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)at java.base/java.lang.Thread.run(Thread.java:1570)
Caused by: java.util.zip.ZipException: zip END header not foundat java.base/java.util.zip.ZipFile$Source.findEND(ZipFile.java:1695)at java.base/java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1703)at java.base/java.util.zip.ZipFile$Source.<init>(ZipFile.java:1541)at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1504)at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:724)at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:251)at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:180)at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:194)at jadx.api.plugins.utils.ZipSecurity.visitZipEntries(ZipSecurity.java:130)... 12 common frames omitted

直到后面我用7z解压压缩包,而不是用mac系统自带的解压(Archive Utility),包才正常。

$ zipinfo ./app/build/channel/platform/base.apk
[./app/build/channel/platform/base.apk]End-of-central-directory signature not found.  Either this file is nota zipfile, or it constitutes one disk of a multi-part archive.  In thelatter case the central directory and zipfile comment will be found onthe last disk(s) of this archive.
zipinfo:  cannot find zipfile directory in one of ./app/build/channel/platform/base.apk or./app/build/channel/platform/base.zip, and cannot find ./app/build/channel/platform/base.apk.ZIP, period.
$ zipinfo ./out/app/build/channel/platform/base.apk
Archive:  ./out/app/build/channel/platform/base.apk
Zip file size: 11702331 bytes, number of entries: 1040
-rw-rw-rw-  0.0 unx       55 b- defN 81-Jan-01 01:01 META-INF/com/android/build/gradle/app-metadata.properties
-rw-rw-rw-  0.0 unx  6678548 b- defN 81-Jan-01 01:01 classes.dex
$ hexdump ok.apk > o.txt
$ hexdump fail.apk > f.txt
$ diff o.txt f.txt< 0b29030 3104 00f4 f400 b19b 0000 0000
---
> 0b22ec0 0000 0000 0000 0000 0000 0000 0000 0000
> *
> 0b29030 0000 0000 0000 0000 0000 0000

0b22ec0 0000 0000 0000 0000 0000 0000 0000 0000

看着就是Archive Utility解压7z的包,解压之后,0b22ec0 之后的数据出现了丢失,变成了*, 丢失的信息(zip END header)导致jadx解析失败,也导致 adb 安装失败。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com