動作の変更点: すべてのアプリ

Android 15 プラットフォームには、アプリに影響する可能性がある動作変更が含まれています。以下の動作変更は、targetSdkVersion に関係なく、Android 15 で実行されるすべてのアプリに適用されます。該当する場合は、アプリをテストし、必要に応じて修正して、適切に対応してください。

Android 15 をターゲットとするアプリにのみ影響する動作変更のリストも必ずご確認ください。

コア機能

Android 15 では、Android システムのさまざまなコア機能を変更または拡張しています。

パッケージ停止状態の変更

パッケージ FLAG_STOPPED 状態(ユーザーがアプリアイコンを長押しして [強制停止] を選択することで AOSP ビルドを開始できる状態)の目的は、ユーザーがアプリを直接起動するか、(共有シートまたはウィジェットを介して、アプリをライブ壁紙としてアプリを選択などして)間接的に操作して、この状態からアプリを明示的に削除するまで、アプリをこの状態に保つことです。Android 15 では、この意図された動作に合わせてシステムの動作を更新しています。アプリは、直接または間接のユーザー操作によってのみ、停止状態から解除する必要があります。

意図した動作をサポートするために、Android 15 を搭載したデバイスでアプリが停止状態になると、既存の制限に加えて、システムは保留中のインテントもすべてキャンセルします。ユーザーの操作によってアプリが停止状態を解除すると、ACTION_BOOT_COMPLETED ブロードキャストがアプリに配信され、保留中のインテントを再登録する機会が提供されます。

新しい ApplicationStartInfo.wasForceStopped() メソッドを呼び出すと、アプリが停止状態に入ったかどうかを確認できます。

16 KB ページサイズのサポート

従来、Android は 4 KB のメモリページサイズのみをサポートしていました。そのため、システムメモリのパフォーマンスは、Android デバイスの通常の合計メモリ量の平均に合わせて最適化されていました。Android 15 以降では、ページサイズが 16 KB(16 KB のデバイス)を使用するように構成されているデバイスがサポートされています。

デバイス メーカーは、引き続き大容量の物理メモリ(RAM)を搭載したデバイスを開発しています。そのため、これらのデバイスの多くは、デバイスのパフォーマンスを最適化するために、16 KB(最終的にはより大きなページサイズ)に設定されます。16 KB デバイスのサポートを追加すると、これらのデバイスでアプリを実行できるようになり、関連するパフォーマンスの向上によるメリットが得られます。そのために、アプリが影響を受けるかどうかを確認する方法アプリを再ビルドする方法(該当する場合)、エミュレータと実機の両方を使用して 16 KB の環境でアプリをテストする方法に関するガイダンスを提供しています。

メリットとパフォーマンスの向上

ページサイズが 16 KB に設定されたデバイスは、平均でわずかに多くのメモリを使用しますが、システムとアプリの両方でさまざまなパフォーマンスの向上が得られます。

  • システムがメモリ不足の状況にあるときのアプリの起動時間が短縮: 平均で 3.16% 短縮され、テストした一部のアプリでは大幅な改善(最大 30%)を達成
  • アプリ起動時の消費電力の削減: 平均 4.56% を削減
  • カメラの起動の高速化: ホットスタートが平均 4.48% 高速化、コールド スタートが平均 6.60% 高速化
  • システムの起動時間の改善: 平均 1.5%(約 0.8 秒)改善

これらの改善は初期テストに基づくため、実際のデバイスでの結果とは異なる可能性があります。Google はテストを継続し、アプリの潜在的な利点に関して追加の分析を提供します。

アプリが影響を受けるかどうかを確認する

アプリでネイティブ コードを使用している場合は、16 KB デバイスをサポートするようにアプリを再ビルドする必要があります。アプリがネイティブ コードを使用しているかどうか不明な場合は、APK Analyzer を使用して、ネイティブ コードが存在するかどうかを確認できます。

すべてのライブラリや SDK を含め、Java プログラミング言語または Kotlin で記述されたコードのみを使用しているアプリの場合、すでに 16 KB のデバイスをサポートしています。それでも、16 KB 環境でアプリをテストし、アプリの動作に予期しない回帰がないことを確認することをおすすめします。

プライベート スペースをサポートするために一部のアプリで必要な変更

プライベート スペースは Android 15 の新機能です。ユーザーは、追加の認証レイヤの下で、機密性の高いアプリをのぞき見されないようにする独立したスペースをデバイス上に作成できます。プライベート スペース内のアプリの公開設定は制限されているため、一部のタイプのアプリでは、ユーザーのプライベート スペース内のアプリを表示して操作できるようにするために、追加の手順が必要になります。

すべてのアプリ

プライベート スペース内のアプリは、仕事用プロファイルと同様に、別のユーザー プロファイルに保存されるため、メイン プロファイルにないアプリのインストール コピーが仕事用プロファイルに含まれていると見なすことはできません。アプリに、仕事用プロファイルのアプリに関連するロジックでこのような関係があると想定される場合は、このロジックを調整する必要があります。

ランチャー アプリ

ランチャー アプリを開発する場合、プライベート スペースのアプリを表示するには、以下を行う必要があります。

  1. アプリが、デバイスのデフォルトのランチャー アプリとして割り当てられている(つまり、ROLE_HOME ロールを持っている)必要があります。
  2. アプリは、アプリのマニフェスト ファイルACCESS_HIDDEN_PROFILES の標準の権限を宣言する必要があります。

ACCESS_HIDDEN_PROFILES 権限を宣言するランチャー アプリは、次のプライベート スペースのユースケースに対応する必要があります。

  1. アプリには、プライベート スペースにインストールされたアプリ用の個別のランチャー コンテナが必要です。
  2. ユーザーは、プライベート スペースのコンテナの表示と非表示を切り替えられる必要があります。
  3. ユーザーがプライベート スペースのコンテナのロックとロック解除を行える必要があります。
  4. ロックされている間は、プライベート スペース コンテナ内のアプリが検索などのメカニズムで表示または検出されないようにする必要があります。

アプリストアのアプリ

プライベート スペースには、ユーザーのプライベート スペースにアプリをインストールする暗黙的インテントを起動する [Install Apps] ボタンがあります。アプリがこの暗黙的インテントを受け取るには、アプリのマニフェスト ファイルで <intent-filter> を宣言し、<category>CATEGORY_APP_MARKET を指定します。

最小対象 SDK バージョンを 23 から 24 に引き上げ

Android 15 では、Android 14 で行われた変更に基づき、このセキュリティがさらに拡張されています。Android 15 では、targetSdkVersion が 24 未満のアプリはインストールできません。アプリが最新の API レベルを満たすことを必須にすることで、セキュリティとプライバシーを強化できます。

マルウェアは多くの場合、上位の Android バージョンで導入されたセキュリティとプライバシー保護を回避するために、下位の API レベルをターゲットにします。たとえば、一部のマルウェア アプリは、2015 年に Android 6.0 Marshmallow(API レベル 23)で導入された実行時の権限モデルの対象にならないよう、22 の targetSdkVersion を使用します。この Android 15 の変更により、マルウェアがセキュリティとプライバシーの改善を回避することが難しくなります。下位の API レベルをターゲットとするアプリをインストールしようとすると、インストールが失敗し、Logcat に次のようなメッセージが表示されます。

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7

Android 15 にアップグレードするデバイスでは、targetSdkVersion が 24 未満のアプリはインストールされたままになります。

古い API レベルをターゲットとするアプリをテストする必要がある場合は、次の ADB コマンドを使用します。

adb install --bypass-low-target-sdk-block FILENAME.apk

カメラとメディア

Android 15 では、すべてのアプリのカメラとメディアの動作が次のように変更されています。

直接再生とオフロード音声再生で、リソースの上限に達すると、以前開いていたダイレクト トラックまたはオフロード オーディオ トラックが無効になるようになりました

Android 15 より前では、アプリが音声を再生しているときに、アプリが音声再生の直接またはオフロードをリクエストし、リソース制限に達した場合、アプリは新しい AudioTrack を開くことができませんでした。

Android 15 以降では、アプリがダイレクト再生またはオフロード再生をリクエストし、リソースの上限に達すると、現在開いている AudioTrack オブジェクトがすべて無効になり、新しいトラック リクエストを実行できなくなります。

(通常、ダイレクト オーディオ トラックとオフロード オーディオ トラックは圧縮音声形式の再生用に開きます。ダイレクト オーディオを再生する一般的なユースケースとして、エンコードされたオーディオを HDMI 経由でテレビにストリーミングすることがあります。オフロード トラックは通常、ハードウェア DSP アクセラレーションを備えたモバイル デバイスで圧縮音声を再生するために使用されます)。

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

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

予測型「戻る」アニメーションをオプトインしたアプリで有効にする

Beginning in Android 15, the developer option for predictive back animations has been removed. System animations such as back-to-home, cross-task, and cross-activity now appear for apps that have opted in to the predictive back gesture either entirely or at an activity level. If your app is affected, take the following actions:

  • Ensure that your app has been properly migrated to use the predictive back gesture.
  • Ensure that your fragment transitions work with predictive back navigation.
  • Migrate away from animation and framework transitions and use animator and androidx transitions instead.
  • Migrate away from back stacks that FragmentManager doesn't know about. Use back stacks managed by FragmentManager or by the Navigation component instead.

ユーザーがアプリを強制停止したときにウィジェットが無効になる

Android 15 を搭載したデバイスでユーザーがアプリを強制停止すると、そのアプリのウィジェットがすべて一時的に無効になります。ウィジェットはグレー表示され、ユーザーは操作できません。これは、Android 15 以降、アプリが強制停止されると、システムがアプリのペンディング インテントをすべてキャンセルするためです。

ウィジェットは、ユーザーが次にアプリを起動したときに、再び有効になります。

詳しくは、パッケージ停止状態の変更をご覧ください。

サポートの終了

リリースのたびに、特定の Android API が古くなったり、デベロッパー エクスペリエンスの向上や新しいプラットフォーム機能のサポートのためにリファクタリングされたりすることがあります。このような場合は、古い API を正式に非推奨とし、代わりに使用できる代替 API をデベロッパーに案内します。

非推奨とは、API の公式サポートを終了したことを指しますが、デベロッパーは引き続き API を使用できます。Android のこのリリースにおける主な非推奨については、非推奨に関するページをご覧ください。