AAPT错误:找不到android:forceDarkAllowed属性。

21

我尝试使用安卓暗黑主题。我安装了 Android Studio 3.5 预览版。

compileSdkVersion 28 targetSdkVersion 28

但是仍然遇到这个错误。是暗黑主题的 bug 还是我做错了什么?

build.gradle{
dependencies {
    // ...
    implementation 'com.google.android.material:material:1.1.0-alpha06'
    // ...
  }}

样式.xml

<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight">
    <item name="android:forceDarkAllowed">true</item>
</style>

项目链接

https://github.com/googlesamples/android-DarkTheme


你看到这个问题了吗?https://github.com/googlesamples/android-DarkTheme/issues/2 - Ruben Aalders
5个回答

20

您需要将应用程序 build.gradle 文件中的 compiledSdkVersion 升级至 29:

android {
    compileSdkVersion 29
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 29
        ...
}

那么你就可以开始了!


如果我不能/不想使用版本29,而是保留在28上怎么办? - tany4
1
那么您不应使用android:forceDarkAllowed,因为在29以下,暗模式是未知的功能。当您的应用程序安装在29及以上版本时,它的行为如何?请自行检查。 - Marian Paździoch

8

我正在寻找答案,正如@Ruben指出的那样)

compiledSdkVersion 28更改为compileSdkVersion'android-Q'应该可以解决问题。android:forceDarkAllowed属性仅在Android Q中添加。

与此问题无关,但似乎您还需要更新'androidx.appcompat:appcompat:1.1.0-alpha04''androidx.appcompat:appcompat:1.1.0-alpha05',否则主题切换无法正常工作。


是的,这是正确的 - 感谢您指出。如果您不更新到appcompat版本,它将无法立即切换主题。您必须重新启动应用程序才能进行切换。 - shagberg

3

我在Android Studio的建议中找到了答案。 为了澄清,android:forceDarkAllowed标签只在API级别29+中才能找到。 因此,我们应该创建一个名为values-v29的文件夹,然后按照下面的方式在其中编写标记

在文件values/____.xml中。

<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight">
    //removed from here
</style>

在文件 values-v29/____.xml 中

<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight">
    <item name="android:forceDarkAllowed">true</item>
</style>

2
我猜这个答案太新了,无法吸引那些搜索这个问题的人(问题已经两年了),但是这正是我需要的解决方案。我需要与API级别26兼容,并且仅仅为了修复小米手机上的问题而将其增加到29对我来说是不可行的。对于其他想要应用它的人,我的情况下两个文件的名称都是“styles.xml”,在Android 8和混乱的小米手机中都能完美运行。 - Igor Rodriguez

2

当我尝试运行之前未经修改的基于Angular的NativeScript“Hello World”Android应用程序时,遇到了相同的错误消息。(在命令提示符中:tns create,tns run android --bundle)

对我来说,解决方案是: 1. 在Android Studio中打开SDK Manager 2. 安装Android 10.0(Q)(API级别:29)SDK平台。

完成这些步骤后,我可以开始运行我的应用程序,没有任何错误!


1
我使用相同的设置,但在nativescript 6.2中仍然出现错误。 - Aniruddha Das
我已经完成了以上所有步骤,但仍然出现这个错误。肯定不可能这么难。我还需要注意哪些其他陷阱? - iKnowNothing

-6

请查看Nativescript文档

请删除以下行:

<item name="android:forceDarkAllowed">true</item>

从文件中

<project>/app/App_Recoures/Android/src/main/res/values/styles.xml

这是一个关于本地开发的问题,人们放置那行代码是有意图的。 - gromyk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接