我目前正在android工作室开发一个应用程序,已经有几个星期了。我想要的是sdk 21,而不是23!sdk 21在过去的几周里一直在工作,没有任何问题。
今天早上,我重新调整到我的电脑上继续我的编程,去运行应用程序,出现了以下错误:
Error:(3) Error retrieving parent for item: No resource found that
matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(18) Error retrieving parent for item: No resource found that matches the
given name 'android:Widget.Material.Button.Colored'.
从昨晚运行的应用程序到今早运行的应用程序,一切都没有改变。我甚至还没有关闭android工作室。我的电脑还在睡觉。
我已经搜索了堆栈溢出,并注意到其他人也出现了这些错误。我尝试了其他人给出的答案,比如检查项目结构、依赖项、梯度文件等。我也尝试了标准的clean和build
这是我的毕业档案:
android {
compileSdkVersion 21
buildToolsVersion '21.1.2'
defaultConfig {
applicationId "com.example.package"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:21.1.0'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.android.support:support-v4:21.0.3'
}
很抱歉这些图片是链接,我是新来的,所以还不能将它们嵌入到帖子中。
我完全有可能漏掉了一些显而易见的东西,但在过去的几个小时里,我一直在努力解决这个问题,但我一事无成。
任何帮助都将不胜感激!
Stand Alone SDK Manager Screen Shot
Dependencies
最佳答案
当你添加
compile 'com.google.android.gms:play-services:8.4.0'
此依赖项需要
23.0.0
库的support-v4
版本(fwiw,8.3和8.1需要22.2.0
,因此您正在使用api 23版本的支持库进行编译。不过,请记住,Picking your compileSdkVersion, targetSdkVersion, and minSdkVersion中描述的最佳实践是始终使用最新的sdk编译:
应该强调的是,更改compilesdkversion不会更改运行时行为。虽然在更改compilesdkversion时可能会出现新的编译器警告/错误,但apk中不包括compilesdkversion:它仅在编译时使用。(尽管添加这些警告是有原因的,但您确实应该修复它们!)
因此,强烈建议您始终使用最新的sdk进行编译。您将获得对现有代码的新编译检查的所有好处,避免新未被推荐的API,并准备使用新API。
因此,最简单的解决方案是将
compileSdkVersion
更改为api 23,同时将targetSdkVersion
(控制运行时行为和使用诸如运行时权限之类的操作)保留在当前的任何级别。