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

Posted

技术标签:

【中文标题】消息“错误:资源 android:attr/lStar 未找到”【英文标题】:Message "error: resource android:attr/lStar not found" 【发布时间】:2021-12-11 23:53:44 【问题描述】:

我开发的一款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 秒内。

【问题讨论】:

您找到解决方法了吗?我面临同样的问题。我只是试图重新运行我的应用程序,从那时起一切都变得疯狂。如果您对此修复有答案,请告诉我。 我在 React Native 中发现了同样的问题 ***.com/questions/69021225/… 我只想说,这是我对 Android 开发感到非常沮丧的事情之一。我打开了一个全新的项目,目的是制作一个带有 web 视图的简单应用程序。除了 web 视图,我没有添加其他代码。由于这个错误,它不会编译。真是浪费了我的时间。特别是因为我已经尝试了这个线程的所有内容并且没有任何工作。 【参考方案1】:

你在使用@react-native-community/netinfo 库吗?如果你正在使用这个库,你需要刷新它。

在更新或卸载并重新安装 netinfo 库后,它将起作用。

【讨论】:

更新 netinfo 包后似乎无法正常工作。 这个问题是关于一个科尔多瓦应用程序,所以这个答案不适用。也就是说,我在 react-native 应用程序上遇到了这个问题,并最终解决了这个问题。升级@react-native-community/netinfo确实解决了我的问题。【参考方案2】:

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

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

就我而言,audioplayers: ^0.17.3 依赖项存在这个问题。 + 符号导致了错误。

【讨论】:

仍然面临同样的问题也尝试了你的破解 我有同样的问题,当我删除 audioplayers 依赖项时它就消失了。此处描述的所有修复都不适用于我。仍然坚持这一点。 如果您使用的是 audioplayers,请在您的 pubspec.yaml 中将其更新为 ^0.20.0。这就是为我解决的问题。请参阅此处的讨论:github.com/luanpotter/audioplayers/issues/999 谢谢你,你让我免于第六次使缓存失效!【参考方案3】:

使用来自here 的答案 将 compileSdkVersion 和 targetSdkVersion 更新为 31

并在你的 android/build.gradle 文件最后添加这段代码 sn-p。

configurations.all 
    resolutionStrategy 
        force 'androidx.core:core-ktx:1.6.0'
    

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

【讨论】:

升级到 targetSdkVersion 31 后问题解决了【参考方案4】:

将以下内容添加到您的项目 build.gradle:

buildscript 
  ext 
    androidXCore = "1.6.0"
    
  

【讨论】:

【参考方案5】:

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

示例:

"androidx.core:core-ktx:+"

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

"androidx.core:core-ktx:1.6.0"

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

【讨论】:

你救了我的命!【参考方案6】:

如果有人在 ionic cordova 中遇到同样的问题,请删除这些插件

cordova-plugin-androidx
cordova-plugin-androidx-adapter

还有任何依赖它们的插件。

【讨论】:

这是为什么呢?已弃用? 我现在遇到 ionic cordova 这个问题,你能详细解释一下吗? cordova-plugin-androidx 已被弃用,因为它不再需要,因为 cordova-android@9 添加了对 AndroidX 的内置支持。仅当您的项目使用旧版 cordova-android@8 时才需要此插件。【参考方案7】:

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

TL;DR

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

cordova plugin add cordova.plugins.diagnostic --variable ANDROIDX_VERSION=1.0.0

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


完整解释

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

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

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

我的列表中没有人直接使用它,但我发现(在构建的build.gradle 的帮助下)使用了以下包androidx.appcompat:appcompat,因为它也与AndroidX 有关,所以我挖了一个位,我很快发现它使用的版本是1.+ (latest 1.xx)。

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

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

<framework src="androidx.appcompat:appcompat:$ANDROIDX_VERSION" />

它被一个名为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

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

androidx.appcompat:appcompat:1.0.0 在其1.0.0 版本中与androidx.core:core 包一起使用。没有更多的error: resource android attr/lStar not found 问题!

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

【讨论】:

