Android SdkVersion

ndroid SdkVersion那些事儿

本文对android项目中的compileSdkVersion、targetSdkVersion、minSdkVersion、maxSdkVersion和buildTarget等概念做一个说明。

compileSdkVersion

定义

编译或构件时采用的API版本,你在项目中查看的android系统相关的源码与这个compileSdkVersion指定的是一致的。

说明

  1. 在eclipse中位于项目根目录中的project.properties文件中(target=xx);
  2. 在android studio中位于项目中的build.gradle中;
  3. 强烈推荐总是使用最新的 SDK 进行编译(默认就是最新的);
  4. 修改 compileSdkVersion 不会改变运行时的行,但可能会出现新的编译警告、编译错误;
  5. compileSdkVersion 不会被包含到 APK 中:它纯粹只是在编译的时候使用;
  6. 如果使用 Support Library ,那么使用最新发布的 Support Library 就需要使用最新的 SDK 编译(对应关系)。

targetSdkVersion

定义

表明当系统api小于或等于targetSdkVersion值时,系统运行程序不用做兼容处理;(相当于告诉系统,我开发时是针对targetSdkVersion指定版本已经做过兼容的)

说明

  1. 如果不设置,默认值和minSdkVersion相同;
  2. 应用程序仍然能在低于targetSdkVersion的系统上运行;
  3. 系统API高于targetSdkVersion,系统会开启向前兼容模式;反之,系统将不采用兼容模式,认为开发者已做兼容处理,而直接正常运行这个程序;
  4. targetSdkVersion这个值是在运行时起作用的,该值告诉系统到底要不要采用向前兼容模式来运行程序;

建议开发时将targetSdkVersion设置为最新的值,这样就可以应用新功能,并对新功能做兼容性测试

minSdkVersion

定义

运行应用程序所需要的最低Sdk 版本

说明

  1. 不指定,默认值为1,表明兼容所有android版本;
  2. 系统API高于minSdkVersion时,系统会组织应用的安装;
  3. 如果使用了高于minSdkVersion 的api(方法属性等),编译时会报错;
  4. minSdkVersion要取所有依赖项目中minSdkVersion的最大值,这样才能保证项目运行后不会报错;

maxSdkVersion

运行应用程序支持的最高版本(超过该版本运行不了)

说明

显然这个属性不符合事物发展的规律,现已不推荐使用,或者说已经失效了

高版本方法在低版本系统上的兼容性处理

  1. 采用注解的方式

    • 添加@TargetApi($API_LEVEL)可使编译通过
    • 添加@SuppressLint(“NewApi”)屏蔽一切新API才可使编译通过(一个方法中引用了多种不同API的新方法)

    举个例子,某个方法中使用了api9新加入的方法,而项目设置的android:minSdkVersion=8,此时在方法上加 @SuppressLint(“NewApi”)和@TargetApi(Build.VERSION_CODES.GINGERBREAD)都可以,以 上是通用的情况。而当你在此方法中又引用了一个api11才加入的方法 时,@TargetApi(Build.VERSION_CODES.GINGERBREAD)注解的方法又报错了,而 @SuppressLint(“NewApi”)不会报错。

  2. 运行时判断

    在低版本上不调用该方法,而自己提供低版本上的功能实现

下表列出了各 Android 平台版本支持的 API 级别:

平台版本 API 级别 VERSION_CODE 备注
Android 7.0 24 N 平台亮点
Android 6.0 23 M 平台亮点
Android 5.1 22 LOLLIPOP_MR1 平台亮点
Android 5.0 21 LOLLIPOP  
Android 4.4W 20 KITKAT_WATCH 仅限 KitKat for Wearables
Android 4.4 19 KITKAT 平台亮点
Android 4.3 18 JELLY_BEAN_MR2 平台亮点
Android 4.2、4.2.2 17 JELLY_BEAN_MR1 平台亮点
Android 4.1、4.1.1 16 JELLY_BEAN 平台亮点
Android 4.0.3、4.0.4 15 ICE_CREAM_SANDWICH_MR1 平台亮点
Android 4.0、4.0.1、4.0.2 14 ICE_CREAM_SANDWICH  
Android 3.2 13 HONEYCOMB_MR2  
Android 3.1.x 12 HONEYCOMB_MR1 平台亮点
Android 3.0.x 11 HONEYCOMB 平台亮点
Android 2.3.4Android 2.3.3 10 GINGERBREAD_MR1 平台亮点
Android 2.3.2Android 2.3.1Android 2.3 9 GINGERBREAD  
Android 2.2.x 8 FROYO 平台亮点
Android 2.1.x 7 ECLAIR_MR1 平台亮点
Android 2.0.1 6 ECLAIR_0_1  
Android 2.0 5 ECLAIR  
Android 1.6 4 DONUT 平台亮点
Android 1.5 3 CUPCAKE 平台亮点
Android 1.1 2 BASE_1_1  
Android 1.0 1 BASE  

原文链接:https://blog.csdn.net/rainmonth/article/details/78063330

猜你喜欢

转载自blog.csdn.net/zhuawalibai/article/details/82114091