【问题标题】:AAPT: error: style attribute 'android:attr/windowSplashScreenBackground' not foundAAPT:错误:未找到样式属性“android:attr/windowSplashScreenBackground”
【发布时间】:2021-09-07 16:54:43
【问题描述】:

我在使用 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. Android 12(S) 的 SDK 平台。
  2. Plus SDK Build Tools 更新为 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>

【问题讨论】:

标签: java android android-studio gradle


【解决方案1】:

很可能是我的question的副本

我猜你没有改变主题父

随着最新更新,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>

在你的清单中设置主题&lt;application&gt;

<manifest>
   <application 
   ...
   android:theme="@style/Theme.MySplashScreen">
   ...

最后MainActivity 或您开始加载启动屏幕的活动中将其设置在onCreate() 之前setContentView()

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        installSplashScreen()

        setContentView(...)
}

【讨论】:

    【解决方案2】:

    我确实在 AndroidManifest.xml 中更改了主题父级。

    经过长时间调试和烧录神经元后,我切换到另一个名为 bootsplash 的 react-native 插件。 https://www.reactnativeschool.com/simple-splash-launch-boot-screen-in-react-native-ios-and-android

    似乎 react-native-splashscreen 的核心(即最新版本 3.2.0)在 JAVA 的原生源代码中存在错误。

    最好的祝愿, 我

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 2020-03-17
      • 2020-07-06
      • 2022-07-19
      • 2019-01-29
      • 2019-12-26
      相关资源
      最近更新 更多