清单合并失败:uses-sdk:minSdkVersion 10不能小于库中声明的版本L com.android.support:appcompat-v7:21.0.0-rc1
当我的项目有minSdkVersion
19时,在Android Studio
下载了L预览版本后得到了上述错误。
而且,在设置mindSdkVersion
如下所示:
defaultConfig { .... minSdkVersion 'L' .... }
关于AppCompat-v7-21
资源,我收到了几十个错误:
/home/user/workspace/project/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.0-rc1/res/values-v21/values.xml Error:Error retrieving parent for item: No resource found that matches the given name '@android:TextAppearance.Material.SearchResult.Subtitle'.
所以我有两个问题:
- 为什么AS抱怨minSdkVersion? 我认为,因为AppCompat-v7 21只支持L版本; 但为什么 ? 另外,它也会在秋季正式发布的时候支持L版吗? 因为这将是一个问题…或者,这只是一个暂时的限制,以使应用不会被推到Play Store,正如Google I / O 2014 Keynote中所指定的那样?
- 为什么AppCompat-v21会抱怨这些错误,因为我已经把mindSdkVersion设置为L?
compileSdkVersion 'android-L'
繁荣。 完成。
最后编辑:从Android 5.0版本开始,这不再是一个问题,直接针对API级别21。
编辑为了清楚 :事实上,如下所示的David_E,这个解决scheme只适用于L版本,如果你尝试在低于L的设备(例如4.4.4)上部署应用程序,它会抱怨OLD_SDK。 为了使应用程序在L之前工作,您仍然需要使用旧的v20支持库+应用程序compat + targetVersionSdk和compileVersionSdk
dependencies { compile 'com.android.support:appcompat-v7:20.+' compile 'com.android.support:support-v4:20.+' } android { compileSdkVersion 20 buildToolsVersion '20' defaultConfig { applicationId "com.example.application" minSdkVersion 10 targetSdkVersion 20 versionCode 1 versionName "1.0" } }
此处所述的答案可能无法正常工作,因为这会使您的应用仅适用于Android L.
为了保持与旧版Android操作系统版本的向后兼容性,请更改gradle依赖关系
从:
compile 'com.android.support:appcompat-v7:+'
至:
compile 'com.android.support:appcompat-v7:20.+'
请注意,错误抱怨com.android.support:appcompat-v7:21.0.0-rc1
,原因是使用appcompat-v7:+
会告诉gradle导入appcompat-v7
库的最新依赖项,遗憾的是这个最新版本只适用于Android L,所以我们必须指向以前的版本。
希望谷歌能在不久的将来解决这个问题。
我工作的方式是安装Android Studio Beta(Not Preview Release,testing版今天作为IO的一部分发布)。
卸载预览版本并安装testing版并打开您的项目。 它会要求您使用项目SDK或Studio SDK,使用Android Studio的SDK。
转到你的项目local.properties文件,你有sdk.dir确保反斜杠()加倍.eg \。
转到项目结构> SDK,并确保指向我的电脑上的Android SDK它是C:\ Program Files文件(x86)\ Android \ android-studio \ SDK。
然后在你的项目和任何你有Build.gradle文件的库中
compile 'com.android.support:support-v4
改变它compile 'com.android.support:support-v4:20+
重新同步gradle文件和所有固定的
强制使用工作版本只需要像这样更改gradle依赖关系:
dependencies { compile 'com.android.support:gridlayout-v7:19.0.1' compile 'com.android.support:appcompat-v7:19+' ... }
是:
compile 'com.android.support:appcompat-v7:+'
NB
我在SDKpipe理器中更新了Tools&Extras。
在项目被破坏之后,我如上所示修复了它。
现在我不更新Android L&4.4W(足够的错误今天:-()
感谢大卫的答案!
我必须改变
compile 'com.android.support:support-v13:+'
至:
compile 'com.android.support:support-v13:20.+'
现在一切正常。
另外:在这里的其他答案并没有解决我的问题,但我发现了一个替代方法来解决在Android Studio 0.8.0 Android的问题。 在我修改了build.gradle中的依赖关系后,这个问题令人遗憾地发生,代码会说OLD_SKD。 我正在使用Galaxy S2。
除了将所有东西改为:19+:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:19+' compile 'com.android.support:support-v4:19+' compile 'com.google.android.gms:play-services:+' compile 'com.android.support:mediarouter-v7:19+' }
它仍然行不通,所以我不得不在任何可能的地方移回来:
android { compileSdkVersion 19 buildToolsVersion '19.1' defaultConfig { minSdkVersion 11 targetSdkVersion 19 versionCode 1 versionName '1.0' }
现在,应用程序再次在手机上工作。 我应该可能会得到一个新的手机,但现在,我希望这可能会帮助一个人。