2017-02-02 4 views
4

Я работаю по разработке Android привилегированными приложений системы с eng сборки платформы ...Как продуктивно разрабатывать системные приложения на платформе Android Marshmallow?

В леденец я был в состоянии установить LOCAL_DEX_PREOPT := false затем использовать mm строить свои APK-, сделать adb remount и adb push АПК в системе раздел. Система обнаружит изменения и перестроит dex, и моя производительность будет высокой. Если приложение было persistent Мне просто нужно было дополнительно убить процесс.

Теперь я сталкиваюсь со всеми видами проблем с этим процессом, развиваясь на Зефире. Нажатие APK и попытке запуска дает:

02-01 20: 58: 26,302 E/dex2oat (3045): Не удалось создать овсяную файл: /данные/Dalvik-кэш/arm64/Система @ priv- приложение @ XYZ @ XYZ.apk @ classes.dex: отказано в

SELinux проблемы:

[1614,216323] Type = 1400 аудит (686361.299: 48): АВК: отказано {записи} для pid = 2640 comm = "oid.XYZ" name = "arm64" dev = "dm-0" ino = 360453 scontext = и: г: system_app: s0 tcontext = и: object_r: dalvikcache_data_file: s0 tclass = каталог разрешительный = 0

Я пробовал все виды хаки, чтобы обойти это ...

Конечно, я мог бы перестроить всю систему img и вспыхнуть, но это убивает производительность.

ответ

2

Я думаю, что я понял гораздо более простой вариант для изменения SELinux и app_main.cpp. После этих шагов позволяет мне обновить мою систему приложения быстро:

  1. Построить приложение с LOCAL_DEX_PREOPT := false поэтому файл декс остается в APK
  2. adb remount по крайней мере один раз
  3. adb rm -rf /system/priv-app/XYZ/oat
  4. adb push $OUT/system/priv-app/XYZ/XYZ.apk /system/priv-app/XYZ/
+0

Обратите внимание, что в Nougat нет каталога 'oat', поэтому вы можете пропустить этот шаг и развернуть так же, как Lollipop. – satur9nine

+0

Одна из проблем с вышеизложенным решением заключается в том, что изменения в AndroidManifest.xml не вступают в силу, если ОС не перезапущена с «остановкой оболочки adb» и «запуском оболочки adb» даже в Nougat. Хотелось бы узнать об обходном пути, который не требует ногами всей ОС. – satur9nine

Смежные вопросы