目录
- 1. 概念:
- 2. compileSdkVersion,minSdkVersion,targetSdkVersion
- 3. Android studio上gradle修改
- 4. eclipse导入Android studio示例
虽然之前分析了gradle,但是在eclipse导入Android studio的时候,各个版本出现的问题还是很模糊,下面对各种版本进行一下说明:
参考资料:
https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#uses
http://blog.youkuaiyun.com/aiynmimi/article/details/51028499
1. 概念:
我们通常所说的Android系统版本其实就是platform版本,通俗点说就是Android4.0/5.0/6.0这种系统版本号。
SDK版本就是API-level,通俗点说用处就是越新的API-level就会提供更多酷炫的API接口,淘汰落后的API接口。
系统版本和SDK版本之间的关系:一般是一个或者多个系统对应着一般版本的SDK、因为系统更新了,但是不一定需要更新接口。
如下图所示(从官网上拔下来最新的):
可以看到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% | - |
数据统计日期:截止于 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% |
数据统计日期:截止于 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% |