最新消息:20210917 已从crifan.com换到crifan.org

【已解决】Android中用preference-v7后编译报错:values-v26.xml AAPT error resource android attr colorError not found

Android crifan 663浏览 0评论
折腾:
【未解决】Android Studio中用PreferenceFragmentCompat实现rcsjta的tts的参数设置页面
期间,把rcsjta的子项目tts的gradle配置改为:
/RCS/rcsjta/samples/api/tts/build.gradle
dependencies {
    implementation project(':api')
//    implementation 'com.android.support:support-v4:25.0.1'
    implementation 'com.android.support:preference-v7:26.+'


//    def preference_version = "1.1.1"
//    implementation "androidx.preference:preference:$preference_version"
}
即用了preference-v7:26.+
然后重新编译就报错
参考
Android开发之UI开发之V7库使用之PreferenceFragmentCompat组件使用及踩坑_清心寡欲,唯淡是真!-CSDN博客_preferencefragmentcompat
用:
build.gradle
dependencies {
    implementation project(':api')
//    implementation 'com.android.support:support-v4:25.0.1'
    implementation 'com.android.support:preference-v7:26.+'


//    def preference_version = "1.1.1"
//    implementation "androidx.preference:preference:$preference_version"
}
然后:
竟然也报错
/Users/xxx/.gradle/caches/transforms-2/files-2.1/d83d1b2906b010fc2c13f0c9b7d3c61d/appcompat-v7-26.1.0/res/values-v26/values-v26.xml:5:5-8:13: AAPT: error: resource android:attr/colorError not found.
看起来像是cache 问题,但是rebuild之前已clean了。不应该啊
算了,还是换回:
    implementation 'com.android.support:support-v4:25.0.1'
//    implementation 'com.android.support:preference-v7:26.+'
结果:
就没了上述问题了。
然后根据
Android开发设置页面 – 知乎
是api的28或29之后才会对于PreferenceFragment过期
而此处api设置的都是23左右,按道理不应该过期才对
所以感觉还是去用PreferenceFragment?
看起来,好像还是要加上preference-v7才行
所以还是去回到:
//    implementation 'com.android.support:support-v4:25.0.1'
    implementation 'com.android.support:preference-v7:26.+'
然后去解决错误:
values-v26.xml AAPT error resource android attr colorError not found
gradle – error: resource android:attr/colorError not found – Stack Overflow
说是:
        mFlavor {
            minSdkVersion 16
            compileSdkVersion 28
            targetSdkVersion 28

        motoFlavor {
            minSdkVersion 14
            compileSdkVersion 25
            targetSdkVersion 25
编译的sdk用的是25
但是用的资源却是28的
所以找不到
所以要,改为统一的28
那么此处看来也是类似逻辑了?

gradle – attr/colorError not found error when using com.android.support:recyclerview-v7:26.0.0-beta2 – Stack Overflow
确保compileSdkVersion和buildToolsVersion是一致的版本
举例:
compileSdkVersion 26
buildToolsVersion '26.0.2'
...
dependencies {
    ...
    compile 'com.android.support:appcompat-v7:26.0.2'
}
和:
compileSdkVersion 26
buildToolsVersion "26.0.0-beta2"
去改为:
// project.ext.set("compileSdkVersion", 23)
// project.ext.set("minSdkVersion", 12)
// project.ext.set("targetSdkVersion", 23)
ext {
//    compileSdkVersion = 23
    compileSdkVersion = 26
//    minSdkVersion = 12
//    minSdkVersion = 23
    minSdkVersion = 14
//    targetSdkVersion = 23
    targetSdkVersion = 26
}
//project.ext.set("buildToolsVersion", "24.0.0")
其中好像是buildToolsVersion 已废弃?都改成了compileSdkVersion?
clean后
重新编译
即可。
【总结】
此处,tts/build.gradle
中改为:
    implementation 'com.android.support:preference-v7:26.+'
编译报错:
values-v26.xml:5:5-8:13: AAPT: error: resource android:attr/colorError not found
原因:
此处compileSdkVersion(和buildToolsVersion)
(引用根目录中的)
ext {
    compileSdkVersion = 23

    targetSdkVersion = 23
}
和此处的
com.android.support:preference-v7:26.+
中的:26.+,即api level 26
不兼容不一致,导致旧版本的23中的appt找不到一些内容而报错
解决办法:
让compileSdkVersion(和buildToolsVersion)版本一致
即改为:
ext {


    targetSdkVersion = 26
}
即可。
其中:
  • api level 26 =sdk 26 = Android 8.0.0 = Oreo

转载请注明:在路上 » 【已解决】Android中用preference-v7后编译报错:values-v26.xml AAPT error resource android attr colorError not found

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
93 queries in 0.201 seconds, using 23.39MB memory