アプリのターゲット SDK バージョンを Wear OS 4 用に更新する

Wear OS 4 に対応するようにアプリを更新すると、Android 13(API レベル 33)をターゲットにすることで、このバージョンの Wear OS に対するアプリの互換性をさらに高められます。

ターゲット SDK バージョンを更新する場合は、Android 12 以前をターゲットとするアプリはもちろん、Android 13 以降をターゲットとするアプリに影響するシステム動作の変更にも対応してください。特に、権限に対する変更と、このガイドの後半で説明するアプリ コンポーネントとナビゲーション動作に対する変更を考慮してください。

ビルドファイルを更新する

ターゲット SDK バージョンを更新するには、モジュール レベルの build.gradle ファイルまたは build.gradle.kts ファイルを開き、Android 13 を表す値に更新します。

ビルドファイルでの値の形式は、使用している Android Gradle プラグイン(AGP)のバージョンによって異なります。

AGP 7.0.0 以上

AGP 7.0.0 以上を使用している場合は、Android 13 を表す次の値でアプリの build.gradle または build.gradle.kts ファイルを更新します。

Groovy

android {
    compileSdk 33
    ...
    defaultConfig {
        targetSdk 33
    }
}

Kotlin

android {
    compileSdk = 33
    ...
    defaultConfig {
        targetSdk = 33
    }
}

AGP 4.2.0 以下

AGP 4.2.0 以下を使用している場合は、Android 13 を表す次の値でアプリの build.gradle または build.gradle.kts ファイルを更新します。

Groovy

android {
    compileSdkVersion "33"
    ...
    defaultConfig {
        targetSdkVersion "33"
    }
}

Kotlin

android {
    compileSdkVersion = "33"
    ...
    defaultConfig {
        targetSdkVersion = "33"
    }
}

権限に対する変更

このセクションでは、Android 13 に対応した後のアプリに影響する、権限に対する変更について説明します。

バックグラウンド ボディセンサー権限

バックグラウンドで心拍数などの一般的なボディセンサーから情報を取得するには、BODY_SENSORS_BACKGROUND 権限をリクエストします。

詳しくは、ボディセンサー データへのバックグラウンドでのアクセスをリクエストするためのガイドをご覧ください。

正確なアラームの権限

正確な時刻のアラーム(別名: 正確なアラーム)を使用するにはUSE_EXACT_ALARM 権限か SCHEDULE_EXACT_ALARM 権限のいずれかを宣言する必要があります。

アラームアプリやカレンダー アプリなど、アプリのコア機能が正確なアラームに依存している場合を除き、不正確なアラームを使用してください。ほとんどのアプリは、不正確なアラームを使用してタスクやイベントのスケジュール設定を行えます。

詳しくは、正確なアラームを設定する方法をご覧ください。

きめ細かいメディア権限

アプリから他のアプリで作成されたメディア ファイルにアクセスする必要がある場合は、READ_EXTERNAL_STORAGE 権限ではなく、READ_MEDIA_* で始まる、きめ細かいメディア権限をリクエストする必要があります。以前にアプリに READ_EXTERNAL_STORAGE 権限を付与されていた場合は、必要なきめ細かいメディア権限が自動的に付与されます。

詳しくは、きめ細かいメディア権限をご覧ください。

アプリ コンポーネントとナビゲーションに対する変更

このセクションでは、Android 13 に対応した後のアプリに影響する、アプリ コンポーネントとナビゲーション動作の変更点をいくつか示します。

アプリ コンポーネントのエクスポート要件

インテント フィルタを使用するアクティビティやサービス、ブロードキャスト レシーバがアプリに含まれている場合は、該当のアプリ コンポーネントについて android:exported 属性を明示的に宣言する必要があります。

詳しくは、コンポーネントの安全なエクスポートをご覧ください。

ペンディング インテントの可変性を指定する

アプリ内の各 PendingIntent オブジェクトについて、それが可変か不変かを指定する必要があります。ほとんどの場合、インテント内でデータの整合性を確保するために、不変 PendingIntent オブジェクトを使用します。

詳しくは、ペンディング インテントの可変性を指定する方法をご覧ください。

フォアグラウンド サービスの起動に関する制限

ほとんどの場合、バックグラウンドで実行中のアプリはフォアグラウンド サービスを起動できません。

詳しくは、バックグラウンドからフォアグラウンド サービスを開始する場合の制限をご覧ください。

通知トランポリンの制限

ユーザーが通知に対して操作を行った後で、サービスまたはブロードキャスト レシーバ内で startActivity() を呼び出すことはできません。インタースティシャル アプリ コンポーネントなど、その機能がアクティビティの起動のみであるようなものを、通知トランポリンといいます。

詳しくは、通知トランポリンの制限をご覧ください。