之前做了個庫, 使用者整合的時候問了句: 我們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. 谷歌統計資料
2. 騰訊移動分析
3. 友盟全域羅盤
總結:
從以上三份資料統計來看, 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
對程式碼也沒影響, 但感覺是做了多餘的事情, 卻非要說自己支援更多的機子;