【问题标题】:Compiled version vs. Minimum required version Android编译版本与最低要求版本 Android
【发布时间】:2013-04-05 20:56:04
【问题描述】:

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

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

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

【问题讨论】:

标签: android android-custom-view android-version


【解决方案1】:

我写过一次:Android targeting system

重要部分:

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

在 Android 中,您可以声明您支持的平台版本 清单文件,使用<uses-sdk>-元素,它是 android:minSdkVersionandroid:targetSdkVersion-属性。 这些“定位机制”之间的区别在于,Android 确实 不关心应用程序是针对哪个平台版本编译的。

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

简而言之:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-30
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      相关资源
      最近更新 更多