之前做的一个项目,由于阿里的旺信服务停了,最近想找个替代方案,于是找到了野火IM,看了下demo效果还不错,主要是ui部分可以复用。于是下载源代码看了一眼,比较奇怪的一点是昨天在windows已经把代码跑起来了,结果今天在mac上死活运行不聊了,提示下面的错误:
Execution failed for task ':chat:processDebugResources'. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade > Android resource linking failed C:\Users\obaby\.gradle\caches\transforms-2\files-2.1\87575f1e55fb95ae83d67cbd526a722c\core-1.7.0-alpha02\res\values\values.xml:105:5-114:25: AAPT: error: resource android:attr/lStar not found.
问题尴尬在看了下代码貌似也没什么问题,并且tm我都神马都还没改呢。这就神奇了,晚上回来之后在windows下运行,tm也挂了,wtf??
鉴于今天百度了一天没什么效果,于是尝试google之:
第一条就是这个错误,结果浪费时间tm瞎百度百度了一天。艹。
按照stackoverflow的方法只需要添加下面的代码即可:
#Go to android/build.gradle and add androidXCore = "1.6.0" to ext: ext { buildToolsVersion = "29.0.2" minSdkVersion = 21 compileSdkVersion = 29 targetSdkVersion = 29 googlePlayServicesAuthVersion = "16.0.1" androidXCore = "1.6.0" }
我搜索了一下没有这个配置,不过想起来貌似是这个core报的错误,并且隐约还提示了implementation中使用+号导致的警告,凭记忆搜索了一下,还真有这么个东西:
代码如下:
dependencies { api project(':mars-core-release') def lifecycle_version = '2.0.0-beta01' implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" implementation "androidx.core:core-ktx:+" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.0.0-beta01" // implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" }
如果要修复上面的错误,只需要将androidx.core:core-ktx:+ 修改为androidx.core:core-ktx:1.6.0 sync之后,重新编译即可:
dependencies { api project(':mars-core-release') def lifecycle_version = '2.0.0-beta01' implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" implementation "androidx.core:core-ktx:1.6.0" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.0.0-beta01" // implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" }
现在tm就一切ok了,如果一个安卓项目,之前运行好好地,哪天突然坏掉了。那么检查一下引用的各种+ 加号吧,坑爹。
参考连接:
https://stackoverflow.com/questions/69021225/android-resource-linking-fails-on-lstar
2 comments
多谢大佬提供的方案,也是今天下午遇到,折腾了一天。
不容易啊,我应该早Google之