【问题标题】:Resource linking fails on lStarlStar 上的资源链接失败
【发布时间】:2021-10-31 09:30:55
【问题描述】:

我正在开发一个 React Native 应用程序。我的 Android 构建在 CI 环境(和本地)中开始失败,没有任何更改。

Execution failed for task ':app:processDevelopmentDebugResources'.

> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > Android resource linking failed
.../app/build/intermediates/incremental/mergeDevelopmentDebugResources/merged.dir/values/values.xml:2682: AAPT: error: resource android:attr/lStar not found.

根据Android: Resource linking fails on test execution even when nothing has been changed的说法,这是因为一些库升级了。

lStar 需要 compileSdkVersion 31 而我的项目使用的是 compileSdkVersion 28

如何跟踪最近更新了哪些库,或者是哪个库导致了这种情况?

【问题讨论】:

  • 同样的事情发生在我身上。错误显示为core-1.7.0-alpha02\res\values\values.xml:105:5-114:25: AAPT: error: resource android:attr/lStar not found.
  • 大约 30 分钟前我也开始发生同样的事情。自从今天早上构建顺利,我很困惑
  • 对我来说也一样。大约 90 分钟前开始发生,没有代码更改。
  • 我也一样,我在我的项目中使用了颤振。
  • 什么是"lStar"

标签: android react-native


【解决方案1】:

对于使用 ionic 3 和 firebase 的用户,解决方案是更改 project.properties 并替换一些 androidx.core 行:

之前

# Project target.
target=android-28
android.library.reference.1=CordovaLib
android.library.reference.2=app
cordova.system.library.1=androidx.legacy:legacy-support-v4:1.0.0
cordova.gradle.include.1=cordova-support-google-services/nosveja-build.gradle
cordova.system.library.2=com.google.firebase:firebase-analytics:17.5.+
cordova.gradle.include.2=cordova-plugin-firebase-lib/nosveja-build.gradle
cordova.system.library.3=com.google.android.gms:play-services-tagmanager:16.+
cordova.system.library.4=com.google.firebase:firebase-auth:18.+
cordova.system.library.5=com.google.firebase:firebase-core:17.+
cordova.system.library.6=com.google.firebase:firebase-messaging:19.+
cordova.system.library.7=com.google.firebase:firebase-config:18.+
cordova.system.library.8=com.google.firebase:firebase-perf:18.+
cordova.system.library.9=androidx.annotation:annotation:1.1.0
cordova.system.library.10=com.google.android.gms:play-services-location:16.+
cordova.system.library.11=androidx.legacy:legacy-support-v4:1.0.0
cordova.system.library.12=androidx.legacy:legacy-support-v4:1.+
cordova.system.library.13=androidx.appcompat:appcompat:1.+

之后

target=android-28
android.library.reference.1=CordovaLib
android.library.reference.2=app
cordova.system.library.1=androidx.core:core-ktx:1.6.0
cordova.gradle.include.1=cordova-support-google-services/nosveja-build.gradle
cordova.system.library.2=com.google.firebase:firebase-analytics:17.5.+
cordova.gradle.include.2=cordova-plugin-firebase-lib/nosveja-build.gradle
cordova.system.library.3=com.google.android.gms:play-services-tagmanager:16.+
cordova.system.library.4=com.google.firebase:firebase-auth:18.+
cordova.system.library.5=com.google.firebase:firebase-core:17.+
cordova.system.library.6=com.google.firebase:firebase-messaging:19.+
cordova.system.library.7=com.google.firebase:firebase-config:18.+
cordova.system.library.8=com.google.firebase:firebase-perf:18.+
cordova.system.library.9=androidx.annotation:annotation:1.1.0
cordova.system.library.10=com.google.android.gms:play-services-location:16.+

【讨论】:

    【解决方案2】:

    就我而言,将compileSdkVersion = 29targetSdkVersion = 29 更改为compileSdkVersion = 31targetSdkVersion = 31 无需将androidxCoreVersion = '1.2.0' 更改为androidxCoreVersion = '1.6.0' 即可工作

    【讨论】:

      【解决方案3】:

      此问题是由较新版本的androidx.core:core-ktx 缺少lStar 引起的。

      为了找到导致问题的包,我在所有已安装的 node_modules 中搜索了core-ktx:,并在react-native-camera-kit 包中找到了implementation "androidx.core:core-ktx:+"

      我想将此锁定到core-ktx:1.6.0 以修复构建问题。使用 patch-package 直截了当(确保您有一个没有构建工件的全新软件包安装):

      • build.gradle 文件中将core-ktx:+ 更改为core-ktx:1.6.0,在我的情况下为node_modules/react-native-camera-kit/android/build.gradle
      • 运行yarn patch-package <package to fix>,在我的情况下是yarn patch-package react-native-camera-kit
      • 为 Android 重新构建以检查它是否工作
      • 提交补丁

      【讨论】:

        【解决方案4】:

        就我而言,这是由 build.grale 中的行 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0" 引起的。

        在我使用 Android Studio Arctic Fox 2020.3.1 Patch 4 向项目添加新的空活动后,Android Studio 更改了 build.gradle 文件

        来自: classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"

        到: classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0"

        【讨论】:

          【解决方案5】:

          虽然许多解决方案表明使用

          androidx.core:core:1.6.0

          我发现在我的项目中,一个模块使用的是 1.7.0 版本

          将其更改为 1.6.0 后,此问题就消失了。因此,如果您有多个模块,请确保检查所有 build.gradle 文件,它们都使用相同的版本。

          【讨论】:

            【解决方案6】:

            更新你的gradel.build

            compileSdkVersion 31
            targetSdkVersion 31
            

            【讨论】:

              猜你喜欢
              • 2022-01-11
              • 1970-01-01
              • 2019-02-01
              • 2022-07-07
              • 1970-01-01
              • 2019-03-09
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多