无法打开 dex 文件,无法识别的版本号

Failed to open dex file, unrecognized version number

我已经在我的电视盒上将一个 apk 推送到 system/priv-app,但是当我尝试卸载应用程序时出现此错误:

dex2oat : Failed to create oat file: /data/dalvik-cache/arm/system@priv-app@CanvasPackageInstaller@CanvasPackageInstaller.apk@classes.dex: Permission denied
dex2oat : dex2oat took 803.750us (threads: 4)
art     : Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --instruction-set=arm --instruction-set-features=smp,-div,-atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=cortex-a9 --instruction-set-features=default --dex-file=/system/priv-app/CanvasPackageInstaller/CanvasPackageInstaller.apk --oat-file=/data/dalvik-cache/arm/system@priv-app@CanvasPackageInstaller@CanvasPackageInstaller.apk@classes.dex) because non-0 exit status
art     : Failed to open dex file '/system/priv-app/CanvasPackageInstaller/CanvasPackageInstaller.apk' from memory: Unrecognized version number in /system/priv-app/CanvasPackageInstaller/CanvasPackageInstaller.apk: 0 3 7 

我尝试清理 dalvik 缓存但没有成功。这是什么意思?

037版本的dex格式是在N时间段引入的。 Android 版本早于 N 的设备将无法读取它。

在我的案例中,问题是通过启用 Instant 运行 解决的。 每次启动应用程序时都会出现提示(Install Android 7 platform for instant run/Continue without instant 运行)。当我按下 SKIP 时,某些 apk 出现相同的异常(dex 版本... bla-bla)。安装适当的平台消除异常。

对我来说,在将使用 Android 11 设备构建的调试 apk 安装到 Android 8 设备时,我遇到了类似的错误。

两种解决方法:

  1. 连接目标设备并在 Android Studio 中重建应用程序。
  2. 从命令行清理和构建,然后将输出的 apk 安装到目标设备。

发布 apk 可能不会发生这种情况。