動作の変更点: Android 16 以上をターゲットとするアプリ

これまでのリリースと同様、Android 16 には、アプリに影響する可能性がある動作変更が含まれています。下記の動作変更は、Android 16 以上をターゲットとするアプリにのみ適用されます。アプリが Android 16 以上をターゲットとする場合は、必要に応じてアプリを変更し、下記の動作に適切に対応できるようにしてください。

アプリの targetSdkVersion に関係なく、Android 16 で実行されるすべてのアプリに影響する動作変更のリストも必ずご確認ください。

ユーザー エクスペリエンスとシステム UI

Android 16 には、より一貫性があり直感的なユーザー エクスペリエンスを実現するための以下の変更が含まれています。

エッジ ツー エッジのオプトアウトの廃止

Android 15(API レベル 35)をターゲットとするアプリに対して、Android 15 ではエッジツーエッジが強制適用されますが、R.attr#windowOptOutEdgeToEdgeEnforcementtrue に設定することで、アプリでオプトアウトできます。Android 16 をターゲットとするアプリの場合、R.attr#windowOptOutEdgeToEdgeEnforcement は非推奨で無効になっています。アプリでエッジツーエッジをオプトアウトすることはできません。

Android 16 ベータ版 2 でテストする場合は、アプリがエッジツーエッジをサポートしていることを確認し、R.attr#windowOptOutEdgeToEdgeEnforcement の使用をすべて削除してください。エッジツーエッジをサポートするには、Composeビューのガイダンスをご覧ください。懸念事項については、フィードバック ページの Issue Tracker でお知らせください。

予測型「戻る」に移行またはオプトアウトが必要

Android 16 以降をターゲットとし、Android 16 以降のデバイスで実行されるアプリの場合、予測型「戻る」システム アニメーション(ホームに戻る、タスク間、アクティビティ間)はデフォルトで有効になっています。また、onBackPressed は呼び出されず、KeyEvent.KEYCODE_BACK はディスパッチされなくなります。

アプリが「戻る」イベントをインターセプトしていて、予測型「戻る」にまだ移行していない場合は、サポートされている「戻る」ナビゲーション API を使用するようにアプリを更新するか、アプリの AndroidManifest.xml ファイルの <application> タグまたは <activity> タグで android:enableOnBackInvokedCallback 属性を false に設定して、一時的にオプトアウトします。

予測型「戻る」アニメーション。
予測型のクロス アクティビティ アニメーション。
予測型のクロスタスク アニメーション。

Elegant フォント API の非推奨と無効化

Android 15(API レベル 35)をターゲットとするアプリでは、elegantTextHeight TextView 属性がデフォルトで true に設定されているため、コンパクト フォントが読みやすくなっています。elegantTextHeight 属性を false に設定すると、これをオーバーライドできます。

Android 16 では elegantTextHeight 属性のサポートが終了し、アプリが Android 16 をターゲットとすると、この属性は無視されます。これらの API によって制御される「UI フォント」は廃止されるため、アラビア語、ラオス語、ミャンマー語、タミル語、グジャラート語、カンナダ語、マラヤーラム語、オディア語、テルグ語、タイ語でテキストのレンダリングが将来にわたって一貫して行われるように、レイアウトを調整する必要があります。

Android 14(API レベル 34)以前をターゲットとするアプリ、または elegantTextHeight 属性を false に設定してデフォルトをオーバーライドした Android 15(API レベル 35)をターゲットとするアプリの
elegantTextHeight の動作。
Android 16 をターゲットとするアプリ、または elegantTextHeight 属性を false に設定してデフォルトをオーバーライドしなかった Android 15(API レベル 35)をターゲットとするアプリの elegantTextHeight の動作。

コア機能

Android 16 には、Android システムのさまざまなコア機能を変更または拡張する次の変更が含まれています。

固定レートの勤務スケジュールの最適化

Android 16 をターゲットとする前は、scheduleAtFixedRate が有効なプロセス ライフサイクルの外部にあるためにタスクの実行を逃した場合、アプリが有効なライフサイクルに戻ると、逃した実行がすべて直ちに実行されました。

Android 16 をターゲットとしている場合、アプリが有効なライフサイクルに戻ると、scheduleAtFixedRate の実行が最大 1 回スキップされた場合、その実行が直ちに実行されます。この動作変更により、アプリのパフォーマンスが向上することが期待されます。アプリでこの動作をテストして、アプリが影響を受けているかどうかを確認します。アプリ互換性フレームワークを使用して STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS 互換性フラグを有効にしてテストすることもできます。

デバイスのフォーム ファクタ

Android 16 では、大画面デバイスに表示されるアプリについて、次の変更が加えられています。

アダプティブ レイアウト

