Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

各種のプラットフォーム バージョンをサポートする

Android の最新バージョンには、アプリ開発用の優れた API が用意されていますが、ユーザーのデバイスは必ずしもアップデートされているとは限らず、最新の Android が普及するまでは、以前のバージョンも引き続きサポートする必要があります。このレッスンでは、最新の API を活用しつつ、以前のバージョンのサポートも継続する方法について説明します。

プラットフォーム バージョンのダッシュボードが定期的に更新されており、Google Play ストアにアクセスするデバイス数に基づいて、アクティブなデバイスに搭載されている各 Android バージョンの分布が公開されています。一般的に、アプリを開発する際は、最新バージョンをターゲットとしつつ、アクティブなデバイスの 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">

テーマの作成方法や使用方法については、スタイルとテーマをご覧ください。