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 设备)。如果您的应用直接或通过 SDK 间接使用任何 NDK 库,则需要重新构建应用,才能在这些 16 KB 设备上运行。
随着设备制造商不断制造出具有更大物理内存 (RAM) 的设备,许多此类设备将采用 16 KB(最终甚至更大)的页面大小来优化设备性能。添加对 16 KB 页面大小设备的支持,可让您的应用在这些设备上运行,并帮助您的应用受益于相关的性能改进。如果不重新编译,应用将无法在未来 Android 版本的 16 KB 设备上运行。
为帮助您为应用添加支持,我们提供了相关指南,介绍了如何检查应用是否受到影响、如何重新构建应用(如果适用),以及如何使用模拟器(包括 Android 模拟器的 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
广播注册接收器,并在私密空间容器的锁定或解锁状态发生变化时更新应用中的界面。这两种状态的广播都包含EXTRA_USER
,您的应用可以使用该常量来引用不公开个人资料的用户。您还可以使用
isQuietModeEnabled()
方法检查私密空间个人资料是否已锁定。
应用商店应用
私密空间包含一个“安装应用”按钮,用于启动隐式 intent 以将应用安装到用户的私密空间。为了让应用能够接收此隐式 intent,请在应用的清单文件中声明一个 <intent-filter>
,并将 <category>
设为 CATEGORY_APP_MARKET
。
PNG ベースの絵文字フォントを削除
The legacy, PNG-based emoji font file (NotoColorEmojiLegacy.ttf
) has been
removed, leaving just the vector-based file. Beginning with Android 13 (API
level 33), the emoji font file used by the system emoji renderer changed from a
PNG-based file to a vector based file. The system retained
the legacy font file in Android 13 and 14 for compatibility reasons, so that
apps with their own font renderers could continue to use the legacy font file
until they were able to upgrade.
To check if your app is affected, search your app's code for references to the
NotoColorEmojiLegacy.ttf
file.
You can choose to adapt your app in a number of ways:
- Use platform APIs for text rendering. You can render text to a bitmap-backed
Canvas
and use that to get a raw image if necessary. - Add COLRv1 font support to your app. The FreeType open source library supports COLRv1 in version 2.13.0 and higher.
- As a last resort, you can bundle the legacy emoji font file
(
NotoColorEmoji.ttf
) into your APK, although in that case your app will be missing the latest emoji updates. For more information, see the Noto Emoji GitHub project page.
最小ターゲット 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 では、すべてのアプリのカメラとメディアの動作に次の変更が加えられています。
リソース上限に達すると、直接再生とオフロード再生によって、以前に開いた直接オーディオ トラックまたはオフロード オーディオ トラックが無効になる
Android 15 より前は、別のアプリがオーディオを再生しているときにアプリが直接またはオフロードのオーディオ再生をリクエストし、リソースの上限に達した場合、アプリは新しい AudioTrack
を開けませんでした。
Android 15 以降、アプリが直接再生またはオフロード再生をリクエストし、リソースの上限に達すると、システムは現在開いている AudioTrack
オブジェクトを無効にし、新しいトラック リクエストを処理できなくなります。
(通常、直接オーディオ トラックとオフロード オーディオ トラックは、圧縮オーディオ形式の再生用に開かれます。直接オーディオを再生する一般的なユースケースには、HDMI 経由でテレビにエンコードされたオーディオをストリーミングするなどがあります。オフロード トラックは通常、ハードウェア DSP アクセラレーションを使用してモバイル デバイスで圧縮オーディオを再生するために使用されます)。
ユーザー エクスペリエンスとシステム UI
Android 15 には、より一貫性のある直感的なユーザー エクスペリエンスを実現するための変更が含まれています。
オプトインしたアプリで予測型「戻る」アニメーションが有効化
Android 15 以降では、予測型「戻る」アニメーションの開発者向けオプションが削除されました。予測型「戻る」ジェスチャーを有効にしているアプリ(アプリ全体またはアクティビティ レベルで有効にしている)では、ホームに戻る、タスクを切り替える、アクティビティを切り替えるなどのシステム アニメーションが表示されるようになりました。アプリが影響を受けている場合は、次の操作を行います。
- 予測型「戻る」ジェスチャーを使用するようにアプリが適切に移行されていることを確認します。
- フラグメント遷移が予測型「戻る」ナビゲーションと連携して動作することを確認します。
- アニメーションとフレームワークの遷移から移行し、代わりに Animator と androidx の遷移を使用します。
FragmentManager
が認識していないバックスタックから移行します。代わりに、FragmentManager
または Navigation コンポーネントによって管理されるバックスタックを使用します。
ユーザーがアプリを強制停止するとウィジェットが無効になる
Android 15 を搭載したデバイスでユーザーがアプリを強制停止すると、システムはアプリのすべてのウィジェットを一時的に無効にします。ウィジェットはグレー表示され、ユーザーは操作できません。これは、Android 15 以降では、アプリが強制停止されると、システムがアプリの保留中のインテントをすべてキャンセルするためです。
ユーザーが次回アプリを起動すると、これらのウィジェットが再度有効になります。
詳細については、パッケージの停止状態の変更をご覧ください。
メディア プロジェクションのステータスバー チップで、画面共有、キャスト、録画をユーザーに通知
画面投影の悪用は、デバイスの画面が共有されていることにユーザーが気付かないため、金融情報などの機密データが漏洩する可能性があります。
Android 15 QPR1 以降を搭載したデバイスで実行されているアプリの場合、進行中の画面投影をユーザーに知らせるために、ステータスバーに大きく目立つチップが表示されます。ユーザーはチップをタップして、画面の共有、キャスト、録画を停止できます。また、デバイスの画面がロックされると、画面投影は自動的に停止します。

检查您的应用是否受到影响
默认情况下,您的应用会包含状态栏条状标签,并会在锁定屏幕激活时自动暂停屏幕投影。
如需详细了解如何针对这些用例测试应用,请参阅状态栏条状标签和自动停止。
バックグラウンドでのネットワーク アクセスの制限
In Android 15, apps that start a network request outside of a valid process
lifecycle receive an exception. Typically, an
UnknownHostException
or other socket-related
IOException
. Network requests that happen outside of a valid lifecycle are
usually due to apps unknowingly continuing a network request even after the app
is no longer active.
To mitigate this exception, ensure your network requests are lifecycle aware and cancelled upon leaving a valid process lifecycle by using lifecycle aware components. If it is important that the network request should happen even when the user leaves the application, consider scheduling the network request using WorkManager or continue a user visible task using Foreground Service.
サポートの終了
リリースのたびに、特定の Android API が古くなったり、デベロッパー エクスペリエンスの向上や新しいプラットフォーム機能のサポートを目的としたリファクタリングが必要になったりすることがあります。このような場合、Android は古くなった API のサポートを正式に終了し、代わりに代替 API を使用するようデベロッパーに案内します。
サポートの終了とは、API の正式なサポートが終了したことを指しますが、デベロッパーは引き続きそうした API を利用できます。Android の今回のリリースでサポートが終了した API について詳しくは、サポート終了ページをご覧ください。