3

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

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

或者

  • 重新启动后,他们会看到安装了我们的应用程序的“优化应用程序 1 of 1”。

在这一点上,有几个错误报告,常见的线程似乎是 dex2oat 进程失败:

dex2oat : /system/bin/dex2oat --compiler-filter=speed --dex-file=/data/app/**packagename**-1/base.apk --oat-file=/data/dalvik-cache/arm64/data@app@**packagename**-1@base.apk@classes.dex E dex2oat : Failed to create oat file: /data/dalvik-cache/arm64/data@app@**packagename**-1@base.apk@classes.dex: Permission denied 05-11 20:48:21.783 7316 7316 I dex2oat : dex2oat took 3.058ms (threads: 8) 05-11 20:48:21.793 7293 7293 W art : Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg --instruction-set=arm64 --instruction-set-features=smp,a53 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=speed --instruction-set-variant=generic --instruction-set-features=default --dex-file=/data/app/**packagename**-1/base.apk --oat-file=/data/dalvik-cache/arm64/data@app@**packagename**-1@base.apk@classes.dex) because non-0 exit status

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

  • Gradle 版本:gradle-4.4
  • Gradle 插件:'com.android.tools.build:gradle:3.1.2'
  • compileSdkVersion 26
  • buildToolsVersion '27.0.3'
  • minSdkVersion 19
  • targetSdkVersion 26
  • 多索引版本 1.0.3

我知道Instant Run 周围有几个具有类似症状的 错误,但我不相信就是这样。我还在这里看到了其他一些较旧的问题,但只有与 Instant Run 相关的问题有任何答案,或者它们与插件/gradle/build 工具的旧版本有关。

比较我们开始获取这些报告之前的最后一个版本到现在,我认为唯一可能相关的是我将 Multidex 库1.0.21.0.3.

当然,我完全无法在任何操作系统版本的任何测试设备上重现该问题,包括恢复出厂设置。

有人有什么想法、建议甚至可以尝试的事情吗?我很快就没有想法了。

附加信息

终于找到了这个问题很明显的设备之一,还有一些额外的事实:

  • 安装时也会出现adb问题
  • 本地编译的二进制文件会出现问题
  • 将二进制文件设置为debuggable true会导致安装时间从 9:43 缩短到不到 20 秒。即使我打开其他设置(例如 proguard 和 minification)也是如此。
4

1 回答 1

0

看起来 Gradle Plugin 3.1.2 是导致问题的原因

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

于 2018-05-30T10:02:44.887 回答