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.024N平台亮点
Android 6.023M平台亮点
Android 5.122LOLLIPOP_MR1平台亮点
Android 5.021LOLLIPOP 
Android 4.4W20KITKAT_WATCH仅限 KitKat for Wearables
Android 4.419KITKAT平台亮点
Android 4.318JELLY_BEAN_MR2平台亮点
Android 4.2、4.2.217JELLY_BEAN_MR1平台亮点
Android 4.1、4.1.116JELLY_BEAN平台亮点
Android 4.0.3、4.0.415ICE_CREAM_SANDWICH_MR1平台亮点
Android 4.0、4.0.1、4.0.214ICE_CREAM_SANDWICH 
Android 3.213HONEYCOMB_MR2 
Android 3.1.x12HONEYCOMB_MR1平台亮点
Android 3.0.x11HONEYCOMB平台亮点
Android 2.3.4Android 2.3.310GINGERBREAD_MR1平台亮点
Android 2.3.2Android 2.3.1Android 2.39GINGERBREAD 
Android 2.2.x8FROYO平台亮点
Android 2.1.x7ECLAIR_MR1平台亮点
Android 2.0.16ECLAIR_0_1 
Android 2.05ECLAIR 
Android 1.64DONUT平台亮点
Android 1.53CUPCAKE平台亮点
Android 1.12BASE_1_1 
Android 1.01BASE 

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

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值