Android 6/Marshmallow上的dex2oat失败-权限被拒绝-与即时运行无关

Android 6/Marshmallow上的dex2oat失败-权限被拒绝-与即时运行无关,android,android-6.0-marshmallow,dex,android-runtime,android-6.0.1-marshmallow,Android,Android 6.0 Marshmallow,Dex,Android Runtime,Android 6.0.1 Marshmallow,在我们的生产构建中(在CI服务器上完成,因此没有即时运行),用户 正在报告应用程序: 安装需要很长时间(>10分钟),可能永远无法完成 或 重新启动后,他们会看到安装了我们的应用程序的“优化应用程序1/1” 在这一点上,他们有几个bug报告,常见的线程似乎是dex2oat进程失败: dex2oat:/system/bin/dex2oat--compiler filter=speed--dex file=/data/app/**packagename**-1/base.apk--oat

在我们的生产构建中(在CI服务器上完成,因此没有即时运行),用户 正在报告应用程序:

  • 安装需要很长时间(>10分钟),可能永远无法完成

  • 重新启动后,他们会看到安装了我们的应用程序的“优化应用程序1/1”
在这一点上,他们有几个bug报告,常见的线程似乎是dex2oat进程失败:


dex2oat:/system/bin/dex2oat--compiler filter=speed--dex file=/data/app/**packagename**-1/base.apk--oat file=/data/dalvik cache/arm64/data@app@**包装名称**-1@base.apk@类.dex
E dex2oat:未能创建oat文件:/data/dalvik缓存/arm64/data@app@**包装名称**-1@base.apk@classes.dex:权限被拒绝
05-11 20:48:21.783 7316 7316 I dex2oat:dex2oat需要3.058ms(螺纹:8)
05-11 20:48:21.793 7293 7293 W艺术:执行失败(/system/bin/dex2oat--runtime arg-classpath--runtime arg--instruction set features=arm64--instruction set features=smp,a53--runtime arg-Xrelocate--boot image=/system/framework/boot.art--runtime arg-Xms64m--runtime arg Xmx512m--compiler filter=speed--指令集variant=generic--instruction set features=default dex file=/data/app/**packagename**-1/base.apk--oat文件=/data/dalvik cache/arm64/data@app@**包装名称**-1@base.apk@类。dex),因为非0退出状态

我们在多家制造商(三星、京瓷、黑莓)和手机上看到了这个问题。到目前为止,我收到的所有错误报告都是针对安卓6.0.X的

  • Gradle版本:Gradle-4.4
  • Gradle插件:“com.android.tools.build:Gradle:3.1.2”
  • 编译DK26版
  • buildToolsVersion“27.0.3”
  • 明斯克版本19
  • targetSdkVersion 26
  • 多索引版本1.0.3
我知道在Instant Run周围也有类似的症状,但我不相信这是真的。我在这里也看到了一些其他较老的问题,但只有与Instant Run相关的问题有答案,或者它们与插件/gradle/build工具的更旧版本有关

与我们开始获取这些报告之前的上一个版本相比,我认为唯一相关的是我将Multidex库从
1.0.2
升级到
1.0.3

当然,我已经完全无法在我的任何测试设备上,在任何操作系统版本上重现这个问题,包括工厂重置它们

有人有什么想法、建议甚至是尝试的东西吗?我很快就没有主意了

补充资料 在最终找到了一个明显存在此问题的设备后,还有一些其他事实:

  • 通过adb安装时也会出现问题
  • 本地编译的二进制文件会出现问题
  • 将二进制文件设置为
    可调试真值
    会导致安装从9:43变为不到20秒。即使我保持其他设置(如proguard和minification)处于打开状态,这也是真的

看起来是Gradle插件3.1.2导致了这个问题

我能够确认这是android gradle插件中的一个bug 版本3.1.2。通过恢复到3.0.1,我能够编译相同的 编码并立即成功地将其dex2oat。此问题 也出现在3.2.0-alpha15 gradle插件中


+1我们的应用程序也有同样的问题。我们仍然使用multidex 1.0.2、Gradle 4.7、Gradle Plugin 3.1.2、compile and targetSDK 27、minSDK 19、buildToolsVersion=android.buildToolsVersion。android 6上的Play Store/Services可能有问题。我们从非常旧(6个月以上)的应用程序版本收到了有关此问题的报告。