失败 Android-L

我试图从Android L中使用新的CardView。我更新了SDKpipe理器中的所有内容,但不断收到以下错误消息:

失败[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:+' } 

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

在这里看到我的Reddit的post,有一个解决方法。

一旦你解决了Eddie提到的上述问题。 你也可能遇到另一个错误;

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

这将会出现在你的styles.xml中。 快速解决方法是用下面的代码replace它:

 <?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> 

更改

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

 android { compileSdkVersion 21 buildToolsVersion '21.0.2' 

注意android-L是在单引号,但21不是。 21是一个整数,而不是一个string。

当你使用L进行编译时,它实际上在编译过程中会将你的minsdkversion设置为L.如果你想使用RecyclerView或CardView,我build议检查一下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获取该compile 'com.android.support:recyclerview-v7:+'

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