失败 [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: 无法解析 /data/app/vmdl1686600827.tmp/base.apk: 损坏的 XML 二
Posted
技术标签:
【中文标题】失败 [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: 无法解析 /data/app/vmdl1686600827.tmp/base.apk: 损坏的 XML 二进制文件]【英文标题】:Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: Failed to parse /data/app/vmdl1686600827.tmp/base.apk: Corrupt XML binary file] 【发布时间】:2020-10-22 04:43:42 【问题描述】:当我升级 android Studio 4 和 android gradle 插件 4.0.0 时,我遇到了一个奇怪的问题。我的 APK 未部署到任何设备或模拟器。让我解释一下我发现的与问题相关的内容。
1- 当我尝试通过单击 Android Studio 上的运行图标来运行应用程序时,构建已成功完成。然后,什么都没有发生。
2- 当我尝试使用 adb install
部署构建的 APK 时。它显示以下错误。
adb: failed to install app/build/outputs/apk/debug/app-x86-debug.apk: Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: Failed to parse /data/app/vmdl1686600827.tmp/base.apk: Corrupt XML binary file]
我还在另一个终端会话中检查了adb logcat
。我在解析 apk 时发现了这个堆栈跟踪。我认为这将有助于找到解决方案。
07-01 19:40:16.215 4454 7052 W ResourceType: Bad XML block: header size 28024 or total size 1702240364 is larger than data size 540
07-01 19:40:16.216 4454 7052 W PackageParser: Failed to parse /data/app/vmdl1686600827.tmp/base.apk
07-01 19:40:16.216 4454 7052 W PackageParser: java.io.FileNotFoundException: Corrupt XML binary file
07-01 19:40:16.216 4454 7052 W PackageParser: at android.content.res.ApkAssets.nativeOpenXml(Native Method)
07-01 19:40:16.216 4454 7052 W PackageParser: at android.content.res.ApkAssets.openXml(ApkAssets.java:152)
07-01 19:40:16.216 4454 7052 W PackageParser: at android.content.pm.PackageParser.parseApkLiteInner(PackageParser.java:1594)
07-01 19:40:16.216 4454 7052 W PackageParser: at android.content.pm.PackageParser.parseApkLite(PackageParser.java:1561)
07-01 19:40:16.216 4454 7052 W PackageParser: at com.android.server.pm.PackageInstallerSession.validateInstallLocked(PackageInstallerSession.java:1116)
07-01 19:40:16.216 4454 7052 W PackageParser: at com.android.server.pm.PackageInstallerSession.sealAndValidateLocked(PackageInstallerSession.java:865)
07-01 19:40:16.216 4454 7052 W PackageParser: at com.android.server.pm.PackageInstallerSession.commit(PackageInstallerSession.java:809)
07-01 19:40:16.216 4454 7052 W PackageParser: at android.content.pm.PackageInstaller$Session.commit(PackageInstaller.java:969)
07-01 19:40:16.216 4454 7052 W PackageParser: at com.android.server.pm.PackageManagerShellCommand.doCommitSession(PackageManagerShellCommand.java:2498)
07-01 19:40:16.216 4454 7052 W PackageParser: at com.android.server.pm.PackageManagerShellCommand.runInstall(PackageManagerShellCommand.java:919)
07-01 19:40:16.216 4454 7052 W PackageParser: at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:158)
07-01 19:40:16.216 4454 7052 W PackageParser: at android.os.ShellCommand.exec(ShellCommand.java:103)
07-01 19:40:16.216 4454 7052 W PackageParser: at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:21328)
07-01 19:40:16.216 4454 7052 W PackageParser: at android.os.Binder.shellCommand(Binder.java:634)
07-01 19:40:16.216 4454 7052 W PackageParser: at android.os.Binder.onTransact(Binder.java:532)
07-01 19:40:16.216 4454 7052 W PackageParser: at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2821)
07-01 19:40:16.216 4454 7052 W PackageParser: at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3856)
07-01 19:40:16.216 4454 7052 W PackageParser: at android.os.Binder.execTransact(Binder.java:731)
当我使用 APK 分析器分析构建的 APK 时,我发现 versionName 未知,并且合并的清单文件已损坏和丢失。
我想在合并清单时出了点问题,但我不明白确切的问题是什么。你有什么想法吗?
【问题讨论】:
***.com/a/8766166/3001746 【参考方案1】:我想通了。我升级了 3rd 方依赖版本,然后问题就解决了。特别是,从com.admost.sdk:adcolony:4.1.3.a16
升级到com.admost.sdk:adcolony:4.1.4.a18
解决了我的问题。我猜它与 Gradle 插件 4.0.0 不兼容。我建议你也检查你的 3rd 方依赖项。
为了找出导致问题的依赖项,请通过分析构建的 APK 来查看您的合并清单。
【讨论】:
很高兴您解决了问题!我的合并清单看起来不错,我猜我下一步将在 android studio 中逐个文件分析 apks 文件..以上是关于失败 [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: 无法解析 /data/app/vmdl1686600827.tmp/base.apk: 损坏的 XML 二的主要内容,如果未能解决你的问题,请参考以下文章
验证失败:video_data.0._id:在路径 \"_ 处的值 \"\"(类型字符串)转换为 ObjectId 失败