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

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 セグメントの配置をチェックします。

ライブラリや SDK もすべて含めて、Java プログラミング言語または Kotlin で記述されたコードだけを使用しているアプリは、すでに 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 を実行し、必要に応じてそれを使用して RAW 画像を取得します。
  • アプリに COLRv1 フォント サポートを追加します。FreeType オープンソース ライブラリ バージョン 2.13.0 の COLRv1 をサポートしており、 高くなります。
  • 最後の手段として、以前の絵文字フォント ファイルをバンドルして (NotoColorEmoji.ttf)を APK に追加します。 ただし、その場合は最新の絵文字アップデートがアプリに含まれません。対象 詳しくは、Noto 絵文字 GitHub プロジェクト ページをご覧ください

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

Android 15 builds on the the changes that were made in Android 14 and extends this security further. In Android 15, apps with a targetSdkVersion lower than 24 can't be installed. Requiring apps to meet modern API levels helps to ensure better security and privacy.

Malware often targets lower API levels in order to bypass security and privacy protections that have been introduced in higher Android versions. For example, some malware apps use a targetSdkVersion of 22 to avoid being subjected to the runtime permission model introduced in 2015 by Android 6.0 Marshmallow (API level 23). This Android 15 change makes it harder for malware to avoid security and privacy improvements. Attempting to install an app targeting a lower API level results in an installation failure, with a message like the following one appearing in Logcat:

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

On devices upgrading to Android 15, any apps with a targetSdkVersion lower than 24 remain installed.

If you need to test an app targeting an older API level, use the following ADB command:

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 では、より一貫性があり直感的なユーザー エクスペリエンスを実現するための変更がいくつか加えられています。

有効にしたアプリで予測型「戻る」アニメーションが有効

Beginning in Android 15, the developer option for predictive back animations has been removed. System animations such as back-to-home, cross-task, and cross-activity now appear for apps that have opted in to the predictive back gesture either entirely or at an activity level. If your app is affected, take the following actions:

  • Ensure that your app has been properly migrated to use the predictive back gesture.
  • Ensure that your fragment transitions work with predictive back navigation.
  • Migrate away from animation and framework transitions and use animator and androidx transitions instead.
  • Migrate away from back stacks that FragmentManager doesn't know about. Use back stacks managed by FragmentManager or by the Navigation component instead.

ユーザーがアプリを強制停止したときにウィジェットが無効になる

Android 15 を搭載したデバイスでユーザーがアプリを強制停止すると、そのアプリのウィジェットがすべて一時的に無効になります。ウィジェットはグレー表示され、ユーザーは操作できません。これは、Android 15 以降、アプリが強制停止されると、システムがアプリのペンディング インテントをすべてキャンセルするためです。

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

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

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

Benefits and performance gains

Check if your app is impacted

サポートの終了

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

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