编译版本与最低要求版本 Android

Posted

技术标签:

【中文标题】编译版本与最低要求版本 Android【英文标题】:Compiled version vs. Minimum required version 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 吗?

【问题讨论】:

我写过一次:codeisland.org/2012/android-targeting-system 【参考方案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 功能视为无效(不存在) .

【讨论】:

以上是关于编译版本与最低要求版本 Android的主要内容,如果未能解决你的问题,请参考以下文章

mac vant源码demo编译与运行

mac vant源码demo编译与运行

ios 编译版本 最低版本 运行版本 动态链接库

编译安装HAProxy

ClickOnce部署最低要求版本自动增加MSBuild

Wordpress 插件如何要求安装最低 Wordpress 版本?