Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: Failed to parse /data/app/vmdl1686600827.tmp/base.apk: Corrupt XML binary file]

When I upgraded Android Studio 4 and android gradle plugin 4.0.0, I encountered with a weird issue. My APK is not deployed to any device or emulator. Let me explain what I find related to problem.

1- When I try run the app by clicking Run icon on Android Studio, build is completed successfully. Then, nothing happens.

2- When I tried to deploy built APK with adb install. It shows the following error.

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]

I also checked adb logcat in another terminal session. I found this stack trace in regards to parsing apk. I think that it will be helpful for finding a solution.

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)

When I analyze the built APK with APK analyzer, I see that versionName is unknown and merged manifest file is broken and missing.

I guess something is wrong while merging manifest but I could not understand what the exact problem is. Do you have any ideas?

like image 623
sembozdemir Avatar asked Feb 04 '26 19:02

sembozdemir


1 Answers

I figured it out somehow. I upgraded 3rd party dependency versions, then problem is fixed. Especially, upgrading from com.admost.sdk:adcolony:4.1.3.a16 to com.admost.sdk:adcolony:4.1.4.a18 fixed my problem. I guess it was not compatible with Gradle plugin 4.0.0. I suggest you check your 3rd party dependencies, too.

In order to find which dependency causes problem, review your merged manifest by analyzing built APK.

like image 185
sembozdemir Avatar answered Feb 07 '26 09:02

sembozdemir