Почему ART недоступен на Nexus 7 (2012 г.) или Nexus 10 под управлением Android 4.4?

Я только что обновил свой Nexus 7 до Android 4.4 KitKat и с нетерпением ждал возможности протестировать ART, но этот вариант недоступен. Мне сказали, что в Nexus 10 также нет этой опции, но я не могу найти никакой информации о том, почему это так.

У кого-нибудь есть чем поделиться? Конечно, для этой платформы им понадобится компилятор AOT, но насколько велика разница между Nexus 7 и Nexus 4? Они оба ARMv7, хотя Nexus 4 основан на A5, а Nexus 7 — на базе A9 (согласно моим исследованиям). Почему это имеет значение?

(Отказ от ответственности: чистое предположение) Это может иметь какое-то отношение к тому факту, что процессор Nexus 7 2012 года — Tegra, а Nexus 10 — Exynos. Возможно, Nvidia и Samsung как-то связаны с этим, но я понятия не имею, будет ли это техническим или политическим моментом.
Это, однако, довольно странно, так как на пользовательских сборках ROM ART хорошо работает на Nexus 10.
Я публикую это с LG Optimus 4X HD с Cyanogenmod 11 (Kitkat). Я использую ART без проблем, и в этом телефоне установлен чип Tegra.

Ответы (5)

Я только что отправил отчет об ошибке в систему отслеживания проблем Android. Возможно, мы получим отзыв от разработчиков: https://code.google.com/p/android/issues/detail?id=62375 .

Я не думаю, что Android Open Source Bug Tracker является подходящим местом для отправки такого «запроса функции». Это то, что Google должен организовать и не имеет ничего общего с AOSP (и его системой отслеживания ошибок).
Не могли бы вы предложить лучшее место для такого запроса? На самом деле это не запрос функции, а потенциальный отчет об ошибке, если ART был пропущен по ошибке.
AFAIK нет лучшего места. У Google нет общедоступных средств отслеживания ошибок для их коммерческих продуктов. Даже если вы считаете это сообщением об ошибке, это будет сообщение об ошибке коммерческого продукта Google, а не AOSP.
Я так понимаю, что это баг коммерческого дистрибутива. Но я думаю, что это место подходит для такого вопроса, так как лучшего места не найти, и большинство разработчиков Android AOSP работают на Google.
Потому что я наткнулся на это: идеальное место для таких запросов, вероятно, официальный форум Nexus на форумах продуктов Google .

Похоже, что в текущем обновлении OTA до версии 4.4 отсутствует переключатель среды выполнения для версии Nexus 7 2012 года.

Спасибо, но это я уже знаю :) Было более любопытно, если кто-то наткнулся на объяснение, почему это так.
Это немного странно и типично для Google и OEM-производителей, когда информации не хватает. Лучшее предположение — постепенное развертывание из-за проблем с ним. Многие приложения не обновлены для ART (например, whatsapp вообще не работает под ним). Kitkat уже фрагментируется... Мне действительно интересно, почему я ожидал чего-то другого на этот раз. Если я узнаю что-нибудь позже от моих приятелей в Google, я дам вам знать.

Судя по всему, ART доступен только для устройств на базе Snapdragon. Я могу переключить среду выполнения на N4, N5 и новый N7, которые основаны на Snapdragon, но не на N7 первого поколения (Tegra 3) и N10 (Exynos). Такое ограничение допустимо (потому что оно может сломать систему), если разработчики недостаточно протестировали его на устройствах, отличных от Snapdragon.

И все мы знаем, что ART все еще экспериментальный и не готов к производству. Поэтому «фрагментация» здесь не применяется.

Тем не менее, у ромов на основе AOSP есть эта опция, и, похоже, она работает для них. так...

Прежде всего, все будет зависеть от того, чем вы оперируете. Если вы используете OTA-обновление (стандартное ПЗУ), оно может быть включено, а может и не быть (о чем я не могу вам сказать, включено оно или нет, поскольку я никогда не использовал стандартное ПЗУ), но если оно включен, это будет в меню параметров разработчика. Пользовательские ПЗУ, такие как тот, который я использую, включают возможность переключения на ART на том же устройстве, о котором вы спрашиваете (в частности, на Grouper или Nexus 7 2012 года), но это не означает, что все пользовательские ПЗУ будут включить функцию. Все зависит от того, что включил в него разработчик ПЗУ.

Обновление OTA от Google может не включать эту функцию, поскольку в настоящее время она все еще находится в стадии разработки. Если это еще не предусмотрено разработчиком, наберитесь терпения, подождите некоторое время, пока они реализуют более универсальное использование ARM, а затем переключитесь. Если вы не знаете, как получить доступ к меню параметров разработчика, то, возможно, ваша база знаний об Android должна быть немного устарела, прежде чем спешить с вопросом «почему это не включено», когда это вполне могло бы быть.

Из AOSP Issue Tracker #62375 , который был опубликован Максом Романовским , он работает как задумано из-за ограничения места в /systemразделе:

Пост №19

Я считаю, что это WAI (изд. Работает по назначению) из-за ограничений флэш-памяти, но я хочу подтвердить.

Пост №87

В соответствии с пунктом 19 в разделе для Nexus 7 (2012 г.) и Nexus 10 были ограничения по пространству /system. В сборках AOSP больше места, поскольку они включают только приложения AOSP. Кроме того, включение ART вместе с Dalvik в качестве опции разработчика в 4.4 требовало не удалять .dexфайлы из системных файлов JAR и APK, что добавляло дополнительное давление помимо простого добавления libart.soсвязанных файлов.

Однако Nexus 7 (2012 г.) и Nexus 10 можно обновить до Android 5.x Lollipop, который работает исключительно на ART: