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?