它适用于其他选项。通过将 defaultTargetSdkVersion 和 defaultCompileSdkVersion 设置为 30 或使用配置升级到 API 级别 30,或者使用configurations.all resolutionStrategy force 'androidx.core:core:1.6.0' force 'androidx.core:core-ktx:1.6.0' 非常感谢,当我找到您的答案并完美运行时,我已经调查了这个错误 3 个小时。昨天我想谢谢你,但我有太多事情要做,所以我第一次利用空闲时间来做这件事!谢谢分享! 很高兴它有帮助,感谢您的反馈 :) 这个答案确实值得更多点击。坦率地说,首先我忽略了这个答案,但是在尝试了两天的其他解决方案之后,仔细阅读了你的答案,并按照步骤和它的工作!!!:)谢谢你,Nitrix。【参考方案8】:

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

对于科尔多瓦,

重新安装cordova.plugins.diagnostic插件

cordova plugin add cordova.plugins.diagnostic --variable ANDROIDX_VERSION=1.0.0

对于 React Native,

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

对于 Android Studio,

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

dependencies 
    ...
    implementation "androidx.core:core-ktx:1.6.0"

【讨论】:

这是我一直在寻找的解决方案。【参考方案9】:

抱歉,我刚刚创建了一个帐户,无法发表评论。感谢 Nitrix 和 Codemaker 的提示。

这是 Ionic 中命令的完整列表,只是为了添加到 Codemaker 的答案中以消除未找到的错误

Android resource linking failed /Users/xxx/.gradle/caches/transforms-2/files-2.1/5d04bb4852dc27334fe36f129faf6500/res/values/values.xml:115:5-162:25: AAPT: error: resource android:attr/lStar not found.
npm uninstall cordova.plugins.diagnostic
rm -rf plugins/
rm -rf node_modules/
rm -rf package-lock.json
delete from package.json if diagnostic is still somewhere
npm install
ionic cordova platform rm android
cordova plugin add cordova.plugins.diagnostic --variable ANDROIDX_VERSION=1.0.0 // This probably cause an error if Capacitor is used or even lately it also causes error with Cordova, so just use the command below
npm install cordova.plugins.diagnostic --variable ANDROIDX_VERSION=1.0.0
npm install @ionic-native/diagnostic
ionic cordova platform add android
ionic cordova build android

我希望这会有所帮助。

【讨论】:

【参考方案10】:

对于科尔多瓦 通过运行卸载cordova.plugins.diagnostic和cordova-plugin-androidx

cordova plugin remove cordova.plugins.diagnostic
cordova plugin remove cordova-plugin-androidx

【讨论】:

【参考方案11】:

我删除了implementation androidx.core:core:1.7.0,项目没有依赖它,现在一切正常了。

【讨论】:

【参考方案12】:

在 build.gradle 中注释这一行

dependencies 
implementation fileTree(dir: "libs", include: ["*.jar"])
//implementation 'androidx.appcompat:appcompat:1.4.0'

那是我的作品

【讨论】:

【参考方案13】:

当我创建一个新的 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' 

 ...

重新运行您的程序并交叉手指。

【讨论】:

【参考方案14】:

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

实现 'androidx.appcompat:appcompat:1.3.0'

或以下。

【讨论】:

【参考方案15】:

我已经发生过几次这种情况,并且在我升级依赖项时总是发生。

我每次都通过将我的 gradle 文件中的以下项目更新到最新版本来解决这个问题:

compileSdk targetSdk compileSdkVersion buildToolsVersion

buildToolsVersion 一直是导致问题的原因。

【讨论】:

【参考方案16】:

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

【讨论】:

你把它们改成什么,从什么改成?【参考方案17】:

创建新项目时: 选择使用旧版 android.support 库

【讨论】:

这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review【参考方案18】:

我遇到了同样的错误

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 

compileSdkVersion 31

【讨论】:

以上是关于消息“错误:资源 android:attr/lStar 未找到”的主要内容,如果未能解决你的问题,请参考以下文章

8.windows消息机制消息队列

消息队列漫谈:消息丢失,消息重复,消息积压一些处理方式

RabbitMQ 消息状态

消息队列:消息可靠性重复消息消息积压利用消息实现分布式事务

一文弄懂消息队列相关面试问题:消息可靠性重复消息消息积压利用消息实现分布式事务

消息队列中:消息可靠性重复消息消息积压利用消息实现分布式事务