Android Studio更新后,SDK25 Kotlin项目如何避免生成values-v26文件?
解决SDK 25下values-v26.xml资源错误的方案
很理解你不想因为升级SDK版本重写大量Kotlin代码的困扰,这个问题本质是Android Studio更新后,构建过程中引入了SDK 26的资源依赖,导致合并时生成了values-v26.xml,而你的项目编译SDK是25,无法识别其中的android:keyboardNavigationCluster属性。下面给你几个不用升级SDK 26就能解决的办法:
1. 锁定所有支持库的版本为SDK 25对应版本
首先检查你的build.gradle(Module: audiobook)文件,确保:
compileSdkVersion和targetSdkVersion保持为25buildToolsVersion使用25.x.x的稳定版本(比如25.0.3)- 所有
com.android.support开头的依赖库版本统一为25.x.x(比如25.4.0)
如果存在第三方库间接依赖了更高版本的支持库,你可以强制所有支持库使用25版本,在android块下方添加:
configurations.all { resolutionStrategy.eachDependency { details -> val requested = details.requested if (requested.group == "com.android.support" && !requested.name.startsWith("multidex")) { details.useVersion("25.4.0") } } }
2. 手动声明缺失的属性(临时 workaround)
如果你暂时无法调整依赖版本,可以在项目的src/main/res/values/attrs.xml中手动声明android:keyboardNavigationCluster属性,让AAPT能识别它:
<resources> <declare-styleable name="View"> <attr name="android:keyboardNavigationCluster" format="boolean" /> </declare-styleable> </resources>
3. 禁用AAPT2(不推荐,仅临时应急)
Android Studio更新后默认启用AAPT2,它的资源合并逻辑可能导致这个问题。你可以在项目根目录的gradle.properties中添加以下配置禁用AAPT2:
android.enableAapt2=false
注意:这个方法只是临时应急,因为AAPT2是官方推荐的构建工具,禁用后可能会影响其他构建特性,建议优先用前两种方法。
执行完上述操作后,清理并重新构建项目,应该就能避免生成values-v26.xml,解决资源找不到的错误了。
内容的提问来源于stack exchange,提问作者Petr Kott
相关产品推荐
相关产品推荐

