Вручную переключиться с ART на Dalvik

21

Я хотел опробовать новую среду выполнения ART, но не понял, что мой пользовательский ROM не поддерживает его. Так что теперь я получаю повторяющиеся сообщения Force Closed после загрузки и не могу войти в меню настроек, чтобы вернуться к Dalvik. Поэтому, прежде чем я все вытру и провожу часами, настраивая свой телефон с нуля, есть ли способ вручную переключиться обратно на Dalvik из меню восстановления? Я думаю, что где-то должен быть флаг, который инструктирует Android делать «перекомпиляцию» после перезагрузки.

Через меню восстановления у меня есть полный root-доступ через оболочку adb и я могу смонтировать все файловые системы.

Дэвид Б.
источник
У меня была проблема с ART на стоковой 4.4.4 ROM. Через несколько дней после переключения с dalvik я застрял в цикле загрузки с adb logcat, показывающим множество ошибок при сбое, включая `art / runtime / runtime.cc: 203] Отключение во время выполнения ... Возвращаясь к dalvik, мне пришлось перезагрузиться в восстановление и используйте команду echo, чтобы переключиться обратно на dalvik. Это
решило

Ответы:

18

Я только что сделал это!

/data/property/persist.sys.dalvik.vm.libтекстовый файл, содержащий одно из двух значений: «libart.so» или «libdvm.so». Вы можете перейти с ART на Dalvik, просто отредактировав этот файл.

Пример: adb shell 'echo libdvm.so> /data/property/persist.sys.dalvik.vm.lib'

mysteriousllama
источник
5
FWIW, выполнение «setprop persist.sys.dalvik.vm.lib libdvm.so» будет иметь тот же эффект - свойства «persist» сохраняются, записывая их в файл.
Fadden
Когда это случилось со мной, у меня не было доступа к оболочке adb во время работы Android. Однако я смог перезагрузиться в ClockworkMod Recovery, очистить раздел кеша и кеш dalvik, чтобы освободить место на флеш-накопителе, смонтировать раздел / data и затем (наконец) использовать оболочку adb, как описано в этом ответе. Уф!
ʇs atoɈ
Я пробовал это на Android 5.0.1 (Omega V28) на моем Galaxy S4 GT-I9500. Файл был назван /data/property/persist.sys.dalvik.vm.lib.2в моем случае. После перезагрузки он как-то вернулся к «libart.so». Любая идея, почему он это делает и как это изменить навсегда?
EM0
Это происходило даже тогда, когда я менял содержимое файла через оболочку adb в рекавери. Так что это не перезаписывается при выключении, а при загрузке, кажется.
EM0