消息“错误:资源 android:attr/lStar 未找到”

ciz*_*zon 118 android gradle flutter

我开发的一个Flutter Android应用今天突然编译错误。

错误:

什么地方出了错:

任务“:app:processDebugResources”执行失败。

Android资源链接失败/Users/xxx/.gradle/caches/transforms-2/files-2.1/5d04bb4852dc27334fe36f129faf6500/res/values/values.xml:115:5-162:25: AAPT:错误:资源android:attr/lStar未找到。

错误:链接引用失败。

我试过

使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。使用 --scan 运行以获得完整的见解。

在https://help.gradle.org获取更多帮助

构建在 16 秒内失败。

Sau*_*mar 56

使用此处的答案 将compileSdkVersion和targetSdkVersion更新为31

并在 android/build.gradle 文件的最后添加此代码片段。

configurations.all {
    resolutionStrategy {
        force 'androidx.core:core-ktx:1.6.0'
    }
}
Run Code Online (Sandbox Code Playgroud)

最近,audioplayers 包的原作者在他最近的 PR 中修复了这个问题。它已在音频播放器版本中修复0.20.1,因此如果您的问题与音频播放器有关,请升级。


Nit*_*rix 41

对于那些像我一样在应用程序上下文中遇到此问题并使用早于(在我的情况下)Cordova之前的 Android API 版本的人,我找到了一种绕过它的干净方法。3129

长话短说

如果您正在使用该插件cordova.plugins.diagnostic,请先将其卸载,然后使用以下参数重新安装

cordova plugin add cordova.plugins.diagnostic --variable ANDROIDX_VERSION=1.0.0
Run Code Online (Sandbox Code Playgroud)

刷新整个android平台,你的项目不应该androidx.core:core:1.7.0-beta02再使用了。


完整解释

线程中已经提到的解决方案(强制某个版本的包的 gradle 规则)将无法使用,Cordova因为它自己处理整个 gradle 过程(收集插件依赖项、config.xml 设置并处理所有内容),并且确实很难覆盖特定的事物。我没有设法使用resolutionStrategy例如来解决我们的问题。

迁移到Android API 31并不总是一个简单的解决方案(插件和依赖项需要特别支持它)

相反,我尝试查找我安装的哪些插件具有链接到该androidx.core:core包的依赖项,这会破坏其1.7.0-beta02版本中的所有内容。

我的列表中没有人直接使用它,但我发现(在built的帮助下build.gradle)使用了以下包androidx.appcompat:appcompat,并且由于它也与之相关AndroidX,所以我挖掘了一下,很快发现该版本用于这是1.+最新的 1.xx)。

检查 mavenrepo,androidx.appcompat:appcompat是否有我们的 bug 包androidx.core:core作为依赖项(1.7.0-beta02最新的)。

使用 IDE 快速搜索后,我找到了依赖项的定义:

<framework src="androidx.appcompat:appcompat:$ANDROIDX_VERSION" />
Run Code Online (Sandbox Code Playgroud)

它被一个名为 的插件使用cordova-diagnostic-plugin。(在项目中很常见Cordova,它基本上处理 Android 设置、权限和硬件内容)

我注意到环境变量用于定义包版本(默认设置为1.+)。继续查看该插件的 GitHub 文档:https://github.com/dpa99c/cordova-diagnostic-plugin#androidx-library会告诉您,在使用 Cordova 命令安装插件时,您确实可以设置自定义版本。

我做了什么(我首先删除了插件):

cordova plugin add cordova.plugins.diagnostic --variable ANDROIDX_VERSION=1.0.0
Run Code Online (Sandbox Code Playgroud)

重建android平台后,我开始了新的构建,终于成功了!

androidx.appcompat:appcompat:1.0.0以及androidx.core:core1.0.0版本中的包都被使用。没有更多error: resource android attr/lStar not found问题了!

总结一下:检查您的插件依赖项,如果可能,设置静态版本而不是“最新”。这样,您可以(在大多数情况下)避免使用alpha/beta 版本,这可能不稳定或不支持您当前的环境。


小智 34

