Android 15 プラットフォームには、アプリに影響する可能性がある動作変更が含まれています。下記の動作変更は、targetSdkVersion
に関係なく、Android 15 上で稼働するすべてのアプリに適用されます。該当する場合は、アプリをテストし、必要に応じて修正して、適切に対応する必要があります。
Android 15 をターゲットとするアプリにのみ影響する動作変更のリストも必ずご確認ください。
コア機能
Android 15 では、Android システムのさまざまなコア機能が変更または拡張されています。
パッケージの停止状態の変更
The intention of the package FLAG_STOPPED
state (which users
can engage in AOSP builds by long-pressing an app icon and selecting "Force
Stop") has always been to keep apps in this state until the user explicitly
removes the app from this state by directly launching the app or indirectly
interacting with the app (through the sharesheet or a widget, selecting the app
as live wallpaper, etc.). In Android 15, we've updated the behavior of the
system to be aligned with this intended behavior. Apps should only be removed
from the stopped state through direct or indirect user action.
To support the intended behavior, in addition to the existing restrictions, the
system also cancels all pending intents when the app enters the
stopped state on a device running Android 15. When the user's actions remove the
app from the stopped state, the ACTION_BOOT_COMPLETED
broadcast is delivered to the app providing an opportunity to re-register any
pending intents.
You can call the new
ApplicationStartInfo.wasForceStopped()
method to confirm whether the app was put into the stopped state.
16 KB ページサイズのサポート
これまで Android は 4 KB のメモリ ページサイズのみをサポートしており、Android デバイスが通常備えている合計メモリの平均量に合わせてシステム メモリのパフォーマンスを最適化してきました。Android 15 以降、AOSP は 16 KB のページサイズを使用するように構成されたデバイス(16 KB デバイス)をサポートしています。アプリが NDK ライブラリを直接的または SDK を介して間接的に使用している場合は、16 KB デバイスで動作するようにアプリを再ビルドする必要があります。
デバイス メーカーが物理メモリ(RAM)の容量が大きいデバイスを構築し続けるにつれて、これらのデバイスの多くは、デバイスのパフォーマンスを最適化するために 16 KB(最終的にはそれ以上)のページサイズを採用するようになります。16 KB ページサイズのデバイスのサポートを追加すると、アプリをこれらのデバイスで実行できるようになり、関連するパフォーマンスの改善のメリットをアプリで享受できるようになります。再コンパイルしないと、今後の Android リリースで 16 KB デバイスでアプリが動作しなくなります。
アプリのサポートを追加するにあたって、アプリが影響を受けるかどうかを確認する方法、アプリを再ビルドする方法(該当する場合)、エミュレータ(Android Emulator の Android 15 システム イメージを含む)を使用して 16 KB 環境でアプリをテストする方法に関するガイダンスをご用意しました。
メリットとパフォーマンスの向上
16 KB のページサイズで構成されたデバイスでは、平均でメモリ使用量が若干増加しますが、システムとアプリの両方でさまざまなパフォーマンスが向上します。
- システムのメモリ負荷が高いときのアプリ起動時間の短縮: 平均 3.16% 短縮、テストした一部のアプリでは大幅な改善(最大 30%)
- アプリ起動時の消費電力の削減: 平均 4.56% 削減
- カメラの起動が速くなる: ホット スタートが平均 4.48%、コールド スタートが平均 6.60% 高速化
- システムの起動時間の短縮: 平均で 8%(約 950 ミリ秒)短縮
これらの改善は初期テストに基づくものであり、実際のデバイスでの結果は異なる可能性があります。テストを継続する中で、アプリの潜在的な収益増加に関する追加の分析情報を提供していきます。
アプリが影響を受けるかどうかを確認する
アプリがネイティブ コードを使用している場合は、16 KB デバイスをサポートするようにアプリを再ビルドする必要があります。アプリがネイティブ コードを使用しているかどうか不明な場合は、APK Analyzer を使用してネイティブ コードが存在するかどうかを特定し、見つかった共有ライブラリの ELF セグメントのアライメントを確認できます。Android Studio には、配置の問題を自動的に検出するのに役立つ機能も用意されています。
ライブラリや SDK もすべて含めて、Java プログラミング言語または Kotlin で記述されたコードだけを使用しているアプリは、すでに 16 KB デバイスをサポートしています。ただし、アプリの動作に予期しない回帰がないことを確認するため、16 KB の環境でアプリをテストすることをおすすめします。
一部のアプリでプライベート スペースをサポートするために必要な変更
プライベート スペースは Android 15 の新機能で、ユーザーがデバイス上に独立した空間を作成し、追加の認証レイヤの配下に置いてプライベートなアプリを他人の目から守ることができます。プライベート スペース内のアプリの公開設定は制限されているため、一部のタイプのアプリでは、ユーザーのプライベート スペース内のアプリを表示して操作できるように、追加の手順を踏む必要があります。
すべてのアプリ
プライベート スペースのアプリは、仕事用プロファイルと同様に、個別のユーザー プロファイルに保存されるため、アプリは、メイン プロファイルにないアプリのコピーが仕事用プロファイルにあると想定すべきではありません。アプリに、この前提を置く仕事用プロファイル アプリに関連するロジックがある場合は、このロジックを調整する必要があります。
医療アプリ
ユーザーがプライベート スペースをロックすると、プライベート スペース内のすべてのアプリが停止し、通知の表示など、フォアグラウンド アクティビティやバックグラウンド アクティビティを実行できなくなります。この動作は、プライベート スペースにインストールされている医療アプリの使用と機能に重大な影響を与える可能性があります。
プライベート スペースの設定では、医療アプリからの通知の表示など、重要なフォアグラウンドまたはバックグラウンド アクティビティを実行する必要があるアプリにはプライベート スペースが適していないことをユーザーに警告します。ただし、アプリはプライベート スペースで使用されているかどうかを判断できないため、この場合、ユーザーに警告を表示することはできません。
そのため、医療アプリを開発している場合は、この機能がアプリに与える影響を検討し、アプリの重要な機能が中断されないように、プライベート スペースにアプリをインストールしないようユーザーに伝えるなど、適切な対応を講じてください。
ランチャー アプリ
ランチャー アプリを開発する場合は、プライベート スペース内のアプリを表示する前に、次の操作を行う必要があります。
- アプリは、デバイスのデフォルトのランチャー アプリとして割り当てられている必要があります。つまり、
ROLE_HOME
ロールを保持している必要があります。 - アプリでは、アプリのマニフェスト ファイルで
ACCESS_HIDDEN_PROFILES
通常権限を宣言する必要があります。
ACCESS_HIDDEN_PROFILES
権限を宣言するランチャー アプリは、次のプライベート スペースのユースケースに対応する必要があります。
- アプリには、プライベート スペースにインストールされているアプリ用の個別のランチャー コンテナが必要です。
getLauncherUserInfo()
メソッドを使用して、処理されているユーザー プロファイルのタイプを判断します。 - ユーザーはプライベート スペース コンテナを非表示または表示できる必要があります。
- ユーザーがプライベート スペース コンテナをロックおよびロック解除できる必要があります。
requestQuietModeEnabled()
メソッドを使用して、プライベート スペースをロック(true
を渡す)またはロック解除(false
を渡す)します。 ロックされている間は、プライベート スペース コンテナ内のアプリは、検索などのメカニズムによって表示されたり検出されたりしてはなりません。アプリは、
ACTION_PROFILE_AVAILABLE
ブロードキャストおよびACTION_PROFILE_UNAVAILABLE
ブロードキャストのレシーバーを登録し、プライベート スペース コンテナのロック状態またはロック解除状態が変更されたときにアプリの UI を更新する必要があります。これらのブロードキャストのどちらにもEXTRA_USER
が含まれており、アプリはこれを非公開プロファイル ユーザーの参照に使用できます。isQuietModeEnabled()
メソッドを使用して、プライベート スペース プロファイルがロックされているかどうかを確認することもできます。
アプリストアのアプリ
プライベート スペースには、ユーザーのプライベート スペースにアプリをインストールする暗黙的なインテントを起動する [アプリをインストール] ボタンがあります。アプリがこの暗黙的インテントを受け取るには、アプリのマニフェスト ファイルで <intent-filter>
を宣言し、<category>
を CATEGORY_APP_MARKET
に設定します。
PNG ベースの絵文字フォントを削除
従来の PNG ベースの絵文字フォント ファイル(NotoColorEmojiLegacy.ttf
)は削除され、ベクターベースのファイルのみが残されています。Android 13(API レベル 33)以降、システム 絵文字レンダラで使用される絵文字フォント ファイルは、PNG ベースのファイルからベクター ベースのファイルに変更されました。システムは互換性上の理由から、Android 13 と 14 で以前のフォント ファイルを保持しました。これにより、独自のフォント レンダラを持つアプリは、アップグレードできるまで以前のフォント ファイルを引き続き使用できました。
アプリが影響を受けているかどうかを確認するには、アプリのコードで NotoColorEmojiLegacy.ttf
ファイルへの参照を検索します。
アプリを適応させる方法はいくつかあります。
- テキストのレンダリングにはプラットフォーム API を使用します。テキストをビットマップ バックの
Canvas
にレンダリングし、必要に応じてそれを使用して未加工の画像を取得できます。 - アプリに COLRv1 フォント サポートを追加します。FreeType オープンソース ライブラリは、バージョン 2.13.0 以降で COLRv1 をサポートしています。
- 最後の手段として、以前の絵文字フォント ファイル(
NotoColorEmoji.ttf
)を APK にバンドルすることもできますが、その場合、アプリには最新の絵文字のアップデートが適用されません。詳しくは、Noto Emoji GitHub プロジェクトのページをご覧ください。
最小ターゲット SDK バージョンを 23 から 24 に引き上げ
Android 15 は、
Android 14 で行われた変更を
セキュリティをさらに強化できます。Android 15 では、
24 未満の targetSdkVersion
はインストールできません。
アプリが最新の API レベルを満たすことを必須にすることで、セキュリティと
プライバシーを保護する。
マルウェアはセキュリティとプライバシーをすり抜けるために、低い API レベルをターゲットにすることが多い
Android の上位バージョンで導入された保護機能。たとえば、一部のマルウェア アプリは、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
未満のアプリ
インストールしたままになります。
古い API レベルをターゲットとするアプリをテストする必要がある場合は、次の ADB コマンドを使用します。
adb install --bypass-low-target-sdk-block FILENAME.apk
セキュリティとプライバシー
Android 15 では、通知リスナー サービスと画面共有の保護強化に重点を置き、ワンタイム パスコード(OTP)の不正行為に対処し、ユーザーの機密コンテンツを保護するための堅牢な対策が導入されています。主な機能強化には、信頼できないアプリがアクセスできる通知から OTP を削除する、画面共有中に通知を非表示にする、OTP が投稿されたときにアプリ アクティビティを保護するなどがあります。これらの変更は、ユーザーの機密コンテンツを不正な行為者から保護することを目的としています。
アプリが Android 15 の変更に対応できるようにするには、デベロッパーは以下の点に注意する必要があります。
OTP の除去
Android では、NotificationListenerService
を実装する信頼できないアプリが、OTP が検出された通知から未修正のコンテンツを読み取ることを禁止します。コンパニオン デバイス管理アプリの関連付けなどの信頼できるアプリは、これらの制限の対象外です。
画面共有の保護
- ユーザーのプライバシーを保護するため、画面共有セッション中は通知の内容は表示されません。アプリが
setPublicVersion()
を実装している場合、Android は、安全でないコンテキストで置換通知として機能する通知の公開版を表示します。それ以外の場合、通知の内容は編集され、コンテキストは表示されません。 - パスワード入力などの機密情報は、リモート ビューアに対して非表示になり、ユーザーの機密情報が漏洩するのを防ぎます。
- 画面共有中に OTP が検出されたアプリから通知が送信されたアクティビティは非表示になります。アプリのコンテンツは、起動時にリモート ビューアには表示されません。
- Android が機密性の高いフィールドを自動的に識別するだけでなく、デベロッパーは
setContentSensitivity
を使用してアプリの一部を手動で機密性の高いものとしてマークできます。このマークは、画面共有中にリモート ビューアから非表示になります。 - デベロッパーは、[開発者向けオプション] で [画面共有の保護を無効にする] オプションを切り替えて、デモやテスト目的で画面共有の保護から除外できます。デフォルトのシステム画面レコーダーは、録画がデバイス上に残るため、これらの変更の対象外です。
カメラとメディア
Android 15 では、すべてのアプリのカメラとメディアの動作に次の変更が加えられています。
リソース上限に達すると、直接再生とオフロード再生によって、以前に開いた直接オーディオ トラックまたはオフロード オーディオ トラックが無効になる
Before Android 15, if an app requested direct or offload audio playback while
another app was playing audio and the resource limits were reached, the app
would fail to open a new AudioTrack
.
Beginning with Android 15, when an app requests direct or offload
playback and the resource
limits are reached, the system invalidates any currently open
AudioTrack
objects which prevent fulfilling the new track request.
(Direct and offload audio tracks are typically opened for playback of compressed audio formats. Common use-cases for playing direct audio include streaming encoded audio over HDMI to a TV. Offload tracks are typically used to play compressed audio on a mobile device with hardware DSP acceleration.)
ユーザー エクスペリエンスとシステム UI
Android 15 には、より一貫性のある直感的なユーザー エクスペリエンスを実現するための変更が含まれています。
オプトインしたアプリで予測型「戻る」アニメーションが有効化
Android 15 以降では、予測型「戻る」アニメーションの開発者向けオプションが削除されました。予測型「戻る」ジェスチャーを有効にしているアプリ(アプリ全体またはアクティビティ レベルで有効にしている)では、ホームに戻る、タスクを切り替える、アクティビティを切り替えるなどのシステム アニメーションが表示されるようになりました。アプリが影響を受けている場合は、次の操作を行います。
- 予測型「戻る」ジェスチャーを使用するようにアプリが適切に移行されていることを確認します。
- フラグメント遷移が予測型「戻る」ナビゲーションと連携して動作することを確認します。
- アニメーションとフレームワークの遷移から移行し、代わりに Animator と androidx の遷移を使用します。
FragmentManager
が認識していないバックスタックから移行します。代わりに、FragmentManager
または Navigation コンポーネントによって管理されるバックスタックを使用します。
ユーザーがアプリを強制停止するとウィジェットが無効になる
Android 15 を搭載したデバイスでユーザーがアプリを強制停止すると、システムはアプリのすべてのウィジェットを一時的に無効にします。ウィジェットはグレー表示され、ユーザーは操作できません。これは、Android 15 以降では、アプリが強制停止されると、システムがアプリの保留中のインテントをすべてキャンセルするためです。
ユーザーが次回アプリを起動すると、これらのウィジェットが再度有効になります。
詳細については、パッケージの停止状態の変更をご覧ください。
メディア プロジェクションのステータスバー チップで、画面共有、キャスト、録画をユーザーに通知
画面投影の悪用は、デバイスの画面が共有されていることにユーザーが気付かないため、金融情報などの機密データが漏洩する可能性があります。
Android 15 QPR1 以降を搭載したデバイスで実行されているアプリの場合、進行中の画面投影をユーザーに知らせるために、ステータスバーに大きく目立つチップが表示されます。ユーザーはチップをタップして、画面の共有、キャスト、録画を停止できます。また、デバイスの画面がロックされると、画面投影は自動的に停止します。

Check if your app is impacted
By default, your app includes the status bar chip and automatically suspends screen projection when the lock screen activates.
To learn more about how to test your app for these use cases, see Status bar chip and auto stop.
バックグラウンドでのネットワーク アクセスの制限
Android 15 では、有効なプロセス ライフサイクルの外部でネットワーク リクエストを開始するアプリは例外を受け取ります。通常は、UnknownHostException
またはその他のソケット関連の IOException
です。有効なライフサイクルの外部で発生するネットワーク リクエストは、通常、アプリがアクティブでなくなった後も、アプリがネットワーク リクエストを認識せずに続行しているために発生します。
この例外を軽減するには、ライフサイクル対応コンポーネントを使用して、ネットワーク リクエストがライフサイクルに対応し、有効なプロセス ライフサイクルを終了したときにキャンセルされるようにします。ユーザーがアプリを終了してもネットワーク リクエストを実行することが重要である場合は、WorkManager を使用してネットワーク リクエストのスケジュール設定を検討するか、フォアグラウンド サービスを使用してユーザーに表示されるタスクを続行します。
サポートの終了
リリースのたびに、特定の Android API が古くなったり、デベロッパー エクスペリエンスの向上や新しいプラットフォーム機能のサポートを目的としたリファクタリングが必要になったりすることがあります。このような場合、Android は古くなった API のサポートを正式に終了し、代わりに代替 API を使用するようデベロッパーに案内します。
サポートの終了とは、API の正式なサポートが終了したことを指しますが、デベロッパーは引き続きそうした API を利用できます。Android の今回のリリースでサポートが終了した API について詳しくは、サポート終了ページをご覧ください。