Android apk компилируется в среду выполнения АРТ и время работы dalvik

Google добавила новую версию АРТ с Android 4.4. Как настроить таргетинг на apk как на время выполнения АРТ, так и на время работы Dalvik?

Ответ 1

Это изменение не имеет последствий для разработчиков. Ваше приложение остается таким же, ничего не нужно делать. Просто убедитесь, что вы нацеливаете API 19, чтобы ваше приложение было доступно для пользователей KitKat. Они решат в своем телефоне, если они хотят использовать АРТ или Дальвик.

Ответ 2

Это старый вопрос, но очень важный. Я подтвердил сегодня, что все мои приложения ломаются с ART + Android-5 на планшетах Nexus-x. ART делает более строгие проверки JNI, поэтому, если ваше приложение использует java плюс собственный код, переход от Dalvik к ART может нарушить работу приложения. Для меня это была полная шоу-стоп. У меня 6 приложений в Google Store, и теперь все не работают на устройствах Nexus под управлением Android 5.x, но они работают правильно на всех устройствах серии 4.x.x(Kitkat). Это очень неприятно. Я прохожу через все вопросы и ответы ART/Dalvik на этом сайте. ART и Android-5.x - очень существенное изменение, поэтому здесь задан вопрос: "Как настроить таргетинг на apk как для Dalvik, так и для ART?" является ключевым и очень критическим вопросом. Время доказало, что ответы, предлагаемые "Нет разницы с разработчиками", явно неверны. Это, безусловно, в нашем случае.

Задокументированы две конкретные проблемы, и я цитирую "Проверка поведения приложения на Android Runtime (ART)":

1) "Проверка кода JNI для проблем сбора мусора У ART есть компактный сборщик мусора, который разрабатывается в Android Open Source Project (AOSP). Как только используется сборщик мусора, объекты могут перемещаться в памяти. Если вы используете код C/С++, не выполняйте операции, которые несовместимы с уплотнением GC. Мы улучшили CheckJNI, чтобы определить некоторые потенциальные проблемы (как описано в JNI Local Reference Changes в ICS) ". Другими словами, новая модель управления памятью ART может нарушить существующий (и действующий) собственный код.

2) "Обработка ошибок ART JNI бросает ошибки в ряде случаев, когда Dalvik did not. ".

Ограниченное объяснение некоторых проблем, которые могут вызвать ошибки, вызванные Android 5.x ART, представлено в: http://developer.android.com/guide/practices/verifying-apps-art.html#JNI_Issues

Решение для прямой совместимости, которое в настоящее время внедряется среди пользователей устройств Android, работающих под управлением ART и 5.x, и сталкивается с неработоспособными приложениями, является понижением до Android 4.4.4, путем разблокировки загрузчика, очистки памяти устройства и установив системный образ "Hammerhead", в случае тех, кто работает с таблетками серии Nexus. Для планшетов Samsung учебник доступен по адресу: http://forums.androidcentral.com/samsung-galaxy-s5/489071-tutorial-downgrade-samsung-galaxy-s5-5-0-4-4-kitkat.html

Ответ 3

dalvik или ART - это только время выполнения в Android. Как разработчик приложения, вам не нужно заботиться об этих различиях. Все, что вам нужно, это уровень API вашего приложения, который описывает зависимость версии ОС Android.

И в Android 4.4 АРТ - это только разработка НЕ по умолчанию, даже если примечание к выпуску, описывающее ART, сделает приложение использует меньше памяти и быстро запускается. Если вы хотите найти другое, вы можете дождаться следующей версии Android. В open source я обнаружил, что ART установил выбор времени выполнения по умолчанию.

Ответ 4

Для большинства приложений ART будет работать нормально.

Это, однако, не на 100% совместимо, так как работа над Dalvik может не работать на ART

Подробнее см. .