39

我正在尝试使用 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:+'
}
4

5 回答 5

55

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

请在此处查看我的 Reddit 帖子,并提供解决方法。

于 2014-06-27T17:47:35.507 回答
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>

于 2014-07-16T22:29:55.257 回答
2

改变

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

android {
  compileSdkVersion 21
  buildToolsVersion '21.0.2'

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

于 2014-10-28T01:33:16.480 回答
0

当您使用 L 编译时,它实际上会在编译期间将您的 minsdkversion 设置为 L。如果您想使用 RecyclerView 或 CardView,我建议您查看RecyclerViewLib。RecyclerView 和 CardView 已经移入这个库,所以没有最小版本 L 的问题。作者还在他的博客文章中解释了如何删除所有与 L 相关的代码以使其安全使用。

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

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

然后,您不想将其添加compile 'com.android.support:recyclerview-v7:+'到您的 build.gradle,因为您将通过 RecyclerViewLib 获得它。

于 2014-09-13T21:09:54.007 回答
0

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

于 2015-07-15T20:13:00.943 回答