编译旧Android原生应用遇资源匹配错误及Gradle问题求助
解决Android编译时Material样式找不到的问题
嘿,别慌!这个问题我刚接触Android开发时也碰到过,其实就是SDK版本不匹配导致的,咱们一步步来搞定它:
问题原因
你遇到的两个错误提示里的样式——android:TextAppearance.Material.Widget.Button.Inverse和android:Widget.Material.Button.Colored——是**Android 6.0(API 23)**才正式加入系统的Material Design样式,但你的项目里compileSdkVersion设置的是22,编译工具自然找不到这些不存在的资源啦。
具体解决步骤
直接升级你的编译SDK版本到23及以上,同时同步相关依赖版本,修改后的build.gradle配置如下:
apply plugin: 'com.android.library' android { // 把compileSdkVersion升级到23,对应Android 6.0 compileSdkVersion 23 // 同步升级buildToolsVersion,这里选23.0.3(稳定版本) buildToolsVersion "23.0.3" defaultConfig { minSdkVersion 14 // targetSdkVersion建议和compileSdkVersion保持一致 targetSdkVersion 23 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } } dependencies { // 给play-services指定具体版本,避免自动升级带来的兼容问题,这里选适配API23的9.0.0 compile 'com.google.android.gms:play-services:9.0.0' compile files('libs/jackson-core-asl-1.9.2.jar') compile files('libs/jackson-mapper-asl-1.9.2.jar') // support-v4版本要和compileSdkVersion匹配,这里选23.4.0 compile 'com.android.support:support-v4:23.4.0' }
额外注意事项
如果修改后还是有问题,检查一下项目里的styles.xml或者布局文件,有没有直接引用android:TextAppearance.Material...这类系统样式。如果有的话,可以换成AppCompat支持库的对应样式,比如:
- 把
android:TextAppearance.Material.Widget.Button.Inverse换成TextAppearance.AppCompat.Widget.Button.Inverse - 把
android:Widget.Material.Button.Colored换成Widget.AppCompat.Button.Colored
这样即使后续需要兼容更低版本的系统,也能保证样式正常显示。
修改完配置后,点击Android Studio右上角的Sync Project with Gradle Files按钮同步一下,应该就能正常编译啦!
内容的提问来源于stack exchange,提问作者jflizandro
相关产品推荐
相关产品推荐

