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

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. ロックされている間は、プライベート スペース コンテナ内のアプリが検索などのメカニズムで表示または検出されないようにする必要があります。
  5. プライベート スペースのコンテナがロック解除されているときにユーザーがデバイスをロックした場合は、プライベート スペースのコンテナもロックする必要があります。

アプリストアのアプリ

プライベート スペースには、ユーザーのプライベート スペースにアプリをインストールする暗黙的インテントを起動する [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 では、より一貫性のある直感的なユーザー エクスペリエンスを実現するために、いくつかの変更が行われています。

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

Android 15 以降、予測型「戻る」アニメーションの開発者向けオプションは削除されています。ホームに戻る、タスク間、クロスアクティビティなどのシステム アニメーションは、全体またはアクティビティ レベルで予測型「戻る」ジェスチャーをオプトインしたアプリに表示されるようになりました。アプリが影響を受ける場合は、次のように対応します。

  • 予測型「戻る」ジェスチャーを使用するようにアプリが適切に移行されていることを確認します。
  • フラグメントの遷移が予測型「戻る」ナビゲーションと連携することを確認します。
  • アニメーションとフレームワークの遷移から移行し、代わりに Animator と androidx の遷移を使用してください。
  • FragmentManager が認識していないバックスタックから移行します。代わりに、FragmentManager または Navigation コンポーネントによって管理されるバックスタックを使用してください。

サポートの終了

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

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