我正在开发一个在webview中使用Flash视频的项目。我解决了所有关于代码的问题,但只能在Honeycomb下面工作。
阅读this我发现了如何解决Android 3.0及更高版本(包括ICS)的问题,但现在这是一个大问题......如果我让我的项目与ICS兼容,我必须使用该指令,但我不会在姜饼上运行。
提供更多信息......有问题的代码就是这个:
android:hardwareAccelerated="true"
这是Android 3.0中包含的属性。
那么,有什么我可以做的,以避免构建两个不同的apks(somehitng像一个前HoneyComb apk和后HoneyComb apk)?
这是我的Android清单中的一部分:
<application android:label="@string/app_name"
android:icon="@drawable/elabora"
android:theme="@android:style/Theme.NoTitleBar">
<activity android:name="es.fundacionvodafone.elabora.android.controlador.InicioElaboraTest"
android:label="@string/app_name"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="es.fundacionvodafone.elabora.android.controlador.InicioElabora"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name"
android:hardwareAccelerated="true">
<!--
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
-->
</activity>
提前致谢。
更新: 我已经在使用Mike解释的内容,也就是说,正确定义minSdk和targetSdk,但我对以下事实感到困惑。使用这样的项目配置,当您在eclipse中运行项目时,它会提示以下窗口: 红叉表示项目targetSdk级别高于设备API级别。所以我认为它只是不能在这个设备上工作,但问题是你可以实际运行它,并按预期工作。
答案 0 :(得分:8)
OP发布的评论低于他的问题(基本上说明targetSDK不会影响应用程序的编译)是完全错误的!对不起,直截了当。
简而言之,这里的目的是从minSDK声明一个不同的targetSDK:这意味着您使用的是比最低级别更高级别SDK的功能,但您确保了向后兼容性。换句话说,假设您想要使用最近才引入的功能,但这对您的应用程序并不重要。然后,您可以将targetSDK设置为引入此新功能的版本,将最小值设置为较低的值,以便每个人都可以使用您的应用。
举一个例子,假设你正在编写一个广泛使用手势检测的应用程序。但是,手势可以识别的每个命令也可以通过按钮或菜单完成。在这种情况下,手势是“额外的酷”,但不是必需的。因此,您可以将目标sdk设置为7(当引入GestureDetection库时为“Eclair”),将最低SDK设置为3级(“Cupcake”),这样即使拥有真正旧手机的人也可以使用您的应用程序。您所要做的就是确保您的应用在尝试使用手势库之前检查了其运行的Android版本,以避免在不存在时尝试使用它。 (不可否认,这是一个过时的例子,因为几乎没有人还有v1.5手机,但有一段时间保持与v1.5的兼容性非常重要。)
再举一个例子,如果你想使用Gingerbread或Honeycomb的功能,可以使用它。有些人很快就会得到更新,但许多其他人,特别是使用较旧的硬件,可能会一直困在Eclair,直到他们购买新设备。这可以让您使用一些很酷的新功能,但不排除部分可能的市场。
Android developer's blog中有一篇非常好的关于如何使用此功能的文章,特别是如何设计上面提到的“在使用之前检查功能”代码。
对于OP:我写这篇文章主要是为了将来偶然发现这个问题的任何人的利益。答案 1 :(得分:3)
我对Android清单的版本化有类似的问题。对于较旧的手机,我想要一些预定义尺寸的小部件,对于支持调整大小的新手机,我希望有一个可调整大小的小部件。找不到办法做到这一点。可能这就是谷歌带来multiple APK support的原因。
上面提到的Adam的Powell文章没有解决这种版本问题。 (伟大的文章BTW)。
修改:得到了解决方案。 android清单中的小部件定义有一个布尔“启用”属性,可以从布尔资源值设置。资源值可以使用标准版本限定资源目录名称具有每个版本值。问题解决了。