minSdkVersion應該設定為15還是14

我啥時候說啦jj發表於2017-12-28

之前做了個庫, 使用者整合的時候問了句: 我們APP是從 Android 4.0.0 開始支援的, 你們能不能把 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 , 沒有細分 4.0.0 ~ 4.0.3 , 可能谷歌自己覺得沒必要了吧, 不過我們依然可以看出一些資訊:
若是從 API 16 開始支援的話,至少能覆蓋 99.2% 以上的裝置了;

2. 各版本統計詳情資訊

通常我們設定 minSdkVersion 是看版本分佈情況的, 既然 AS 沒法提供更細分版本的分佈資料,那我們就只能找找其他統計資料了:

1. 谷歌統計資料

google_analysis_version_distribution

2. 騰訊移動分析

tencent_analysis_version_distribution

3. 友盟全域羅盤

表格中的那條系統 `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 釋出, 而 小米1s 2012.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.02017.8 釋出, 而谷歌自己的當前旗艦機 pixel 2xl2017.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 對程式碼也沒影響, 但感覺是做了多餘的事情, 卻非要說自己支援更多的機子;

相關文章