(Android)minSdkVersionを9にする4つの理由
厳密には9以上にする理由です。
minSdkVersionが9以上と8以下では大きな差がある、ということを説明しようと思います。
(補足: API 8 = Android 2.2, API 9 = Android 2.3)
1. タブレットに対応できる
8以下では画面サイズはsmall, normal, largeの3種類にしか対応できませんでしたが、9以上ではxlargeに対応できます。xlargeはタブレットのサイズなので割と重要です。
xlargeに対応していないアプリはタブレットでアプリを検索したときに上位には表示されなくなるようです。
画面サイズシェア
Data collected during a 7-day period ending on April 1, 2014.
ldpi mdpi tvdpi hdpi xhdpi xxhdpi Total Small 8.1% 8.1% Normal 13.2% 33.7% 19.8% 12.5% 79.2% Large 0.7% 4.4% 1.5% 0.6% 0.6% 7.8% Xlarge 0.1% 4.2% 0.3% 0.3% 4.9% Total 8.9% 21.8% 1.5% 34.6% 20.7% 12.5%
(from https://developer.android.com/about/dashboards/index.html)
xlargeのユーザーは全体の5%です。
2. Google Play Servicesが使える
Google Play Servicesは9以上で使えます。8用にGoogle Play Servicesのfroyo版がありましたが、froyo版はもうサポートが終わりました。
Google Play Servicesは例えばAdMobの広告を貼るのに使います。以前はAdMobのSDKがあったのですが、2014年8月から使えなくなります。Google Play Servicesのfroyo版ではAdMobは使えないようです。
3. ファイル埋め込みのサイズ制限が無くなる(追記あり)
アプリにファイルを埋め込む場合、resフォルダ、rawフォルダ、assetsフォルダのどこかにファイルを置くのが一般的だと思いますが、それらのどこに置いても8以下ではファイル毎に1MBのサイズ制限があります。
そのため、大きなファイルをアプリに埋め込みたい時には埋め込みたいファイルを分割圧縮するなどして1ファイル1MB以下にして埋め込み、アプリの初回起動時に結合して保存する必要がありました。この場合、アプリに埋め込まれた分割圧縮ファイルと結合後のファイルで2重に容量を使います。
これを避ける方法として、アプリにファイルを埋め込まず、初回起動時に自分のサーバーからダウンロードさせる方法があります。
9以上ではサイズ制限がないので、アプリ自体の50MB制限を超えなければ大きなサイズのファイルも埋め込めます。
追記:回避方法がありました
Android2.2(API8)以前で1MB以上のファイルを埋め込む
4. 8はすでに約1%
minSdkVersionを9以上にした時のデメリットは8以下で動かなくなることですが、動かなくなるユーザーは既に1%程度に減っています。
バージョンシェア
Data collected during a 7-day period ending on April 1, 2014.
Version Codename API Distribution 2.2 Froyo 8 1.1% 2.3.3 - 2.3.7 Gingerbread 10 17.8% 3.2 Honeycomb 13 0.1% 4.0.3 - 4.0.4 Ice Cream Sandwich 15 14.3% 4.1.x Jelly Bean 16 34.4% 4.2.x 17 18.1% 4.3 18 8.9% 4.4 KitKat 19 5.3%
(from https://developer.android.com/about/dashboards/index.html)
最後に
本当はminSdkVersion=11(Android 3.0)にしたいです。Holo, Fragment, Animator, ...魅力的な機能がたくさんあります。一応ライブラリを入れることで対応できるのですが、早く標準で使いたいです。