【问题标题】:Android: Application and Activity themes stop working after addition of AAR library to the projectAndroid:将 AAR 库添加到项目后,应用程序和活动主题停止工作
【发布时间】:2021-11-16 13:09:49
【问题描述】:

我在清单中为整个应用定义了一个默认主题:

<application
    android:name="com.my.app"
    android:allowBackup="false"
    android:theme="@style/AppTheme">

在我将新的 AAR 库添加到项目中之前,一切都按预期进行。在此之后,我的主题设置将被忽略,无论我是在 Application 标记中定义它,还是为每个单独的 Activity 定义它。

在我的应用程序中,res/values 路径下只有一个 styles.xml 实例(其中定义了 AppTheme)。另一方面,AAR 库在以下位置定义了相同的主题:res/values/values.xmlres/values-land/values-land.xmlres/values-sw600dp-v13/values-sw600dp-v13.xml

所以,我想我的问题是如何防止库模块中的主题覆盖我自己的主题?

【问题讨论】:

  • 作为黑客尝试更改主题名称并检查其是否覆盖。
  • @Manohar,这是一种解决方法。有趣的是,一旦我更改了主题的名称,构建失败并要求将tools:replace="android:theme" 添加到清单中。所以,它看起来像一个错误:当app的主题和lib的主题具有相同的名称时,清单合并无法区分它们。我想知道这种方法是否有有效的用例。无论如何,请发布您的解决方法作为答案。
  • 很高兴知道它有效,我将按照您为未来读者的建议发布答案。

标签: android android-theme


【解决方案1】:

AppTheme 是用于主题的通用名称,很可能库也使用相同的主题名称,更改主题名称应该可以解决问题。

您也可以在清单中添加tools:replace="android:theme"

【讨论】:

  • 澄清:只是将tools:replace="android:theme" 添加到清单中并不能解决我的问题。只有在我更改了主题名称之后,此设置才变得相关。这看起来像是构建工具链中的一个错误。
猜你喜欢
  • 1970-01-01
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多