Android: 向后兼容(Android L → Jelly Bean)

3

我创建了一个 Android L 应用程序,但想让它与 Android 4.3 及更高版本兼容。

res 中的文件夹应该如下所示:

values-v18
   theme.xml
values-v19
   theme.xml
values-v20
   theme.xml
values-v21
   theme.xml

我的manifest.xml文件(Android Studio显示被忽略了,因为我有gradle)。

<uses-sdk android:targetSdkVersion="18" android:minSdkVersion="18" />

我的 build.gradle

dependencies {
   compile 'com.android.support:support-v4:20.+'
   compile 'com.android.support:support-v13:20.+'
   compile 'com.android.support:appcompat-v7:+'
}

android {
   compileSdkVersion 'android-18'  <-- this breaks all Android-L stuff
   buildToolsVersion '19.1.0'
   ....

它失败的地方在于 values-v21/theme.xml,例如:

Cannot resolve symbol 'android:Theme.Material.Light'

还有所有仅适用于Android L的元素。

我在这里缺失了什么?

3个回答

1

据我所知,目前只有在使用L的内容时,才能使用LminSdkVersion


1
所以他们发布了一个开发者预览版,供全球的应用程序制作者开始为新的Android开发应用程序。但是你无法将它与你已经存在的应用程序组合在一起?这不可能是真的!:( - Jonas Borggren
1
我们程序员的生活真是艰苦啊 :) - mapodev
2
这只是一个“预览版”,甚至还不是候选版本。在最终确定之前,Android团队正在寻找L API中的问题。 - Morrison Chang
哇,这么简单啊?:( - Jonas Borggren
可能这只是一个预览版,但仍然存在问题。 - Andrew S

0

尝试

<uses-sdk android:targetSdkVersion="21" android:minSdkVersion="18" />

和/或

android {
    compileSdkVersion 'android-21'
    ....

Android L是API 20,Material主题仅适用于API 21+(您将收到有关使用的minSdkVersion的警告,但编译将正常工作)


0

你可以直接写targetSDK=21,这可能会有所帮助。通过android-l标签,您还可以找到一些解决该问题的解决方案。


仅仅这样做并不能帮助编译像android:Theme.Material.Dialog这样的东西。 - IgorGanapolsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接