后来有一个项目,我记得就更新了一下Gradle版本,代码没改动啊,突然就运行不了了,报如下错误:
> Task :Angel:processDebugResources FAILED
AGPBI: {"kind":"error","text":"Android resource linking failed","sources":[{"file":"C:\\Users\\even\\.gradle\\caches\\transforms-2\\files-2.1\\b380e3a83472853140378ff982a8e787\\appcompat-v7-26.0.2\\res\\values-v26\\values-v26.xml","position":{"startLine":4,"startColumn":4,"startOffset":217,"endLine":7,"endColumn":12,"endOffset":426}}],"original":"C:\\Users\\even\\.gradle\\caches\\transforms-2\\files-2.1\\b380e3a83472853140378ff982a8e787\\appcompat-v7-26.0.2\\res\\values-v26\\values-v26.xml:5:5-8:13: AAPT: error: resource android:attr/colorError not found.\n ","tool":"AAPT"}
AGPBI: {"kind":"error","text":"Android resource linking failed","sources":[{"file":"C:\\Users\\even\\.gradle\\caches\\transforms-2\\files-2.1\\b380e3a83472853140378ff982a8e787\\appcompat-v7-26.0.2\\res\\values-v26\\values-v26.xml","position":{"startLine":8,"startColumn":4,"startOffset":431,"endLine":11,"endColumn":12,"endOffset":652}}],"original":"C:\\Users\\even\\.gradle\\caches\\transforms-2\\files-2.1\\b380e3a83472853140378ff982a8e787\\appcompat-v7-26.0.2\\res\\values-v26\\values-v26.xml:9:5-12:13: AAPT: error: resource android:attr/colorError not found.\n ","tool":"AAPT"}
AGPBI: {"kind":"error","text":"Android resource linking failed","sources":[{"file":"C:\\Users\\even\\.gradle\\caches\\transforms-2\\files-2.1\\b380e3a83472853140378ff982a8e787\\appcompat-v7-26.0.2\\res\\values-v26\\values-v26.xml","position":{"startLine":12,"startColumn":4,"startOffset":657,"endLine":15,"endColumn":12,"endOffset":891}}],"original":"C:\\Users\\even\\.gradle\\caches\\transforms-2\\files-2.1\\b380e3a83472853140378ff982a8e787\\appcompat-v7-26.0.2\\res\\values-v26\\values-v26.xml:13:5-16:13: AAPT: error: style attribute 'android:attr/keyboardNavigationCluster' not found.\n ","tool":"AAPT"}
Execution failed for task ':Angel:processDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> Android resource linking failed
C:\Users\even\.gradle\caches\transforms-2\files-2.1\b380e3a83472853140378ff982a8e787\appcompat-v7-26.0.2\res\values-v26\values-v26.xml:5:5-8:13: AAPT: error: resource android:attr/colorError not found.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
我们看关键的地方:
values-v26\values-v26.xml:5:5-8:13: AAPT: error: resource android:attr/colorError not found.
values-v26 这个v26表示了这个values只能用在API 26的Android版本,并不是说我的应用支持的最低版本要为26,而是说如果你的手机版本是API 26,则会使用这个values-v26里面的值,如果不是,则会使用其他values目录里面的值,所以,这里我就搞不懂了,为什么会报错?我的设置的最低版本为15,目标版本和编译版本均为26,但是还是报这个错,真是见鬼了!
从控制台中点开这个报错的values-v26.xml文件,如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
。。。
<style name="Base.V26.Theme.AppCompat" parent="Base.V23.Theme.AppCompat">
<!-- We can use the platform styles on API 26+ -->
<item name="colorError">?android:attr/colorError</item>
</style>
。。。
</resources>
按住 Ctrl 键点击“?android:attr/colorError”,确实可以正常跳转,如下:
如上图所示,在android-26版本确实是有这个colorError属性的呀,为什么编译的时候会说找不到这个属性呢?而且我的编译版本明明是26,为什么会说找不到这个属性啊!真是见了鬼了!一生气,我就把build.gradle中的appcompat给删掉了,老子不用它了,气死我了!如下:
// implementation 'com.android.support:appcompat-v7:26.0.2'
当然了,这是因为我的项目中没用到这个兼容包里的东西,如果真的用到了,那真不知道怎么解决了,见鬼!
再后来,哎,还是得找出解决方案,不用是不行的,因为我那个项目下有好几个module,其中一个注释掉不用appcompat-v7是可以的,因为那个项目没怎么用到支持库的东西,但是另外的几个项目用到了,而且用到的地方还不少,不可能不用啊,没办法,硬着头皮找答案,百度、Google什么的,都试过了,找不到答案,最后仔细想了一下,不就是更新了Gradle嘛,之前是可以的嘛,说明编译版本设置是没问题的,只是编译工具出了问题,但是我又不想把Gradle的版本改回去,因为我使用了较新的kotlin版本,这需要较新的Gradle版本才能支持,最后我才想到,如果按着android-26的版本去编译的话,肯定是没问题的,但是我明明已经设置为26了还报错,是不是说明了gradle工具没有使用26来编译呢?抱着这个疑问,我把项目下的所有module的编译版本都改到了26或更高,然后再次支行,哎,OK了,我去他大爷的,这google真是坑爹啊,搞这种Bug来坑我!
简单总结一下这个坑:module A的编译版本设置为26,module B的编译版本设置为25,此时支行module A,报错说module A的某个属性不存在,但是这个属性明明在26版本是存在的,解决方案就是把module B的编译版本也设置为26,再运行module A就不会报错了。
[
创作打卡挑战赛
赢取流量/现金/CSDN周边激励大奖