【问题标题】:java.lang.IllegalArgumentException: Error: Failed to parse APK file:java.lang.IllegalArgumentException:错误:无法解析 APK 文件:
【发布时间】:2018-12-07 02:40:33
【问题描述】:

我有搜索 stockoverflow 和谷歌没有运气。我最近将我的应用程序迁移到 androidx,经过大量努力,我能够修复所有构建失败的问题。但是现在在模拟器或设备上安装应用程序时出现以下错误。任何帮助将不胜感激。

我尝试了以下方法: 使缓存无效/重新启动 干净的构建和重建项目 从设备上卸载的应用程序 重启我的电脑

Exception occurred while executing:
java.lang.IllegalArgumentException: Error: Failed to parse APK file: /data/local/tmp/...
    at com.android.server.pm.PackageManagerShellCommand.setParamsSize(PackageManagerShellCommand.java:338)
    at com.android.server.pm.PackageManagerShellCommand.runInstall(PackageManagerShellCommand.java:906)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:158)
    at android.os.ShellCommand.exec(ShellCommand.java:103)
    at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:21328)
    at android.os.Binder.shellCommand(Binder.java:634)
    at android.os.Binder.onTransact(Binder.java:532)
    at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2821)
    at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3856)
    at android.os.Binder.execTransact(Binder.java:731)
Caused by: android.content.pm.PackageParser$PackageParserException: Failed to parse /data/local/tmp/...
    at android.content.pm.PackageParser.parseApkLiteInner(PackageParser.java:1590)
    at android.content.pm.PackageParser.parseApkLite(PackageParser.java:1575)
    at com.android.server.pm.PackageManagerShellCommand.setParamsSize(PackageManagerShellCommand.java:331)
    ... 9 more
$ adb shell pm uninstall ...
Unknown failure (at android.os.Binder.execTransact(Binder.java:731))
Error while Installing APK

【问题讨论】:

  • logcat 的输出可能会在堆栈跟踪之前给出一些问题的指示。
  • 嗨 Pierre,感谢您的回复,这是发生错误时的一些 logcat 输出 2018-12-07 08:10:16.541 2049-5709/system_process W/ResourceType: Bad string block :最后一个字符串不是以 0 结尾的 2018-12-07 08:10:16.541 2049-5709/system_process E/system_server: RES_STRING_POOL_TYPE 损坏。 2018-12-07 08:10:16.541 2049-5709/system_process E/system_server: 无法在 APK '/data/local/tmp/...中加载 'resources.arsc' ...
  • @Pierre 这些是 logcat 2018-12-07 09:14:03.134 1109-9002/ 中的错误? E/system_server:RES_STRING_POOL_TYPE 损坏。 2018-12-07 09:14:03.134 1109-9002/? E/system_server: 无法在 APK '/data/local/tmp/.... 中加载 'resources.arsc'。 --------- 系统开始 2018-12-07 09:14:06.288 31289- 31289/? E/ogle.android.g:由于进程无法加载 jdwp 代理,因此未启动调试器。 2018-12-07 09:14:06.732 2900-31340/? E/ndroid.systemu: 无效 ID 0x00000000...
  • 看起来您的构建系统在构建有效资源表时遇到了问题。你在使用 Gradle 吗?如果有,是哪个版本?如果没有,您使用什么来构建 APK?
  • @Pierre,非常感谢 Pierre,我非常感谢您的帮助,因为这个问题对我来说真的很难弄清楚。很好的问题,我正在使用 Gradle,我实际上可以使用 Gradle 版本 3.1.4(构建应用程序时的原始版本)安装它,但是当我升级到 Gradle 3.2.1 时,它正在下降。到目前为止,我尝试解决此问题的步骤:删除了 user/.graddle/caches 中的 Gradle 缓存并卸载,然后重新安装了 android studio,但没有成功。我也未从 androidx 迁移,它在 gradle 3.1.4 中工作,但在 gradle 3.2.1 中出现此错误

标签: android migration apk androidx


【解决方案1】:

从android文件夹中删除之前的app-release.apk文件:

\app\build\outputs\apk\release

然后清除模拟器中的所有数据。最后,重建应用程序。

【讨论】:

    【解决方案2】:

    清理 -> 重建 -> 并在生成 apk 文件时尝试检查 v1 和 v2

    【讨论】:

    • 感谢 Uma 的回复,我已经尝试过了,还尝试构建一个签名的 apk 并通过 adb 安装它,但没有成功。
    • 也请注意这一点,当我尝试通过 adb 安装时,出现以下错误失败 [INSTALL_PARSE_FAILED_NOT_APK: Failed to parse /data/app/vmdl1116562896.tmp/base.apk]
    【解决方案3】:

    您应该删除手机上的缓存。 例如:

    1- 在你的电脑上打开你的 windows 终端

    2 - 输入命令>adb shell 你应该在你的手机上现场

    3 - 使用>cd data/local/tmp/appium_cache进入 tmp/appium_cache/ 文件夹

    4 - 编写命令>ls 以查看该文件夹内的所有元素

    5 - 使用命令 >rm filename 删除所有元素

    希望能帮到你

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      • 2013-12-09
      • 1970-01-01
      • 2014-10-24
      相关资源
      最近更新 更多