Advertisement

[牛角尖]minSdkVersion应该设置为15还是14?

阅读量:

前段时间开发了一个库,在用户集成操作中遇到了一个问题:我们的APP是从 $ Android 4.0.0 $ 开始支持的(库设置为 $15$, 对应的是 $ Android 4.0.3$). 现在能否将 $ minSdkVersion $ 设置为 $14$. 这个需求最初来源于一个问题:原本库的设置为 $15$, 对应的是 $ Android 4.0.3$. 这是问题提出的背景.

出于好奇与探索的精神,在此稍作研究。

甩个大纲先

首发于 简书

1. 官方推荐的最低版本支持

最初开发库时, 使用Android Studio(简称 AS )并被广泛认为是官方支持的 API 15 。然而,在AS 3.0版本中, 已经升级到了更为强大的 API 18

AS3.0_default.png

从提供的数据来看, API 18 约仅覆盖了约91.4%的功能或设备, 这不禁让人推测可能有很多厂商对此持反对态度。然而, 是否存在其他未被包含的关键设备呢? 那么不同版本的API在覆盖范围上又如何呢? 同时,在AS中也提供了相关统计数据:

Distribution.png

不过这些信息中使用 API 15 来表示 Android系统版本信息 ,并未对具体子版本如 4.0.0 ~ 4.0.3 进行细分划分;或许谷歌认为没有必要这样做吧;不过我们仍然可以看到一些关键数据:
若从当前 API 16 开始进行支持的话,则能够覆盖超过99.2%的设备;

2. 各版本统计详情信息

一般情况下,在考察版本分布情况时我们会设置 minSdkVersion。然而,在由于 AS 无法提供更为细分版本的分布数据而不得不寻找其他统计数据的情况下

1. 谷歌统计数据

google_analysis_version_distribution

2. 腾讯移动分析

tencent_analysis_version_distribution

3. 友盟全域罗盘

表格中的那条系统 <code>9.1</code> 的数据我也不知道是什么鬼,别问我:

总结:
根据以上三份数据结果来看, API 14(Andorid 4.0.0~4.0.2) 均未被计入统计数据。推测可能的原因有两个:
一是设备数量不足(低于设定阈值),因此未能记录;
二是市场上缺乏此类机型,导致无法进行统计。

3. Android 各系统版本发布时间

更多详情请点击上方标题链接

从上表可以看出:

  • 4.0.0 发布仅在三天内就发布了 4.0.1 ,一周多一点后发布了 4.0.2版本;这些均为修复型版本;
  • 4.0.3 是经过优化后的稳定版;它修复了多个问题并进行了优化;
    基本上可以确定 4.0.0 不会进行有机型发布;其最大可能也是 4.0.2这个版本;后续我们还将继续验证这一情况

4. 手机厂商出机时间

不想花费大量时间收集多家信息的数据,而是选择回顾当年那些风靡一时的 HTC 和 MIUI 系列手机的发展历程:

  • 2011.10.18 是 Android 4.0 LTE 手机首次亮相的日子,而 小米 1S 出现于 2012年8月,尽管发布日期稍晚,但其运行的基础系统仍然是 Android 2.3.;

2012年3月 推出的 HTC One X 搭载了 Android 4.0.3 系统。从 维基百科 上可以看出 HTC Sence 3.6 是 HTC 最初版本基于 Android 4.0 开发的定制 ROM, 而根据 此处此处 的信息可知: 其开发基础为 Android 4.0.3, 即 HTC 定制 ROM 中无 Android 4.0.x (x= ) 的相应版本;

再来看看谷歌自身的情况
Android 8.0(API 26)分别于2017年8月及以后版本发布, 而谷歌旗下最新的旗舰机型Pixel 2xl则是在随后一个月的2017年9月才提供基于官方系统图像的更新包, 其他机型则要等到更晚的时间;
据此推测: Android 4.0.0至4.0.2版本之间并未有相应的机型推出, 在短短的一个月中, rom厂商均未及时获取相应的定制系统;

5. 应用市场上的应用支持情况

原本认为没有该版本的机型存在

统计结果

我发现 (─≧ω≦─) 出乎我的意料的是 API 14 占据了一半的份额, 我不明白这其中的原因。 不过, 另外一个是 API 11/12, 这是什么概念呢? 还是有朋友拥有 Android 3.0 设备吗? 实在抱歉我的知识有限。

6. 小结

意识到自己的判断存在偏差,
不过我还是坚定地维护最初的见解,
为了满足对版本的支持需求,则建议从软件的4.0版本开始逐步升级至4.0.3版本。
降低参数值至14并不会对代码运行产生任何影响,
尽管这样修改可能显得有些多余,
但却并非表示愿意支持更多类型的设备。

全部评论 (0)

还没有任何评论哟~