我这样做是为了在我的 Flutter 应用程序中解决这个问题。

  1. 打开android/app项目
  2. 在所有解决方案中搜索文本androidx.core:core-ktx:+。在大多数情况下,这可以在 build.gradle 文件中找到。
  3. 如果您发现此文本存在某种依赖性,请更改 androidx.core:core-ktx:+androidx.core:core-ktx:1.6.0
  4. 同步并再次运行

就我而言,我遇到了依赖问题audioplayers: ^0.17.3。该+标志导致了错误。

  • 仍然面临同样的问题也尝试了你的黑客 (3认同)

iOS*_*use 25

当我创建新的 Android 应用程序时,我在 Android Studio 中收到此错误。依赖项中的 appcompat 和 core-ktx 的最新版本似乎是问题所在。

  • 打开build.gradle,查看依赖项

  • 将 appcompat 回滚到 1.3.0

  • 将 core-ktx 回滚到 1.6.0

  • 点击“立即同步”(应该位于右上角)

    dependencies {
      ...
    
      //implementation 'androidx.appcompat:appcompat:1.4.0'
      //implementation 'androidx.core:core-ktx:1.7.0'
    
      implementation 'androidx.appcompat:appcompat:1.3.0'
      implementation 'androidx.core:core-ktx:1.6.0' 
    
     ...
    }
    
    Run Code Online (Sandbox Code Playgroud)

重新运行你的程序并祈祷吧。


Bha*_*and 24

我遇到了同样的错误

C:\Users\pc.gradle\caches\transforms-2\files-2.1\7a25962662620ee4f1493c07e779c7ef\core-1.7.0\res\values\values.xml:105:5-114:25: AAPT: 错误:

资源 android:attr/lStar 未找到。

通过 = 解决此问题

在build.gradle中替换compileSdkVersion 30

   to 
Run Code Online (Sandbox Code Playgroud)

编译SdkVersion 31


小智 18

您是否使用 @react-native-community/netinfo 库?如果您正在使用该库,则需要刷新它。

更新或卸载并重新安装 netinfo 库后,它将可以工作。


Cod*_*ker 10

此错误的解决方案可能会根据我们用于构建应用程序的平台而变化。

对于科尔多瓦来说,

重新安装cordova.plugins.diagnostic插件

cordova plugin add cordova.plugins.diagnostic --variable ANDROIDX_VERSION=1.0.0
Run Code Online (Sandbox Code Playgroud)

对于反应本机,

重新安装@react-native-community/netinfo

对于 Android Studio,

在 build.gradle(app) 文件中指定 Android 核心依赖项的特定或稳定版本。

dependencies {
    ...
    implementation "androidx.core:core-ktx:1.6.0"
}
Run Code Online (Sandbox Code Playgroud)


小智 9

这个问题的主要根源是appcompat库。作为运行项目的快速修复,您可以使用低于 1.4.0 的 appcompat 版本,即您可以切换到 appcompat 版本

实现 'androidx.appcompat:appcompat:1.3.0'

或以下。


Kar*_*lli 8

删除所有 build.gradle 文件中项目依赖项中的动态版本

例子:

"androidx.core:core-ktx:+"
Run Code Online (Sandbox Code Playgroud)

删除依赖项 { }中的 + 或 ^ 运算符并提及特定版本或稳定版本

"androidx.core:core-ktx:1.6.0"
Run Code Online (Sandbox Code Playgroud)

来源:https ://flutter.dev/docs/development/packages-and-plugins/using-packages


Wah*_*zir 5

我通过更改这些解决了这个问题compileSdkVersion 31targetSdkVersion 31并且classpath 'com.android.tools.build:gradle:4.0.2'

  • 你把它们改成什么,从什么改成什么? (2认同)

Edu*_*ora 5

如果您使用 React Native 并在 2022 年 11 月 4 日之后开始遇到此问题,则它可能与下一个已知问题有关:https://github.com/facebook/react-native/issues/35210

为了尝试这是否是导致您出现问题的原因,您可以升级react-native到该链接中指定的相应补丁版本。

这样做解决了“错误:资源 android:attr/lStar 未找到”问题以及其他两个突然发生的问题,因此可能值得一试!