在我们的生产构建中(在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@**packagename**[email protected]@classes.dexE dex2oat : Failed to create oat file: /data/dalvik-cache/arm64/data@app@**packagename**[email protected]@classes.dex: Permission denied05-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**[email protected]@classes.dex) because non-0 exit status
我们在多个制造商(三星、京瓷、黑莓)和手机上都看到了这个问题。到目前为止,我所有的bug报告都是针对android 6.0.x的
Gradle版本:Gradle-4.4
gradle插件:com.android.tools.build:gradle:3.1.2'
编译DK版本26
buildtoolsversion'27.0.3'版本
明斯克版本19
目标版本26
多索引版本1.0.3
我知道有类似的症状,但我不相信这是真的。我在这里也看到了一些其他的老问题,但是只有与即时运行相关的问题有任何答案,或者它们使用的是插件/gradle/build工具的老版本。
与我们在开始获取这些报告之前的上一个版本相比,我认为唯一相关的是我将multidex库从1.0.2
升级到1.0.3
。
当然,我已经完全无法在我的任何测试设备上重现这个问题,在任何操作系统版本上,包括在工厂重置它们。
有人有什么想法、建议甚至事情要尝试吗?我很快就没主意了。
附加信息
在最终掌握了其中一个明显存在此问题的设备之后,还有一些额外的事实:
安装viaadb
时也会出现问题
本地编译的二进制文件出现问题
将二进制文件设置为debuggable true
将导致安装从9:43变为小于20秒。这是真的,即使我离开其他设置,如前进和缩小打开。
最佳答案
看起来Gradle插件3.1.2导致了这个问题
https://issuetracker.google.com/issues/79731127
https://issuetracker.google.com/issues/79962500
我可以确认这是android gradle插件中的一个bug
版本3.1.2。通过还原到3.0.1,我可以编译相同的
立即成功地编码并使其dex2oat。这个问题是
也出现在3.2.0-alpha15梯度插件中。