在我的自定义视图中,我使用的方法drawTextOnPath(...)
在4.1之前不支持硬件加速。
所以我想添加一个if
语句,该语句在运行时检查当前的Android版本,如果此版本大于或等于4.1,则打开硬件加速。
我的问题是我使用Android 4.0 SDK(这是我的最低版本)编译我的项目,所以我没有Android 4.1的Build.VERSION_CODES
。
我应该用4.1编译我的项目,尽管我的最低版本是4.0?
答案 0 :(得分:5)
我写了一次:Android targeting system
重要部分:
使用Java 7编译器编译Java应用程序时,则不能 将它与Java 6解释器一起使用。口译员会告诉你,那 它无法解释生成的字节码,即使你不是 使用任何Java 7语言功能。如果你想用。编译 最新的编译器,但你的字节码可以在旧的JVM上运行 实例,你需要告诉编译器这样做(使用 -target-标志)。
在Android中,您可以声明您支持的平台版本 清单文件,使用
<uses-sdk>
- 元素和它android:minSdkVersion
和android:targetSdkVersion
- 属性。 这些“定位机制”之间的区别在于Android 不关心编译应用程序的平台版本。如果您声明您的应用程序与API Level 4兼容, Android会很乐意安装它,即使你编译它也是如此 Android 4.1(API级别16)。
简而言之:
- 如果您希望自己的应用程序与最新的Android平台一起使用,请根据它进行构建。
- 使用minSdkVersion声明应用程序支持的最低API级别。
- 作为targetSdkVersion,使用编译应用程序的API级别。
- 使用[Android] Lint检查(可能)不支持的API调用。
- 使用条件执行和@ TargetApi-annotation在可用时使用更新的API。
使用最新的SDK构建应用程序时,您将拥有所有Build.VERSION_CODES
。
答案 1 :(得分:0)
是的,如果你使用4.1的功能,你必须编译4.1,即使你有条件地这样做,否则编译器将无法构建你的应用程序,因为它会将所有4.1功能视为无效(不存在)