4

在我的自定义视图中,我使用的drawTextOnPath(...)是 4.1 之前不支持硬件加速的方法。

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

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

4

2 回答 2

5

我写过一次:Android定位系统

重要部分:

使用 Java 7 编译器编译 Java 应用程序时,不能将其与 Java 6 解释器一起使用。解释器会告诉您,即使您没有使用任何 Java 7 语言功能,它也无法解释生成的字节码。如果您想使用最新的编译器进行编译,但让您的字节码可在较旧的 JVM 实例上运行,您需要告诉编译器这样做(使用 -target-flag)。

<uses-sdk>在 Android 中,您可以使用-element 和 it's android:minSdkVersionandroid:targetSdkVersion-attributes在清单文件中声明您支持的平台版本。这些“目标机制”之间的区别在于,Android 并不关心应用程序编译的平台版本。

如果您声明您的应用程序与 API 级别 4 兼容,Android 将很乐意安装它,即使您针对 Android 4.1(API 级别 16)编译它也是如此。

简而言之:

  • 如果您希望您的应用程序与最新的 Android 平台一起工作,请针对它进行构建。
  • 使用 minSdkVersion 声明应用程序支持的最低 API 级别。
  • 作为您的 targetSdkVersion,请使用您编译应用程序时所针对的 API 级别。
  • 使用[Android] Lint检查(可能)不受支持的 API 调用。
  • 使用条件执行和@TargetApi-annotation 在可用时使用更新的 API。

当您使用最新的 SDK 构建应用程序时,您将拥有所有Build.VERSION_CODES可用的功能。

于 2013-04-13T10:05:43.053 回答
0

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

于 2013-04-13T10:05:26.743 回答