编译版本与最低要求版本的Android是什么意思?

4
在我的自定义视图中,我使用的方法drawTextOnPath(...)在4.1之前的硬件加速中不被支持。
因此,我想添加一个if语句,在运行时检查当前的Android版本,并在该版本大于或等于4.1时打开硬件加速。我的问题是,我使用Android 4.0 SDK编译我的项目(这是我的最低版本),因此我没有Android 4.1的Build.VERSION_CODES
那么,我应该使用4.1来编译我的项目吗?

我曾经写过这个:http://codeisland.org/2012/android-targeting-system/ - Lukas Knuth
2个回答

5
我曾经写过这个:Android targeting system 重要部分:
当使用Java 7编译Java应用程序时,您不能将其与Java 6解释器一起使用。即使您没有使用任何Java 7语言功能,解释器也会告诉您它无法解释生成的字节码。如果您想使用最新的编译器进行编译,但使您的字节码在旧的JVM实例中可运行,则需要告诉编译器如何做(使用-target标志)。
在Android中,您可以在清单文件中声明支持哪些平台版本,使用元素及其android:minSdkVersion和android:targetSdkVersion属性。这些“定位机制”的区别在于,Android不关心应用程序是针对哪个平台版本编译的。
如果您将应用程序声明为与API Level 4兼容,则Android将愉快地安装它,即使您将其编译为Android 4.1(API Level 16)。

简而言之:

  • 如果你想让你的应用程序与最新的Android平台兼容,请构建它。
  • 使用minSdkVersion声明应用程序支持的最低API级别。
  • 作为您的targetSdkVersion,请使用您编译应用程序的API级别。
  • 使用[Android] Lint检查可能不支持的API调用。
  • 使用条件执行和@TargetApi注释在可用时使用更新的API。

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


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接