失败 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,请转至文件>项目结构>并编辑相关设置,然后再次运行。