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 以降、AOSP は 16 KB(16 KB)のページサイズを使用するように設定されているデバイス 。アプリで NDK ライブラリを直接使用している場合は、 または SDK を介して間接的に行う場合、アプリを再ビルドして 16 KB のデバイスで使用できます。
デバイス メーカーは次々と、より多くのデバイスで 物理メモリ(RAM)に加え、これらのデバイスの多くに 16 KB( ページサイズを拡大して、デバイスのパフォーマンスを最適化します。追加しています 16 KB ページサイズのデバイスをサポートしているため、アプリはこれらの 関連するパフォーマンスの恩恵をアプリに提供するため 改善されています。16 KB デバイスでは、再コンパイルしないとアプリが動作しない可能性があります 将来の Android リリースで製品化される際の要件です。
アプリのサポートを追加できるように、 アプリが影響を受ける場合は、 アプリを再構築し(該当する場合)、アプリをテスト エミュレータ(Android 15 を含む)を使用した 16 KB 環境 Android Emulator 用のシステム イメージ)を作成します。
优势和性能提升
16 KB のページサイズで構成されたデバイスでは、平均でメモリ使用量が若干増加しますが、システムとアプリの両方でさまざまなパフォーマンスが向上します。
- システムのメモリ負荷が高いときのアプリ起動時間の短縮: 平均 3.16% 短縮、テストした一部のアプリでは大幅な改善(最大 30%)
- アプリ起動時の消費電力の削減: 平均 4.56% 削減
- カメラの起動が速くなる: ホット スタートが平均 4.48%、コールド スタートが平均 6.60% 高速化
- システムの起動時間の短縮: 平均で 8%(約 950 ミリ秒)短縮
これらの改善は初期テストに基づくものであり、実際のデバイスでの結果は異なる可能性があります。テストを継続する中で、アプリの潜在的な収益増加に関する追加の分析情報を提供していきます。
检查您的应用是否受到影响
アプリがネイティブ コードを使用している場合は、16 KB デバイスをサポートするようにアプリを再ビルドする必要があります。アプリがネイティブ コードを使用しているかどうか不明な場合は、APK アナライザを使用してネイティブ コードが存在するかどうかを特定し、検出された共有ライブラリの ELF セグメントの配置をチェックします。
ライブラリや SDK もすべて含めて、Java プログラミング言語または Kotlin で記述されたコードだけを使用しているアプリは、すでに 16 KB デバイスをサポートしています。ただし、16 KB 環境でアプリをテストし、アプリの動作に予期しないリグレッションがないことを確認することをおすすめします。
一部のアプリがプライベート スペースに対応するために必要な変更
Private space is a new feature in Android 15 that lets users create a separate space on their device where they can keep sensitive apps away from prying eyes, under an additional layer of authentication. Because apps in the private space have restricted visibility, some types of apps need to take additional steps to be able to see and interact with apps in a user's private space.
All apps
Because apps in the private space are kept in a separate user profile, similar to work profiles, apps shouldn't assume that any installed copies of their app that aren't in the main profile are in the work profile. If your app has logic related to work profile apps that make this assumption, you'll need to adjust this logic.
Medical apps
When a user locks the private space, all apps in the private space are stopped, and those apps can't perform foreground or background activities, including showing notifications. This behavior might critically impact the use and function of medical apps installed in the private space.
The private space setup experience warns users that the private space is not suitable for apps that need to perform critical foreground or background activities, such as showing notifications from medical apps. However, apps can't determine whether or not they're being used in the private space, so they can't show a warning to the user for this case.
For these reasons, if you develop a medical app, review how this feature might impact your app and take appropriate actions—such as informing your users not to install your app in the private space—to avoid disrupting critical app capabilities.
Launcher apps
If you develop a launcher app, you must do the following before apps in the private space will be visible:
- Your app must be assigned as the default launcher app for the device—that
is, possessing the
ROLE_HOME
role. - Your app must declare the
ACCESS_HIDDEN_PROFILES
normal permission in your app's manifest file.
Launcher apps that declare the ACCESS_HIDDEN_PROFILES
permission must handle
the following private space use cases:
- Your app must have a separate launcher container for apps installed in the
private space. Use the
getLauncherUserInfo()
method to determine which type of user profile is being handled. - The user must be able to hide and show the private space container.
- The user must be able to lock and unlock the private space container. Use
the
requestQuietModeEnabled()
method to lock (by passingtrue
) or unlock (by passingfalse
) the private space. While locked, no apps in the private space container should be visible or discoverable through mechanisms such as search. Your app should register a receiver for the
ACTION_PROFILE_AVAILABLE
andACTION_PROFILE_UNAVAILABLE
broadcasts and update the UI in your app when the locked or unlocked state of the private space container changes. Both of these broadcasts includeEXTRA_USER
, which your app can use to refer to the private profile user.You can also use the
isQuietModeEnabled()
method to check whether the private space profile is locked or not.
App store apps
The private space includes an "Install Apps" button that launches an implicit
intent to install apps into the user's private space. In order for your app to
receive this implicit intent, declare an <intent-filter>
in your app's manifest file with a <category>
of
CATEGORY_APP_MARKET
.
PNG ベースの絵文字フォントが削除されました
我们移除了基于 PNG 的旧版表情符号字体文件 (NotoColorEmojiLegacy.ttf
),只保留了基于矢量的文件。从 Android 13(API 级别 33)开始,系统表情符号渲染程序使用的表情符号字体文件已从基于 PNG 的文件更改为基于矢量的文件。出于兼容性原因,系统在 Android 13 和 14 中保留了旧版字体文件,以便具有自己的字体渲染程序的应用在能够升级之前继续使用旧版字体文件。
如需检查您的应用是否受到影响,请在应用的代码中搜索对 NotoColorEmojiLegacy.ttf
文件的引用。
您可以通过多种方式自适应应用:
- 使用平台 API 进行文本渲染。您可以将文本渲染到基于位图的
Canvas
,并在必要时使用该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 では、すべてのアプリのカメラとメディアの動作に次の変更が加えられます。
リソースの上限に達すると、直接再生とオフロード再生で、以前に開いた直接再生またはオフロード再生の音声トラックが無効になる
在 Android 15 之前,如果某个应用在另一个应用播放音频且达到资源限制时请求直接或分流音频播放,该应用将无法打开新的 AudioTrack
。
从 Android 15 开始,当应用请求直接播放或分流播放且达到资源限制时,系统会使任何当前打开的 AudioTrack
对象失效,以防止执行新轨道请求。
(直接音轨和分流音轨通常会打开,以播放压缩音频格式。播放直接音频的常见用例包括通过 HDMI 将编码的音频流式传输到电视。分流轨道通常用于在具有硬件 DSP 加速的移动设备上播放压缩音频。)
ユーザー エクスペリエンスとシステム UI
Android 15 には、より一貫性があり直感的なユーザー エクスペリエンスを実現するための変更がいくつか含まれています。
オプトインしたアプリで予測型「戻る」アニメーションが有効
Android 15 以降では、予測型「戻る」アニメーションの開発者向けオプションが削除されました。予測型「戻る」ジェスチャーを有効にしているアプリ(アプリ全体またはアクティビティ レベルで有効にしている)では、ホームに戻る、タスクを切り替える、アクティビティを切り替えるなどのシステム アニメーションが表示されるようになりました。アプリが影響を受けている場合は、次の操作を行います。
- 予測型「戻る」ジェスチャーを使用するようにアプリが適切に移行されていることを確認します。
- フラグメント遷移が予測型「戻る」ナビゲーションと連携して動作することを確認します。
- アニメーションとフレームワークの遷移から移行し、代わりに Animator と androidx の遷移を使用します。
FragmentManager
が認識していないバックスタックから移行します。代わりに、FragmentManager
または Navigation コンポーネントによって管理されるバックスタックを使用します。
ユーザーがアプリを強制停止したときにウィジェットが無効になる
如果用户在搭载 Android 15 的设备上强制停止应用,系统会暂时停用该应用的所有微件。这些 widget 会灰显,用户无法与其互动。这是因为,从 Android 15 开始,当系统强制停止应用时,会取消应用的所有待处理 intent。
系统会在用户下次启动应用时重新启用这些微件。
如需了解详情,请参阅对软件包停止状态的更改。
メディア プロジェクションのステータスバー チップで、画面共有、キャスト、録画についてユーザーに通知
屏幕投影漏洞会泄露用户的私密数据(例如财务信息),因为用户不知道自己的设备屏幕正在共享。
对于搭载 Android 15 QPR1 或更高版本的设备上运行的应用,系统会在状态栏中显示一个醒目的大条状标签,以提醒用户正在进行的任何屏幕投影。用户可以点按该条状标签,停止共享、投放或录制其屏幕。此外,当设备屏幕锁定时,屏幕投影会自动停止。

