Android Studio构建报错:build.gradle资源缺失及Support库版本冲突
解决Android Studio更新后build.gradle的字体属性缺失与Support库版本冲突问题
这种问题我之前也碰到过,核心原因就是动态版本依赖拉取了高版本Support库,再加上你的编译SDK版本跟不上,导致了双重冲突。咱们一步步来解决:
问题根源拆解
- 字体属性找不到:你用的
com.android.support:palette-v7:+里的+会自动拉取最新的Support库版本(比如28.0.0-alpha1),这些高版本库用到了API 26才引入的fontStyle、fontWeight等属性,但你的compileSdkVersion还是25,编译器找不到这些新属性,自然报错。 - Support库版本混合:高版本的palette库和你指定的25.2.0版本的appcompat、design等库版本不一致,Android要求所有Support库必须同版本,所以触发了警告。
具体解决步骤
1. 统一所有Support库版本
把所有带com.android.support前缀的依赖都改成和你compileSdkVersion匹配的固定版本(这里是25.2.0),尤其是那个带+的palette依赖:
// 把原来的 compile 'com.android.support:palette-v7:+' // 改成 compile 'com.android.support:palette-v7:25.2.0'
确保所有Support库版本完全一致,现在你的依赖里appcompat、design、recyclerview、cardview、palette都统一为25.2.0,版本冲突警告就会消失。
2. 匹配Build Tools版本
你的compileSdkVersion是25,建议把buildToolsVersion改成对应25的稳定版本,避免高版本Build Tools和低版本SDK的潜在冲突:
// 把原来的 buildToolsVersion '27.0.3' // 改成 buildToolsVersion '25.0.3'
3. 同步并清理项目
- 点击Android Studio顶部菜单栏的
File -> Sync Project with Gradle Files,等待同步完成。 - 再点击
Build -> Clean Project,清理旧的编译缓存。 - 最后
Build -> Rebuild Project,重新构建项目。
修改后的完整build.gradle代码
apply plugin: 'com.android.application' android { compileSdkVersion 25 buildToolsVersion '25.0.3' defaultConfig { applicationId "com.shaon.myapp" minSdkVersion 19 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) // RecyclerView // CardView compile 'com.android.support:appcompat-v7:25.2.0' compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.android.support:design:25.2.0' compile 'com.android.support:recyclerview-v7:25.2.0' compile 'com.android.support:cardview-v7:25.2.0' testCompile 'junit:junit:4.12' compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' compile 'org.jsoup:jsoup:1.7.3' compile 'com.android.support:palette-v7:25.2.0' }
这样操作后,应该就能顺利编译通过了。记住以后尽量不要用+来指定依赖版本,固定版本能避免很多这种莫名其妙的更新冲突。
内容的提问来源于stack exchange,提问作者Rashedul Rough
相关产品推荐
相关产品推荐

