Android版本和兼容情况

1.compileSdkVersion, targetSdkVersion, minSdkVersion, buildToolsVersion

minSdkVersion :很好理解,就是你的程序支持在哪个最低版本的额Android上跑
buildToolsVersion:使用哪个版本的build工具,一般build版本会随着android版本的发布而发布,所以一般选取最新的sdk版本就行
targetSdkVersion :目标SDK,一般在这个sdk中的android手机最稳定,可以选择目前使用最多的手机SDK
compileSdkVersion:这是最重要的,也是最难选择的,选择什么版本就需要用什么版本的sdk源码去编译,另外support的版本要和这个版本一致,不然会出错。

2、support包

程序员往往有这种困扰,在开发一个android程序时,是使用旧版本的API还是新版本的额API,如果使用旧版本,新版本上的新特性和性能优化就用不到了,多浪费。如果使用新版本API,那么旧机器怎么办?只能写两套代码,每次请求的时候先判断下系统版本,新版本则运行新API,旧版本则运行旧API,很累有木有。
这个时候就是Support包出场的时候了,在一些关键更新API中,support包中都会扩展这些API使得它们在低版本version也能使用,即避免写两套代码,又能够最大化的利用起新API的性能特点。就是苦了Google的程序员了,不过为了让更多的开发迁移到新版本API,也是值得的。
support包有v4,v7,v13,推出这些包的作用是让开发者能够在低版本上运行高版本的一些特性,并不是说低版本加上这些包就是高版本的系统了,这些包只是在一些低版本的系统中扩展一些高版本拥有的类库,让这些类库能够顺利同低版本的API进行转换,从而能够顺利运行在低版本上面,避免了程序员的困扰。
V4包是兼容android1.6及之后的包,v7是兼容andorid 2.1及之后的包,V13是兼容Android 3.2及之后的包,V7包里面是含有V4包的,V13是为了平板开发,基本已经废弃。

综上所述:一般在开发应用时采用V7包,增加兼容性。比如:

compile 'com.android.support:appcompat-v7:22.+'
compile 'com.android.support:recyclerview-v7:22.+'

3、android版本

android有三种版本信息,一种是发布给公众的,即android2.2,android4.4等,一种是代号,比如 Android Cupcake,Sandwich,Jelly Bean等等,一种是开发版本号,如 15,16,23,25等等,这虽然是三种信息,但是基本是一一对应的,对于开发者来说只需要关注开发版本号就行,大概知道版本号的市场占有率,下面是google的官方数据:
各个版本的详细信息

Version Codename API Distribution
2.2 Froyo 8 0.1%
2.3.3 -2.3.7 Gingerbread 10 1.7%
4.0.3 -4.0.4 Ice Cream Sandwich 15 1.6%
4.1.x Jelly Bean 16 6.0%
4.2.x Jelly Bean 17 8.3%
4.3 Jelly Bean 18 2.4%
4.4 KitKat 19 29.2%
5.0 Lollipop 21 14.1%
5.1 Lollipop 22 21.4%
6.0 Marshmallow 23 15.2%

鉴于Google在android4.0中进行了大量的更新,因此如果对市场客户不是非常苛刻的情况下,选择minsdk为15或者以上将会增加一些系统性能。如果不能放弃这1.8%的客户,那么可以考虑兼容。

4、Android屏幕尺寸和密度
同样贴上Google官方图

Mdpi Hdpi Xhdpi xxhdpi Total
Small 1.8% 1.8%
Normal 3.8% 40% 27.3% 15.5% 86.7%
Large 4.3% 0.5% 0.5% 7.6%
XLarge 2.9% 0.3% 0.7% 3.9%
Total 11.0% 40.8% 28.5% 15.5% -

(此处略去了ldpi和tvdpi)
上图可以看到,我们其实只需要存放4中大小的图片在本地就行,虽然还有一种ldpi,但是比例相当少,只有2%,为了这2%另外存放一张图不合算,还不如让它们直接加载mdpi。这四种是mdpi,hdpi,xhdpi,xxhdpi,屏幕尺寸在small的也不需要考虑了,我想以后android厂商也几乎不会发屏幕小于4寸的手机了。

图片多大,放哪一个dpi文件夹,只和屏幕密度有关,和屏幕分辨率没关系。但是一般的1080p就能上xxdpi,720p就能上xdpi,480p就能上hdpi,480p以下就使用mdpi

你可能感兴趣的:(Android版本和兼容情况)