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

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 ページサイズのデバイスをサポートしているため、アプリはこれらの 関連するパフォーマンスの恩恵をアプリに提供するため 改善されています。16 KB デバイスでは、再コンパイルしないとアプリが動作しない可能性があります 将来の Android リリースで製品化される際の要件です。

アプリのサポートを追加できるように、 アプリが影響を受ける場合はアプリを再構築し(該当する場合)、アプリをテスト エミュレータ(Android 15 を含む)を使用した 16 KB 環境 Android Emulator 用のシステム イメージ)を作成します。

メリットとパフォーマンスの向上

Devices configured with 16 KB page sizes use slightly more memory on average, but also gain various performance improvements for both the system and apps:

  • Lower app launch times while the system is under memory pressure: 3.16% lower on average, with more significant improvements (up to 30%) for some apps that we tested
  • Reduced power draw during app launch: 4.56% reduction on average
  • Faster camera launch: 4.48% faster hot starts on average, and 6.60% faster cold starts on average
  • Improved system boot time: improved by 8% (approximately 950 milliseconds) on average

These improvements are based on our initial testing, and results on actual devices will likely differ. We'll provide additional analysis of potential gains for apps as we continue our testing.

アプリが影響を受けるかどうかを確認する

If your app uses any native code, then you should rebuild your app with support for 16 KB devices. If you are unsure if your app uses native code, you can use the APK Analyzer to identify whether any native code is present and then check the alignment of ELF segments for any shared libraries that you find.

If your app only uses code written in the Java programming language or in Kotlin, including all libraries or SDKs, then your app already supports 16 KB devices. Nevertheless, we recommend that you test your app in a 16 KB environment to verify that there are no unexpected regressions in app behavior.

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

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

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