Android Tips #6 縦長の端末で画面が小さくなるバグを直す

2011.11.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

先日弊社のブログリーダーアプリを公開しました。
社内でもいろいろな端末にインストールして使用してみましたが、INFOBAR(A01)でアプリ画面全体が小さくなってしまう問題が発生しました。

縦のサイズが目立って小さいですが、横も若干小さくなっています。
INFOBARを使っている社員に聞いてみたところ、「たまにそういうアプリがある」とのことでした。
レイアウトが悪い?マニフェストファイルの設定が問題?…いろいろ試行しながら調べました。

縦長の画面で生じる問題と判明

調べた結果、この問題はどうやらアプリの最小SDKバージョンが1.5(APIレベル3)以下で、かつ端末の画面が縦長サイズの場合に生じる、ということがわかりました。
(INFOBARの画面サイズは960×540ですが、同じ画面サイズのAVDで実行しても再現しました)
最小SDKバージョンを1.6(APIレベル4)以上に設定したところ、正しく表示されるようになりました!

<uses-sdk android:minSdkVersion="4" />

単純にバグなのか、1.5のSDKでは縦長サイズの端末は想定されていなかったのかはわかりませんが、 
 最小SDKバージョンで多くの端末に対応しようとすると、このような想定外の問題が起きる場合があることが分かりました。

最小SDKバージョンの選定 - Android 1.5は救うべきか?

 せっかくなので、今現在最小SDKバージョンは何に設定すべきか調べてみました。

Android1.5のシェア率は約1%

まず、APIレベルごとのシェア率を確認してみました。
シェア率は Android DevelopersDevice DashBoard - Platform Versions から見ることができます。

バージョン APIレベル バージョンコード シェア率
Android 3.2 13 Honeycomb MR2 0.9%
Android 3.1 12 Honeycomb MR1 0.9%
Android 3.0 11 Honeycomb 0.1%
Android 2.3.3 - 
Android 2.3.7
10 Gingerbread MR1 43.9%
Android 2.3 -
Android 2.3.2
9 Gingerbread 0.5%
Android 2.2 8 Froyo 40.7%
Android 2.1 7 Eclair MR1 10.7%
Android 1.6 4 Donut 1.4%
Android 1.5 3 Cupcake 0.9%

※2011/11/03のデータです。

Android 2.3.3~2.3.7と、Android 2.2のバージョンがシェア率のほとんどを占めていますね。
個人的には、Android2.3~2.3.2のシェア率が非常に少ない点が驚きました。

また、問題のAndroid 1.5(APIレベル3)のシェア率は約1%ですが、Android3.2と同じくらいのようです。
Android3.2はリリースされて間もないという点もあるので、今後シェア率は上がってくると思います。
(とはいうものの、Android 4に持っていかれそうですが)  
逆に、Android 1.5のシェア率はここからどんどん下がっていくと思います。

Android 1.5が搭載されている端末

次に、Android 1.5が搭載されている国内端末を調べてみました。

  • HT-03A - 日本初の Android OS 搭載のスマートフォン。1.6までバージョンアップ可能
  • SmartQ5 - Coviaから発売されたタブレット端末。2.2までバージョンアップ可能

以上の2機種のみでした。また、どちらも1.6以上にバージョンアップ可能のようでした。
となると、 Android 1.5 の端末を使っている国内ユーザはかなり少ないと思われます。

まとめ

Android1.5の全体からみたシェア率は約1%、かつ国内での端末数もかなり限られているので、
Android1.5ユーザはかなり少ない、といえると思います。 
しかし、今回のようにAndroid1.5を対象としているがゆえに起こってしまう 想定外の問題もあるので、
シェア率の高いバージョンをターゲットにつくるのであれば、最小SDKバージョンから外してしまったほうが良いと思います。
どうしても救いたい場合は、最小SDKバージョンにAPIレベル3を設定した「Android 1.5用アプリ」として、別途リリースするほうが懸命だと思います。