Android の最新バージョンには、アプリ開発用の優れた API が用意されていますが、ユーザーのデバイスは必ずしもアップデートされているとは限らず、最新の Android が普及するまでは、以前のバージョンも引き続きサポートする必要があります。このレッスンでは、最新の API を活用しつつ、以前のバージョンのサポートも継続する方法について説明します。
Android Studio の新しいプロジェクト ウィザードを使用して、各バージョンの Android を搭載しているアクティブなデバイスの分布を確認します。この分布は、Google Play ストアにアクセスするデバイスの数に基づきます。一般に、アプリのターゲットを最新バージョンに設定しつつ、アクティブなデバイスの約 90% をサポートすることをおすすめします。
ヒント: 複数の Android バージョンに対して最適な機能を提供するには、アプリで Android サポート ライブラリを使用します。これにより、新しいプラットフォーム API を以前のバージョンで使用できます。
最小 API レベルと対象 API レベルを指定する
AndroidManifest.xml ファイルは、アプリの詳細について記述し、サポートする Android のバージョン情報を指定します。具体的には、<uses-sdk>
要素の minSdkVersion
属性と targetSdkVersion
属性によって、アプリがサポートする最小の API レベルと、アプリの設計やテストの対象となる最大の API レベルを指定します。
例:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... > <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" /> ... </manifest>
Android の新しいバージョンのリリースに伴い、スタイルや動作が変更される場合があります。そのような変更のメリットを活用しつつ、さまざまなユーザー デバイスのスタイルにフィットするアプリを開発するには、targetSdkVersion
値を、利用可能な最新の Android バージョンに合わせて設定するようにしてください。
実行時にシステム バージョンをチェックする
Android は、Build
定数クラスを通じて、プラットフォーム バージョンごとに一意のコードを提供しています。このコードをアプリ内で使用することで、コードの実行条件を設定できます。特定の API レベルに依存するコードは、その API レベルがシステム上で利用可能でなければ実行されません。
Kotlin
private fun setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { actionBar.setDisplayHomeAsUpEnabled(true) } }
Java
private void setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } }
注: XML リソースの解析時、Android では現在のデバイスでサポートされない XML 属性は無視されます。そのため、新しいバージョンだけでサポートされている XML 属性を使用していても、そのコードが原因となって古いバージョンでエラーが発生するおそれはありません。たとえば targetSdkVersion="11"
を設定した場合、Android 3.0 以降では、デフォルトで ActionBar
がアプリに組み込まれるようになります。アクションバーにメニュー項目を追加するには、メニュー リソース XML 内で android:showAsAction="ifRoom"
を設定する必要があります。この設定は、クロスバージョン XML ファイルで行っても安全です。古いバージョンの Android の場合、showAsAction
属性は単に無視されます(そのため、res/menu-v11/
内に別バージョンを配置する必要はありません)。
プラットフォームのスタイルとテーマを使用する
Android では、基本のオペレーティング システムの外観や使い心地をアプリにも適用するテーマを提供しています。これらのテーマは、マニフェスト ファイル内でアプリに適用できます。このような内蔵のスタイルやテーマを使うことで、新しくリリースされる Android に合わせてアプリの外観や使い心地を最新のものに更新できます。
アクティビティをダイアログ ボックスのようにするには:
<activity android:theme="@android:style/Theme.Dialog">
アクティビティに透明な背景を付けるには:
<activity android:theme="@android:style/Theme.Translucent">
/res/values/styles.xml
内で定義した独自のカスタムテーマを適用するには:
<activity android:theme="@style/CustomTheme">
アプリ全体(すべてのアクティビティ)にテーマを適用するには、次のように android:theme
属性を <application>
要素に追加します。
<application android:theme="@style/CustomTheme">
テーマの作成方法や使用方法については、スタイルとテーマをご覧ください。