В нашей производственной сборке (выполняется на CI-сервере, поэтому не требуется Instant Run), пользователи
сообщают, что приложение либо:
- занимает много времени (> 10 минут) для установки, возможно, никогда не завершится
или
- после перезагрузки они видят «Оптимизация приложений 1 из 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
Эта проблема наблюдается у нескольких производителей (Samsung, Kyocera, Blackberry) и телефонов. Пока что все сообщения об ошибках, которые у меня есть, относятся к 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
- Multidex версия 1.0.3
Мне известно о нескольких ошибках с похожими симптомами при Мгновенном запуске, но я не верю, что это так. Я также видел несколько других, более старых вопросов здесь, но только ответы, связанные с Instant Run, имеют какие-либо ответы, или они имеют более старые версии инструментов plugins / gradle / build.
Сравнивая последнюю версию, которая была у нас до того, как мы начали получать эти отчеты, единственное, что я думаю, может иметь значение, это то, что я обновил библиотеку Multidex с 1.0.2
до 1.0.3
.
Конечно, мне не удалось воспроизвести проблему ни на одном из моих тестовых устройств, в любой версии ОС, включая их сброс до заводских настроек.
У кого-нибудь есть мысли, предложения или даже вещи, которые можно попробовать? У меня быстро заканчиваются идеи.
Дополнительная информация
Наконец-то взявшись за одно из устройств, где эта проблема очевидна, некоторые дополнительные факты:
- Проблема также возникает при установке через
adb
- Проблема возникает с локально скомпилированным двоичным кодом
- Если для двоичного файла установлено значение
debuggable true
, установка будет выполняться с 9:43 до менее 20 секунд. Это верно, даже если я оставлю другие настройки, такие как proguard и minification, включенными.