Я работаю в пользовательской сборке AOSP, для которой я сделал наложение, которое меняет тему устройства по умолчанию. Я поместил эти наложения в:
device/overlay/framework/base/core/res/res
Теперь я хотел бы сделать другое наложение для той же сборки таким образом, чтобы изменение свойства изменило применяемое наложение.
Так, например, я установил
setprop persist.brand brand1
И я вижу оверлей1, затем:
setprop persist.brand brand2
и см. Наложение 2.
Я копался в RRO и смог изменить некоторые оверлеи с помощью пользовательских apks, но я понятия не имею, как связать это с системным свойством.
EDIT:
Я обнаружил, что могу добиться аналогичных результатов, компилируя rro apks, используя
include $(BUILD_RRO_PACKAGE)
в Android.mk.
Я заметил, что в build_rro_package.mk есть комментарий, который говорит
## Set LOCAL_RRO_THEME to the theme name if the package should apply only to
## a particular theme as set by ro.boot.vendor.overlay.theme system property.
Что я понимаю, так это то, что я могу сгруппировать много пакетов rro в одно имя LOCAL_RRO_THEME, а затем активировать или деактивировать их вместе, используя свойство ro.boot.vendor.overlay.theme. Если это правильно, то это именно то, что я искал
Проблема, с которой я сталкиваюсь сейчас, заключается в том, что когда я задаю LOCAL_RRO_THEME с именем, отличным от LOCAL_PACKAGE_NAME, наложение не будет отображаться, когда я перечислю их с:
cmd overlay list
Это не имеет особого смысла, но, возможно, я делаю что-то не так?