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

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

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

コア機能

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

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

软件包 FLAG_STOPPED 状态(用户可以通过长按应用图标并选择“强行停止”来参与 AOSP build)一直是为了让应用保持此状态,直到用户通过直接启动应用或间接与应用互动(通过 Sharesheet 或 widget、选择应用作为动态壁纸等)将应用从此状态明确移除。在 Android 15 中,我们将更新系统的行为,以符合这一预期行为。只能通过用户直接或间接操作将应用从停止状态中移除。

为了支持预期行为,除了现有限制之外,当应用在搭载 Android 15 的设备上进入停止状态时,系统还会取消所有待处理 intent。当用户的操作将应用从停止状态中移除时,系统会向应用传递 ACTION_BOOT_COMPLETED 广播,让用户有机会重新注册任何待处理的 intent。

您可以调用新的 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 段对齐情况

如果您的应用仅使用以 Java 或 Kotlin 编程语言编写的代码(包括所有库或 SDK),则该应用已经支持 16 KB 设备。不过,我们建议您在 16 KB 环境中测试应用,以验证应用行为是否没有意外回归。

一部のアプリがプライベート スペースに対応するために必要な変更

プライベート スペースは Android 15 の新機能で、 機密性の高いアプリを閉じ込めるスペースをデバイスに作成する 追加の認証レイヤの下でのぞき見を防ぐことができます。なぜなら、 制限付き公開が設定されているため、一部の種類のアプリでは、 ユーザーのプライベート スペースでアプリを表示、操作するための追加の手順が 選択します。

すべてのアプリ

プライベート スペースのアプリは、ユーザー プロファイルと同様に 仕事用プロファイルに紐づけることで、アプリは メイン プロファイルに含まれていないアプリのコピーは仕事用プロファイルにあります。条件 お客様のアプリには、この仮定を行う仕事用プロファイル アプリに関連するロジックがあります。 このロジックを調整する必要があります

医療アプリ

ユーザーがプライベート スペースをロックすると、そのプライベート スペース内のアプリはすべて停止します。 フォアグラウンドまたはバックグラウンドのアクティビティを実行できない 表示されます。この動作は、Google Cloud サービスの使用と プライベート空間にインストールした医療アプリの機能。

プライベート スペースの設定画面で、プライベート スペースが利用できないことがユーザーに警告される 重要なフォアグラウンドまたはバックグラウンドを実行する必要があるアプリに適している 医療アプリからの通知の表示などのアクティビティ。ただし、 アプリは、プライベート スペースで使用されているかどうかを判断できません。 このケースでユーザーに警告が表示されないようにします

こうした理由から、医療アプリを開発する場合は、この機能が アプリに影響を及ぼし、適切な措置を講じる プライベート空間にアプリをインストールして、重要なアプリの中断を防ぎます 提供します

ランチャー アプリ

ランチャー アプリを開発する場合は、 非公開のスペースが表示されます。

  1. アプリをデバイスのデフォルトのランチャー アプリとして割り当てる必要があります。 ROLE_HOME ロールを付与されていることです。
  2. アプリが ACCESS_HIDDEN_PROFILES を宣言する必要があります。 標準の権限(アプリのマニフェスト ファイル内)に追加します。

ACCESS_HIDDEN_PROFILES 権限を宣言するランチャー アプリで処理する必要がある 次のようなユースケースがあります。

  1. アプリには、ローカルにインストールされたアプリ用の個別のランチャー コンテナが必要です。 プライベート スペースに移動します。getLauncherUserInfo() メソッドを使用して、以下を行います。 処理するユーザー プロファイルのタイプを指定します。
  2. ユーザーは、プライベート スペース コンテナの表示と非表示を切り替えられる必要があります。
  3. ユーザーは、プライベート スペース コンテナのロックとロック解除を行える必要があります。使用 ロックする requestQuietModeEnabled() メソッド( (true を渡す)か、ロックを解除(false を渡して)します。
  4. ロックされている間は、プライベート スペース コンテナ内のアプリは表示されません。 簡単に見つけてもらいやすくなります。アプリは 受信機 ACTION_PROFILE_AVAILABLEACTION_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 表情符号 GitHub 项目 页面

ターゲット SDK の最小バージョンを 23 から 24 に引き上げ

Android 15 基于 在 Android 14 中进行的更改,并扩展了 安全性。在 Android 15 中, 无法安装低于 24 的 targetSdkVersion。 要求应用符合现代 API 级别有助于确保更好的安全性和 保护隐私。

恶意软件通常会以较低的 API 级别为目标平台,以绕过安全和隐私 更高的 Android 版本中引入的保护机制。例如,有些恶意软件应用使用 targetSdkVersion 22,以避免受到 Android 6.0 Marshmallow(API 级别 23)在 2015 年引入的运行时权限模型的约束。这项 Android 15 变更使恶意软件更难以规避安全和隐私权方面的改进限制。尝试安装以较低 API 级别为目标平台的应用将导致安装失败,并且 Logcat 中会显示如下所示的消息:

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

在升级到 Android 15 的设备上,targetSdkVersion 级别较低的任何应用 安装在 Google Play 上

如果您需要测试以旧版 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 以降、アプリが強制停止されると、システムがアプリのペンディング インテントをすべてキャンセルするためです。

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

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

メディア プロジェクションのステータスバー チップで、画面共有、キャスト、録画についてユーザーに通知

Screen projection exploits expose private user data such as financial information because users don't realize their device screen is being shared. Android has until now shown screen cast and screen record icons on the status bar, but the icons are small and often overlooked. Also, stopping screen sharing or recording is cumbersome because controls are in Quick Settings.

Android 15 introduces a new status bar chip that is large and prominent, which should alert users to any in-progress screen projection. Users can tap the chip to stop their screen from being shared, cast, or recorded.

To provide an intuitive user experience, screen projection now automatically stops when the device screen is locked.

Benefits and performance gains

The new media projection status bar chip enhances the user experience as follows:

  • Alerts users to in-progress screen sharing, casting, or recording
  • Enable users to terminate screen projection by tapping the chip

Automatic suspension of screen projection when the device screen is locked ensures user privacy.

Check if your app is impacted

By default, your app includes the new status bar chip and automatically suspends screen projection when the lock screen activates. Test your app by implementing the onStop() method of the MediaProjection.Callback. Verify that your app responds appropriately when the screen projection stops as a result of the user tapping the status bar chip or when the lock screen activates.

サポートの終了

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

サポートの終了とは、API の正式なサポートが終了したことを指しますが、デベロッパーは引き続きそうした API を利用できます。Android の今回のリリースでサポートが終了した主な API の詳細については、非推奨の API のページをご覧ください。