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

可以看到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.026Oreo
Android 7.125Nougat
Android 7.024Nougat
Android 6.023Marshmallow
Android 5.122Lollipop
Android 5.021Lollipop
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.410GINGERBREAD_MR1
Android 2.3.310GINGERBREAD_MR1
Android 2.3.29GINGERBREAD
Android 2.3.19GINGERBREAD
Android 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

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

平台版本版本名称SDK版本市场占有率JDK版本
2.3.3 - 2.3.7Gingerbread100.4%6
4.0.3 - 4.0.4Ice Cream Sandwich150.5%6
4.1.xJelly Bean162.0%6
4.2.xJelly Bean173.0%6
4.3Jelly Bean180.9%6
4.4KitKat1913.4%6
5.0Lollipop216.1%7
5.1Lollipop2220.2%7
6.0Marshmallow2329.7%-
7.0Nougat2419.3%-
7.1Nougat254.0%-
8.0Oreo260.5%-

image

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

三、屏幕尺寸和密度

ldpimdpitvdpihdpixhdpixxhdpiTotal
Small0.6%    0.1%
Normal 1.3%0.2%30.1%37.2%21.3%
Large0.1%2.7%1.5%0.5%1.0%0.4%
Xlarge 2.0% 0.5%0.5% 
Total0.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.037.0%
3.045.4%
3.117.7%

image

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值