失败[INSTALL_FAILED_OLDER_SDK] Android-L

Tom*_*mCB 39 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:+'
}
Run Code Online (Sandbox Code Playgroud)

Edd*_*die 54

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

点击此处查看我的Reddit帖子,了解相关信息.

  • 虽然这个答案理论上可以回答这个问题,但[更好](http://meta.stackexchange.com/a/8259/237685)在这里包含答案的基本部分,并提供参考链接. (26认同)

Ski*_*hie 5

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

Error:Error retrieving parent for item: No resource found that matches the given name 'android:Theme.Material.Light'.
Run Code Online (Sandbox Code Playgroud)

这将出现在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>
Run Code Online (Sandbox Code Playgroud)