アプリが影響を受けるかどうかを確認する
デフォルトでは、アプリにはステータスバー チップが含まれており、ロック画面が有効になると画面投影が自動的に一時停止されます。
これらのユースケースでアプリをテストする方法については、ステータスバー チップと自動停止をご覧ください。
バックグラウンドでのネットワーク アクセスの制限
在 Android 15 中,如果应用在有效的进程生命周期之外启动网络请求,则会收到异常。通常是 UnknownHostException
或其他与套接字相关的 IOException
。在有效生命周期之外发生的网络请求通常是因为应用在不再活跃后,不知不觉地继续发出网络请求。
为缓解此异常,请使用生命周期感知型组件,确保您的网络请求具有生命周期感知功能,并在离开有效的进程生命周期时取消。如果您非常重视即使用户离开应用也要发出网络请求,请考虑使用 WorkManager 调度网络请求,或使用前台服务继续执行对用户可见的任务。
サポートの終了
リリースのたびに、特定の Android API が古くなったり、デベロッパー エクスペリエンスの向上や新しいプラットフォーム機能のサポートを目的としたリファクタリングが必要になったりすることがあります。このような場合、古くなった API のサポートを正式に終了し、代わりに使用する代替 API をデベロッパーに案内します。
サポートの終了とは、API の正式なサポートが終了したことを指しますが、デベロッパーは引き続きそうした API を利用できます。Android の今回のリリースでサポートが終了した主な API の詳細については、非推奨の API のページをご覧ください。