Android系统版本、Platform版本、SDK版本、gradle修改

目录


虽然之前分析了gradle,但是在eclipse导入Android studio的时候,各个版本出现的问题还是很模糊,下面对各种版本进行一下说明:

参考资料:

https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#uses

http://blog.csdn.net/aiynmimi/article/details/51028499

1.  概念:

我们通常所说的Android系统版本其实就是platform版本,通俗点说就是Android4.0/5.0/6.0这种系统版本号。

SDK版本就是API-level,通俗点说用处就是越新的API-level就会提供更多酷炫的API接口,淘汰落后的API接口。

系统版本和SDK版本之间的关系:一般是一个或者多个系统对应着一般版本的SDK、因为系统更新了,但是不一定需要更新接口。

如下图所示(从官网上拔下来最新的):

平台版本 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.4
Android 2.3.3
10 GINGERBREAD_MR1 平台亮点
Android 2.3.2
Android 2.3.1
Android 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

可以看到Android1.0系统版本对应着SDK版本1(一个对应一个)

Android2.3、2.3.1、2.3.2对应着SDK版本9:(多个对应一个)

2. compileSdkVersion,minSdkVersion,targetSdkVersion

下面来说明一下在Android studio中的这三个SDK版本:

compileSdkVersion:

compileSdkVersion告诉 Gradle 用哪个 Android SDK 版本编译你的应用。使用任何新添加的 API 就需要使用对应等级的 Android SDK。 
需要强调的是修改 compileSdkVersion 不会改变运行时的行为。当你修改了 compileSdkVersion 的时候,可能会出现新的编译警告、编译错误,但新的 compileSdkVersion 不会被包含到 APK 中:它纯粹只是在编译的时候使用。(应该修复这些警告,他们的出现是有原因的) 
因此推荐使用最新的 SDK 进行编译。在现有代码上使用新的编译检查可以获得很多好处,避免新弃用的 API ,并且为使用新的 API 做好准备。 

minSdkVersion:

如果 compileSdkVersion 设置为可用的最新 API,那么minSdkVersion 则是应用可以运行的最低要求。minSdkVersion 是Google Play商店用来判断用户设备是否可以安装某个应用的标志之一。 你所使用的库,如 Support Library 或 Google Play services,可能有他们自己的 minSdkVersion 。你的应用设置的 minSdkVersion 必须大于等于这些库的 minSdkVersion 。例如有三个库,它们的 minSdkVersion 分别是 4, 7 和 9 ,那么你的 minSdkVersion 必需至少是 9 才能使用它们。

targetSdkVersion:

targetSdkVersion 是 Android 提供向前兼容的主要依据,在应用的 targetSdkVersion 没有更新之前系统不会应用最新的行为变化。这允许你在适应新的行为变化之前就可以使用新的 API。

由于某些行为的变化对用户是非常明显的(弃用的 menu 按钮,运行时权限等),所以将 target 更新为最新的 SDK 是所有应用都应该优先处理的事情。但这不意味着你一定要使用所有新引入的功能,也不意味着你可以不做任何测试就盲目地更新 targetSdkVersion ,请一定在更新 targetSdkVersion 之前做测试!你的用户会感谢你的。

通俗点说,就是你可以通过最新的compileSdkVersion 编译应用,但是在targetSdkVersion没有更新之前,API的行为就是targetSdkVersion 行为,而不是compileSdkVersion 的行为;

三者关系:

minSdkVersion <= targetSdkVersion <= compileSdkVersion 

3. Android studio上gradle修改

 http://www.jianshu.com/p/00beddbe3dbc

4. eclipse导入Android studio示例

将应用代码由eclipse导入Android studio的方法NDK-Build和Cmake两种方法(以android_serialport_api为例)

一、Android各版本对应的SDK版本:

平台版本 SDK版本 版本名称
Android 8.0 26 Oreo
Android 7.1 25 Nougat
Android 7.0 24 Nougat
Android 6.0 23 Marshmallow
Android 5.1 22 Lollipop
Android 5.0 21 Lollipop
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.4 10 GINGERBREAD_MR1
Android 2.3.3 10 GINGERBREAD_MR1
Android 2.3.2 9 GINGERBREAD
Android 2.3.1 9 GINGERBREAD
Android 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

二、Android各版本的市场占有率和对应JDK版本

平台版本 版本名称 SDK版本 市场占有率 JDK版本
2.3.3 - 2.3.7 Gingerbread 10 0.4% 6
4.0.3 - 4.0.4 Ice Cream Sandwich 15 0.5% 6
4.1.x Jelly Bean 16 2.0% 6
4.2.x Jelly Bean 17 3.0% 6
4.3 Jelly Bean 18 0.9% 6
4.4 KitKat 19 13.4% 6
5.0 Lollipop 21 6.1% 7
5.1 Lollipop 22 20.2% 7
6.0 Marshmallow 23 29.7% -
7.0 Nougat 24 19.3% -
7.1 Nougat 25 4.0% -
8.0 Oreo 26 0.5% -

image

数据统计日期:截止于 2017 年 12 月 11 日 
未显示任何分布份额不足 0.1% 的版本。

三、屏幕尺寸和密度

ldpi mdpi tvdpi hdpi xhdpi xxhdpi Total
Small 0.6%         0.1%
Normal   1.3% 0.2% 30.1% 37.2% 21.3%
Large 0.1% 2.7% 1.5% 0.5% 1.0% 0.4%
Xlarge   2.0%   0.5% 0.5%  
Total 0.7% 6.0% 1.7% 31.1% 38.7% 21.8%

image 
image

数据统计日期:截止于 2017 年 12 月 11 日 
未显示任何分布份额不足 0.1% 的屏幕配置。

四、Open GL 版本

此部分提供有关相对数量的支持特定 OpenGL ES 版本的设备的数据。请注意,支持某个特定 OpenGL ES 版本,还意味着支持任何更低版本(例如,支持版本 2.0 还意味着支持 1.1)。

要声明您的应用所需的 OpenGL ES 版本,您应使用 元素的 android:glEsVersion 属性。您也可以使用 元素声明您的应用使用的 GL 压缩格式。

OpenGL ES Version 占比
2.0 37.0%
3.0 45.4%
3.1 17.7%

image

猜你喜欢

转载自blog.csdn.net/hejisan/article/details/81533836