Android: Темы приложений и действий перестают работать после добавления библиотеки AAR в проект

#android #android-theme

Вопрос:

Я определил глухую тему для всего приложения в манифесте:

 lt;application  android:name="com.my.app"  android:allowBackup="false"  android:theme="@style/AppTheme"gt;  

Все работало так, как ожидалось, пока я не добавил в проект новую библиотеку AAR. После этого момента мои настройки темы игнорируются, независимо от того, определил ли я их в Application теге или для каждого отдельного Activity пользователя .

Внутри моего приложения у меня есть только один экземпляр styles.xml (где определена тема приложения) в разделе res/values путь. Библиотека AAR, с другой стороны, имеет ту же тему, определенную в следующих местах: res/values/values.xml , res/values-land/values-land.xml , res/values-sw600dp-v13/values-sw600dp-v13.xml .

Итак, я предполагаю, что мой вопрос заключается в том, как я могу предотвратить, чтобы тема из библиотечного модуля переопределяла мою собственную тему?

Комментарии:

1. в качестве взлома попробуйте изменить название темы и проверьте, является ли она переопределяющей .

2. @Manohar, это сработало как обходной путь. Интересно, что как только я изменил название своей темы, сборка завершилась неудачно и меня попросили добавить tools:replace="android:theme" в манифест. Итак, это похоже на ошибку: когда тема приложения и тема библиотеки имеют одинаковые имена, слияние манифеста не может различить их. Интересно, существует ли допустимый вариант использования этого подхода. В любом случае, пожалуйста, опубликуйте свой обходной путь в качестве ответа.

3. Приятно знать , что это сработало, я опубликую ответ, как вы предложили, для будущих читателей .

Ответ №1:

AppTheme-это общее имя , используемое для темы, скорее всего, библиотека также использует то же имя темы, изменение имени вашей темы должно решить проблему .

В качестве альтернативы вы также можете добавить tools:replace="android:theme" в манифест .

Комментарии:

1. Уточнение: простое добавление tools:replace="android:theme" в манифест не решило мою проблему. Только после того, как я изменил название своей темы, эта настройка стала актуальной. Это похоже на ошибку в цепочке инструментов сборки.