3

我正在尝试在现有的 Android 版本中使用 RecyclerView 和 CardView。他们说它在支持库中。所以,我应该能够使用那些将“compileSdkVersion”放到“Android-L”的人。对 ?

我正在尝试在没有 Android L Preview 设备或模拟器的情况下使用这些小部件。我已经检查了有关此问题的其他问题。但是,似乎他们都在尝试 Android-L 和 Android-L 版本。

这是我的依赖项。

编译 'com.android.support:support-v4:13.0.+'
编译 'com.android.support:recyclerview-v7:+'

这是我的目标配置

minSdkVersion 15
目标SdkVersion 20

提前感谢您的任何想法。

4

3 回答 3

15

我刚刚找到了解决方案。
我无法使用 RecyclerView 和 CardView 构建应用程序而targetSdkVersionminSdkVersion不是“Android-L”的原因是因为 Google 在内部设计了与原始版本相比以不同方式对待操作系统的预览版本。

当我编译包含来自 Android-L 的组件的应用程序时,构建工具将minSdkVersiontargetSdkVersion锁定到同一级别。新的支持库(RecyclerView、CardView、Palette 等)也锁定在 L API 级别。

此行为仅在此 Android-L 预览版上发生

解决方法是将以下内容放在 AndroidManifest.xml 中。
我不需要更改我的 gradle 脚本上的任何内容。

<uses-sdk
  tools:node="replace" />

从 Android Gradle Plugin 0.11 版本开始,它默认开启了一个新的 Manifest Merger。它允许我们做一些漂亮的事情。此特定配置告诉清单处理器用此属性替换低优先级清单(例如本例中的库清单)中来自 uses-sdk 节点的任何属性。

由于 Gradle 还将您的 build.gradle 中的 minSdkVersion 和 targetSdkVersion 插入到该 uses-sdk 节点中,这就是我们真正需要添加的全部内容。

在此处查看与此问题相关的更多信息。在此处
查看与 Manifest Merger 相关的信息。

于 2014-07-03T11:21:53.647 回答
1

最好的解决方案是RecyclerViewLib。支持库已被拉入 repo 并发布在 maven Central 上。即使在 L 被释放后它也是安全的,因为所有依赖于 L 的代码都已被删除。作者在他的博客文章中对此进行了解释。

要在您的项目中使用它,只需在 build.gradle 依赖项中添加以下行:

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

祝你好运!

于 2014-09-13T20:56:39.357 回答
0

不,您必须将 targetSdkVersion 设置为 7 以上。您可以将 android 支持库 v7 与支持 android 7 api 级别以上的项目一起使用。还有一个。Android L 有 api 级别“android-L”,而不是 20。在引擎盖下它有 api 级别 21(20 是 4.4W,KitKat 用于可穿戴设备)。

于 2014-07-03T08:36:52.760 回答