清单合并失败:uses-sdk:minSdkVersion 10不能小于库com.android.support:appcompat-v7:21.0.0-rc1中声明的版本L.

时间:2014-06-26 17:23:48

标签: android android-5.0-lollipop

Android Studio中下载L预览版本后,当我的项目有minSdkVersion 19时,出现上述错误。

此外,将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'.

所以我有两个问题:

  1. 为什么AS会抱怨minSdkVersion?我认为因为AppCompat-v7 21仅支持L版本;但为什么 ?此外,它还将在秋季正式发布时仅支持L版本吗?因为这将是一个问题...或者它只是一个临时限制,以便不能将应用程序推送到Play商店,如Google I / O 2014主题演讲中所述?
  2. 为什么AppCompat-v7 21会抱怨这些错误,因为我已经将mindSdkVersion设置为L?

6 个答案:

答案 0 :(得分:55)

compileSdkVersion 'android-L'

BOOM。完成。

最后编辑:从Android 5.0发布版开始,这不再是一个问题,只是直接针对API级别21。

为了清晰起见而编辑:确实如下面指定的David_E,此解决方案仅适用于L版本,如果您尝试在低于L的设备上部署应用程序(ex< = 4.4.4)它会抱怨OLD_SDK。为了使应用程序在L之前工作,您仍然需要使用旧的v20支持lib + app 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"
        }
}

答案 1 :(得分:31)

答案here可能无法正常运行,因为它会使您的应用仅适用于Android L.

为了保持与旧版Android OS版本的向后兼容性,请更改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工作,所以我们必须指向以前的版本。

希望Google能在不久的将来解决这个问题。

答案 2 :(得分:4)

对我有用的方法是安装Android Studio Beta(非预览版,Beta今天作为IO的一部分推出)。

卸载预览版并安装Beta并打开您的项目。它会要求您使用项目SDK或Studio SDK,使用Android Studio的SDK。

转到你的项目local.properties文件,你有sdk.dir的地方,确保任何反斜杠()加倍.e.g。 \。

转到项目结构> SDK并确保这指向我的Pc上的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文件和所有已修复的

答案 3 :(得分:4)

强制使用工作版本 只需改变这样的gradle依赖:

dependencies {
    compile 'com.android.support:gridlayout-v7:19.0.1'
    compile 'com.android.support:appcompat-v7:19+'
    ...
}

是:

compile 'com.android.support:appcompat-v7:+'

N.B。

我更新了工具& SDK管理器中的附加功能。

项目破坏后我按照上面的说明修复了它。

现在我不更新android L& 4.4W(今天有足够的bug :-()

答案 4 :(得分:2)

感谢大卫的回答!

我不得不改变

compile 'com.android.support:support-v13:+'

要:

compile 'com.android.support:support-v13:20.+'

现在一切都很完美。

答案 5 :(得分:0)

另外:这里的其他答案并没有解决我的问题,但我找到了另一种方法来解决Android Studio 0.8.0上的android-l问题。在我更改了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'
    }

现在该应用程序再次在手机上运行。 我应该得到一个新的手机,但是现在,我希望这可以帮助别人。