Android アプリは、さまざまなデバイス(スマートフォン、タブレット、折りたたみ式デバイス、デスクトップ、自動車、テレビなど)と大画面のウィンドウ モード(分割画面やデスクトップ ウィンドウなど)で実行されるため、デベロッパーは、デバイスの向きに関係なく、あらゆる画面とウィンドウ サイズに適応する Android アプリを構築する必要があります。画面の向きやサイズ変更の制限などのパラダイムは、今日のマルチデバイスの世界では制限が厳しすぎます。

画面の向き、サイズ変更、アスペクト比の制限を無視する

Android 16 をターゲットとするアプリの場合、Android 16 では、システムが向き、サイズ変更、アスペクト比の制限を管理する方法が変更されています。最小幅が 600dp 以上のディスプレイでは、この制限は適用されなくなります。また、アプリは、アスペクト比やユーザーが選択した画面の向きに関係なく、ディスプレイ ウィンドウ全体に表示されます。ピラーボックス表示は使用されません。

この変更により、新しい標準のプラットフォーム動作が導入されます。Android は、アプリがさまざまな画面の向き、表示サイズ、アスペクト比に適応することが期待されるモデルに移行しています。固定の画面の向きやサイズ変更の制限などの制約は、アプリの適応性を妨げるため、可能な限り優れたユーザー エクスペリエンスを提供するために、アプリを適応性のあるものにすることをおすすめします。

この動作は、[アプリ互換性フレームワーク][a16-kilo-14] を使用して UNIVERSAL_RESIZABLE_BY_DEFAULT 互換性フラグを有効にすることでもテストできます。

一般的な破壊的変更

向き、サイズ変更、アスペクト比の制限を無視すると、一部のデバイスでアプリの UI に影響する可能性があります。特に、縦向きでロックされた小さなレイアウト用に設計された要素に影響する可能性があります。たとえば、レイアウトの引き伸ばし、画面外のアニマーションやコンポーネントなどの問題が発生する可能性があります。アスペクト比や画面の向きについて想定すると、アプリの視覚的な問題が発生する可能性があります。これらの問題を回避し、アプリの適応型動作を改善する方法について詳細をご覧ください。

デバイスの回転を許可すると、アクティビティの再作成が増え、適切に保存されない場合、ユーザーの状態が失われる可能性があります。UI の状態を正しく保存する方法については、UI の状態を保存するをご覧ください。

実装の詳細

次のマニフェスト属性とランタイム API は、大画面デバイスで全画面モードとマルチウィンドウ モードの両方で無視されます。

screenOrientationsetRequestedOrientation()getRequestedOrientation() の次の値は無視されます。

  • portrait
  • reversePortrait
  • sensorPortrait
  • userPortrait
  • landscape
  • reverseLandscape
  • sensorLandscape
  • userLandscape

ディスプレイのサイズ変更に関しては、android:resizeableActivity="false"android:minAspectRatioandroid:maxAspectRatio は効果がありません。

Android 16 をターゲットとするアプリの場合、デフォルトでは、大画面でアプリの向き、サイズ変更、アスペクト比の制約は無視されますが、完全に準備ができていないすべてのアプリは、オプトアウトすることでこの動作を一時的にオーバーライドできます(これにより、互換モードに置かれるという以前の動作になります)。

例外

Android 16 の画面の向き、サイズ変更、アスペクト比の制限は、次の状況では適用されません。

  • ゲーム(android:appCategory フラグに基づく)
  • ユーザーがデバイスのアスペクト比設定でアプリのデフォルトの動作を明示的に有効にしている
  • sw600dp より小さい画面

一時的にオプトアウトする

特定のアクティビティをオプトアウトするには、PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY マニフェスト プロパティを宣言します。

<activity ...>
  <property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
  ...
</activity>

アプリの多くの部分が Android 16 に対応していない場合は、アプリケーション レベルで同じプロパティを適用して、完全にオプトアウトできます。

<application ...>
  <property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
</application>

健康&フィットネス

Android 16 では、健康とフィットネスのデータに関連する次の変更が加えられています。

健康とフィットネスの権限

Android 16 以降をターゲットとするアプリの場合、BODY_SENSORS 権限は、ヘルスコネクトでも使用される android.permissions.health のきめ細かい権限に移行されます。以前 BODY_SENSORS または BODY_SENSORS_BACKGROUND を必要としていた API には、対応する android.permissions.health 権限が必要になります。これは、次のデータ型、API、フォアグラウンド サービス タイプに影響します。

アプリがこれらの API を使用している場合は、それぞれ詳細な権限をリクエストする必要があります。

これらの権限は、健康、フィットネス、ウェルネス データ用の Android データストアである ヘルスコネクトからのデータの読み取りアクセスを保護する権限と同じです。