Android依赖问题:修改compileSdkVersion后appcompat-v7仍显红线
解决Android Support库版本不匹配的问题
嘿,我来帮你搞定这个依赖报错的问题!其实核心原因很简单:Android Support库的版本号绝对不能高于你的compileSdkVersion,而且同一套Support库最好用相同的版本,不然很容易出兼容性问题。
咱们一步步拆解你的问题:
为什么compileSdk=26时,cardview和recyclerview会报错?
你把compileSdkVersion设为26,但却用了27版本的cardview和recyclerview——这就好比你用旧版本的工具去装为新版本系统设计的组件,肯定不兼容啊!Support库的版本必须和compileSdkVersion保持一致或者更低,所以这时候得把这两个依赖的版本改成26.x.x,比如26.1.0:
implementation 'com.android.support:cardview-v7:26.1.0' implementation 'com.android.support:recyclerview-v7:26.1.0'
为什么compileSdk=27时,appcompat会报错?
改成27后,appcompat:27.0.2红线,大概率是两个原因:
- 你根目录的
build.gradle没配置Google Maven仓库,导致IDE找不到这个版本的依赖; - 27.0.2这个版本可能在仓库里不太好找,换成更稳定常用的版本(比如
27.1.1)就能解决,而且最好把所有Support库的版本统一,避免后续出其他问题。
正确的配置示例
首先确保根目录的build.gradle里有Google仓库(这一步很重要!):
allprojects { repositories { google() // 必须加这个,Support库都存在这里 jcenter() } }
然后是app模块的build.gradle,统一所有Support库的版本:
android { compileSdkVersion 27 defaultConfig { targetSdkVersion 27 // 你的其他配置(比如applicationId、minSdkVersion) } // 可以定义一个变量统一管理版本,后续改起来更方便 ext { supportLibVersion = '27.1.1' } } dependencies { implementation "com.android.support:appcompat-v7:${supportLibVersion}" implementation "com.android.support:cardview-v7:${supportLibVersion}" implementation "com.android.support:recyclerview-v7:${supportLibVersion}" // 你的其他依赖 }
这样配置后,所有依赖版本和compileSdk匹配,而且统一版本也能避免潜在的冲突,红线自然就消失啦!
内容的提问来源于stack exchange,提问作者david
相关产品推荐
相关产品推荐

