2013-04-13 83 views
4

在我的自定义视图中,我使用的方法drawTextOnPath(...)直到4.1时才支持硬件加速。编译版本与最低要求版本Android

所以我想添加一个if语句,它在运行时检查当前的Android版本,并在该版本大于或等于4.1时开启硬件加速。 我的问题是,我用Android 4.0 SDK(这是我的最低版本)编译我的项目,所以我没有Android 4.1的Build.VERSION_CODES

我应该用4.1编译我的项目,但我的最低版本是4.0吗?

+0

我写了一次:http://codeisland.org/2012/android-targeting-system/ –

回答

5

我写了一次:Android targeting system

重要部分:

当编译使用Java编译器7的Java应用程序,你不能 与Java 6个译员使用它。解释器会告诉你,它不能解释生成的字节码,即使你认为你不是使用任何Java 7语言特性的 。如果要使用最新编译器 进行编译,但在较早的JVM 实例上使您的字节码可运行,则需要告诉编译器(使用 -target-flag)。

在Android中,你可以声明你在 清单文件支持什么样的平台版本,使用<uses-sdk> - 元素,它的 android:minSdkVersionandroid:targetSdkVersion -attributes。这些“针对性机制”之间的差异在于,Android的 并不在意与应用程序编译的平台版本有关。

如果声明您的应用程序与API级别4兼容, Android将高兴地安装它,即使你对 的Android 4.1(API等级16)编译它。

因此,在短期:

  • 如果你希望你的程序,用最新的Android平台工作,建立反对。
  • 使用minSdkVersion声明应用程序支持的最低API级别。
  • 作为您的targetSdkVersion,请使用您编译该应用程序的API级别。
  • 使用[Android] Lint检查(可能)不支持的API调用。
  • 使用条件执行和@ TargetApi注释在可用时使用更新的API。

当你正在构建与最新的SDK应用程序,你必须将所有可用的Build.VERSION_CODES

0

是的,如果您使用4.1的功能,即使您有条件地这样做,您也必须针对4.1进行编译,否则编译器将无法构建应用程序,因为它会将所有4.1功能视为无效(不存在)。