AAPT编译错误: 找不到 'android:attr/windowSplashScreenBackground' 样式属性

4

我遇到了同样的错误,使用的是Android Studio Canary。

在Gradle 4.2.1和最新版本的Gradle 7.1.0-alpha09中都返回相同的错误。(即下面的错误日志)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
ERROR:/home/iuri/QonteoApps/biometricmax/node_modules/react-native-splash-screen/android/build/intermediates/packaged_res/release/values/values.xml:13:5-18:13: AAPT: error: style attribute 'android:attr/windowSplashScreenBackground' not found.
    
ERROR:/home/iuri/QonteoApps/biometricmax/node_modules/react-native-splash-screen/android/build/intermediates/packaged_res/release/values/values.xml:13:5-18:13: AAPT: error: style attribute 'android:attr/windowSplashScreenAnimatedIcon' not found.
    
ERROR:/home/iuri/.gradle/caches/transforms-3/de2ed04f8522efd4ca22835ece62dd33/transformed/core-splashscreen-1.0.0-alpha01/res/values-v31/values-v31.xml:3:5-9:13: AAPT: error: style attribute 'android:attr/windowSplashScreenAnimatedIcon' not found.
    
ERROR:/home/iuri/.gradle/caches/transforms-3/de2ed04f8522efd4ca22835ece62dd33/transformed/core-splashscreen-1.0.0-alpha01/res/values-v31/values-v31.xml:3:5-9:13: AAPT: error: style attribute 'android:attr/windowSplashScreenBackground' not found.
    
ERROR:/home/iuri/.gradle/caches/transforms-3/de2ed04f8522efd4ca22835ece62dd33/transformed/core-splashscreen-1.0.0-alpha01/res/values-v31/values-v31.xml:3:5-9:13: AAPT: error: style attribute 'android:attr/windowSplashScreenAnimationDuration' not found.

at com.android.builder.internal.aapt.v2.Aapt2Exception$Companion.create(Aapt2Exception.kt:45)
at com.android.builder.internal.aapt.v2.Aapt2Exception$Companion.create$default(Aapt2Exception.kt:39)

此外,我已更新:

  1. SDK平台为Android 12(S)。
  2. Plus SDK构建工具已更新为Android SDK Build-Tools 31。

在哪里/如何实现这些样式属性? 我已将以下项目添加到Styles.xml中。

    <item name="android:windowBackground">@drawable/splash</item>
    <item name="android:windowSplashScreenBackground">@drawable/splash</item>
    <item name="android:windowSplashScreenAnimatedIcon">@null</item>

顺便提一下,引导我采用这种解决方案的原始帖子是:https://dev59.com/WMDqa4cB1Zd3GeqPkL3J=_. - Iuri Sampaio
我尝试了一切正确的方法,但错误从未得到解决,浪费了数小时的时间。 - Omkar T
2个回答

2

很可能是我的问题的重复。

我猜你没有改变主题父级

最新的更新中,Android 12带有SplashScreen API,以确保从Android 12开始正确显示启动画面。

要访问它,您必须升级您的gradle文件并将您的主题父级更改为Theme.SplashScreen。在gradle中添加:

android {
    //before syncing please make sure Android API 12 is installed in SDK manager
    compileSdkVersion 31 
    ...
}
dependencies {
    ...
    implementation 'androidx.core:core-splashscreen:1.0.0-alpha01'
    ...
}

创建一个独立的 style.xml 文件用于闪屏界面。
<resources>
    <style name="Theme.MySplashScreen" parent="Theme.SplashScreen"> 
        <item name="windowSplashScreenBackground">@color/black</item> <!-- If it's a @drawable make sure it's in .xml format-->
        <item name="windowSplashScreenAnimationDuration">1000</item>
        <item name="windowSplashScreenAnimatedIcon">@drawable/books_logo</item>
        <item name="postSplashScreenTheme">@style/Theme.Books</item> <!-- This will switch back to your given theme once the splash screen is gone-->
    </style>
</resources>

在你的清单文件<application>中设置主题。
<manifest>
   <application 
   ...
   android:theme="@style/Theme.MySplashScreen">
   ...

在您的主活动或启动活动中,最后在setContentView()之前,在onCreate()中设置加载闪屏。
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        installSplashScreen()

        setContentView(...)
}

0

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