minSdkVersion应该设置为15还是14?
甩个大纲先之前做了个库, 用户集成的时候问了句: 我们APP是从
Android 4.0.0
开始支持的, 你们能不能把minSdkVersion
降到14
(库设定是15
, 对应:Android 4.0.3
)? 这是问题的由来,闲着没事, 就来稍微钻一下牛角尖,研究看看
1. 官方推荐的最低版本支持
当初做库的时候, Android Studio
(简称 AS
)还是推荐的 API 15
, 现在(AS 3.0)已经换成了 API 18
:
不过看上面写的数据, API 18
大概只覆盖了 91.4%
,估计应该很多厂商不愿意吧, 漏掉了很多设备, 那不同API版本的覆盖率是多少呢? AS
也给出了自己的统计:
不过这上面的信息使用 API 15
代表 Android 4.0
, 没有细分 4.0.0 ~ 4.0.3
, 可能谷歌自己觉得没必要了吧, 不过我们依然可以看出一些信息:
若是从 API 16
开始支持的话,至少能覆盖 99.2%
以上的设备了;
2. 各版本统计详情信息
通常我们设定 minSdkVersion
是看版本分布情况的, 既然 AS
没法提供更细分版本的分布数据,那我们就只能找找其他统计数据了:
1. 谷歌统计数据
google_analysis_version_distribution2. 腾讯移动分析
tencent_analysis_version_distribution3. 友盟全域罗盘
表格中的那条系统 `9.1` 的数据我也不知道是什么鬼,别问我:总结:
从以上三份数据统计来看, API 14(Andorid 4.0.0~4.0.2)
都没有被统计, 猜想有两种可能:
- 设备数过少(至少低于
0.5%
), 因此没有予以记录; - 市面上没有那种该系统版本的机型,因此无法统计;
3. Android 各系统版本发布时间
更多详情请点击上方标题链接从上表可以发现:
-
4.0.0
发布 仅3天 后就发布了4.0.1
, 一个月 后发布了4.0.2
版本,均为bug修复版; -
4.0.3
是修复了大量bug和优化后发布的稳定版:
基本上可以肯定4.0.0
是不会有机型发布的,最大的可能也是4.0.2
,这个我们后面继续验证;
4. 手机厂商出机时间
不打算找那么多家的信息了,我们看看当年比较火的 htc/小米 的情况就好:
-
2011.10.18
Android 4.0.0
� 发布, 而 小米1s2012.8
发布时,基于的还是Android 2.3
; -
2012.3
发布的 HTC One X 基于Android 4.0.3
从 维基百科 上可以看到HTC Sence 3.6
是HTC第一版基于Android 4.0
开发的定制rom, 而从 这里 和 这里 可以确认: 其基于的是4.0.3
, 即 HTC定制ROM也没有4.0.0~4.0.2
的版本; -
再来看看谷歌自己的情况
Android 8.0 于2017.8
发布, 而谷歌自己的当前旗舰机 pixel 2xl 于2017.9
才提供factory image
下载, 其他机型更晚;
基于以上情况,可大胆推断:Android 4.0.0~4.0.2
是没有机型发布的, 在短短一个月的时间内, rom厂商可能都来不及获取定制吧;
5. 应用市场上的应用支持情况
原本以为不存在该版本的机型,那市面上的APP应该很少会从 API 14
开始支持的, 为了验证想法, 我去下了应用宝的前100应用(P.S. 之所以是应用宝而不是其他市场,是因为它有接口可以直接调用,懒得爬了😝), 脚本地址在 这里, 懒得运行的话可以到我 云盘下载, 密码: icfv;
(ーー゛)我去, 出乎我意料的是 API 14
竟然占一半, 谁能告诉我为什么?
另外 API 11/12
的又是什么鬼? 有手机是 Android 3.0
的吗? 恕我孤陋寡闻了;
6. 小结
若要求从 4.0
支持,那从 4.0.3
开始即可, 虽然你将 15
降成 14
对代码也没影响, 但感觉是做了多余的事情, 却非要说自己支持更多的机子;