失败[INSTALL_FAILED_OLDER_SDK] Android-L

时间:2014-06-27 17:42:14

标签: android android-5.0-lollipop

我尝试使用Android L中的新CardView。我更新了SDK管理器中的所有内容,但我不断收到以下错误:

  

失败[INSTALL_FAILED_OLDER_SDK]

这是我的build.gradle文件:

apply plugin: 'android'

android {
    compileSdkVersion 'android-L'
    buildToolsVersion '20.0.0'

    defaultConfig {
        applicationId "www.thomascbeerten.com.nieuwetests"
        minSdkVersion 8
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    // Support Libraries
    compile 'com.android.support:support-v4:19.1.0'
    compile 'com.android.support:appcompat-v7:19.1.0'
    compile 'com.android.support:gridlayout-v7:19.1.0'
    compile 'com.android.support:mediarouter-v7:19.1.0'
    // compile 'com.android.support:support-v13:19.1.0'
    compile 'com.android.support:recyclerview-v7:+'
}

5 个答案:

答案 0 :(得分:54)

  

最近有一篇关于L SDK不兼容的帖子   与之前版本的Android。我一直在挖掘AOSP存储库   现在已经有好几个小时了,并确定这些工具就是这样的   因为它们旨在以不同方式处理预览平台。   如果您针对预览SDK(android-L)进行编译,那么构建工具将会   将minSdkVersion和targetSdkVersion锁定到相同的API级别。这个   导致生成的应用程序无法安装   运行旧版Android的设备,即使您的应用程序   没有做任何针对L的事情。更糟糕的是,新的   支持库(CardView,RecyclerView,Palette等)也被锁定   进入L API级别,即使 - 根据他们的存储库   名称 - 他们应该在API级别7上正常工作(他们会这样做!)。

有关此here的信息,请参阅我的Reddit帖子,并附带解决方法。

答案 1 :(得分:5)

一旦您解决了Eddie所提及的上述问题。您可能还会遇到另一个错误;;

Error:Error retrieving parent for item: No resource found that matches the given name 'android:Theme.Material.Light'.

这将出现在styles.xml中。快速解决方法是使用以下内容替换它:

<?xml version="1.0" encoding="utf-8"?>
 <resources>
<!--<style name="AppTheme" parent="android:Theme.Material.Light">-->
<style name="AppTheme" parent="android:Theme.Holo.Light">
</style>

答案 2 :(得分:2)

更改

android {
    compileSdkVersion 'android-L'
    buildToolsVersion '20.0.0'

android {
  compileSdkVersion 21
  buildToolsVersion '21.0.2'

注意android-L是单引号,但21不是。 21是一个整数而不是字符串。

答案 3 :(得分:0)

当你使用L进行编译时,它实际上会在编译期间进行更改,将minsdkversion设置为L.如果要使用RecyclerView或CardView,我建议您查看RecyclerViewLib。 RecyclerView和CardView已经进入这个库,因此没有最小版本L问题。作者还在他的blog post中解释了如何删除所有L相关代码以使其安全使用。

要将RecyclerViewLb添加到项目中,只需将以下行添加到build.gradle文件中的依赖项中:

compile 'com.twotoasters.RecyclerViewLib:library:1.0.+@aar'

然后,您不希望将compile 'com.android.support:recyclerview-v7:+'添加到build.gradle,因为您将通过RecyclerViewLib获取。

答案 4 :(得分:0)

我刚遇到这个问题。当您的min sdk版本和构建目标设置为比手机运行更高的API级别/操作系统版本时,可能会发生这种情况。如果您使用的是Android Studio,请转到文件&gt;项目结构&gt;并编辑相关设置,然后再次运行。