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

Android 15 プラットフォームには、アプリに影響する可能性がある動作変更が含まれています。 Android 15 で実行されるすべてのアプリに以下の動作変更が適用されます。 targetSdkVersion に関係なく適用されます。アプリをテストしてから 必要に応じて適切にサポートします

アプリにのみ影響する動作変更のリストも必ずご確認ください。 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 are updating 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 以降では、ページサイズが 16 KB(16 KB のデバイス)を使用するように構成されているデバイスがサポートされています。

デバイス メーカーは、引き続き大容量の物理メモリ(RAM)を搭載したデバイスを開発しています。そのため、これらのデバイスの多くは、デバイスのパフォーマンスを最適化するために、16 KB(最終的にはより大きなページサイズ)に設定されます。16 KB デバイスのサポートを追加すると、これらのデバイスでアプリを実行できるようになり、関連するパフォーマンスの向上によるメリットが得られます。そのために、アプリが影響を受けるかどうかを確認する方法アプリを再ビルドする方法(該当する場合)、エミュレータと実機の両方を使用して 16 KB の環境でアプリをテストする方法に関するガイダンスを提供しています。

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

ページサイズが 16 KB に設定されたデバイスは、平均でわずかに多くのメモリを使用しますが、システムとアプリの両方でさまざまなパフォーマンスの向上が得られます。

  • システムがメモリ不足の状況にあるときのアプリの起動時間が短縮: 平均で 3.16% 短縮され、テストした一部のアプリでは大幅な改善(最大 30%)を達成
  • アプリ起動時の消費電力の削減: 平均 4.56% を削減
  • カメラの起動の高速化: ホットスタートが平均 4.48% 高速化、コールド スタートが平均 6.60% 高速化
  • システムの起動時間の改善: 平均 1.5%(約 0.8 秒)改善

これらの改善は初期テストに基づくため、実際のデバイスでの結果とは異なる可能性があります。Google はテストを継続し、アプリの潜在的な利点に関して追加の分析を提供します。

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

アプリでネイティブ コードを使用している場合は、16 KB デバイスをサポートするようにアプリを再ビルドする必要があります。アプリがネイティブ コードを使用しているかどうか不明な場合は、APK Analyzer を使用して、ネイティブ コードが存在するかどうかを確認できます。

すべてのライブラリや SDK を含め、Java プログラミング言語または Kotlin で記述されたコードのみを使用しているアプリの場合、すでに 16 KB のデバイスをサポートしています。それでも、16 KB 環境でアプリをテストし、アプリの動作に予期しない回帰がないことを確認することをおすすめします。

プライベート スペースをサポートするために一部のアプリで必要な変更

プライベート スペースは Android 15 の新機能です。ユーザーは追加の認証レイヤを使用することで、機密性の高いアプリがのぞき見されないように、デバイスに別のスペースを作成できます。プライベート スペース内のアプリは公開設定が制限されているため、一部のタイプのアプリでは、ユーザーのプライベート スペース内のアプリを表示して操作できるようにするには、追加の手順を行う必要があります。

すべてのアプリ

プライベート スペースのアプリは、仕事用プロファイルと同様に別個のユーザー プロファイルに保存されるため、メイン プロファイルにないインストール済みのアプリのコピーが仕事用プロファイルにあると想定しないでください。仕事用プロファイルのアプリに関連するロジックがあり、そのようなロジックがアプリにある場合、このロジックを調整する必要があります。

ランチャー アプリ

ランチャー アプリを開発する場合は、プライベート スペースのアプリが表示されるようにする前に、次のことを行う必要があります。

  1. アプリがデバイスのデフォルト ランチャー アプリとして割り当てられている(つまり、ROLE_HOME ロールを持っている)必要があります。
  2. アプリでは、アプリのマニフェスト ファイルACCESS_HIDDEN_PROFILES の標準の権限を宣言する必要があります。

ACCESS_HIDDEN_PROFILES 権限を宣言するランチャー アプリは、次のプライベート スペースのユースケースに対応する必要があります。

  1. プライベート スペースにインストールされたアプリ用の個別のランチャー コンテナが必要です。getLauncherUserInfo() メソッドを使用して、処理するユーザー プロファイルのタイプを特定します。
  2. ユーザーは、プライベート スペース コンテナの表示と非表示を切り替えられる必要があります。
  3. ユーザーは、プライベート スペース コンテナのロックとロック解除を行える必要があります。requestQuietModeEnabled() メソッドを使用して、プライベート スペースをロック(true をパス)またはロック解除(false をパス)します。
  4. ロックされている間、プライベート スペース コンテナ内のアプリは、検索などのメカニズムで表示または検出できないようにする必要があります。アプリは ACTION_PROFILE_AVAILABLE ブロードキャストと ACTION_PROFILE_UNAVAILABLE ブロードキャストのレシーバを登録し、プライベート スペース コンテナのロック状態またはロック解除状態が変更されたときにアプリの UI を更新する必要があります。どちらのブロードキャストにも EXTRA_USER が含まれており、アプリはこれを使用して限定公開プロファイル ユーザーを参照できます。

    また、isQuietModeEnabled() メソッドを使用して、プライベート スペースのプロフィールがロックされているかどうかを確認することもできます。

アプリストア アプリ

プライベート スペースには、ユーザーのプライベート スペースにアプリをインストールする暗黙的インテントを起動する [アプリをインストール] ボタンがあります。アプリがこの暗黙的インテントを受け取るには、アプリのマニフェスト ファイルで <category>CATEGORY_APP_MARKET を使用して <intent-filter> を宣言します。

PNG ベースの絵文字フォントを削除

以前の PNG ベースの絵文字フォント ファイル(NotoColorEmojiLegacy.ttf)は、 ベクトルベースのファイルだけが残ります。Android 13(API)以降 レベル 33)、システム絵文字レンダラで使用される絵文字フォント ファイルは、 PNG ベースのファイルからベクターベースのファイルに変換できます。システムが保持する 互換性の理由から Android 13 および 14 の従来のフォント ファイルを変更せず、 独自のフォント レンダラを使用するアプリでは、従来のフォント ファイルを引き続き使用できます。 アップグレードが可能になるまで待つ必要は ありません

アプリは、いくつかの方法で適応させることができます。

  • テキストのレンダリングにはプラットフォーム API を使用します。ビットマップ ベースの形式にテキストをレンダリングできます。 Canvas を実行し、必要に応じてそれを使用して RAW 画像を取得します。
  • アプリに COLRv1 フォント サポートを追加します。FreeType オープンソース ライブラリ バージョン 2.13.0 の COLRv1 をサポートしており、 高くなります。
  • 最後の手段として、以前の絵文字フォント ファイルをバンドルして (NotoColorEmoji.ttf)を APK に追加します。 ただし、その場合は最新の絵文字アップデートがアプリに含まれません。対象 詳しくは、Noto 絵文字 GitHub プロジェクト ページをご覧ください

最小対象 SDK バージョンを 23 から 24 に引き上げ

Android 15 では、Android 14 で行われた変更に基づき、このセキュリティがさらに拡張されています。Android 15 では、targetSdkVersion が 24 未満のアプリはインストールできません。アプリが最新の API レベルを満たすことを必須にすることで、セキュリティとプライバシーを強化できます。

マルウェアは多くの場合、上位の Android バージョンで導入されたセキュリティとプライバシー保護を回避するために、下位の API レベルをターゲットにします。たとえば、一部のマルウェア アプリは、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 が 24 未満のアプリはインストールされたままになります。

古い API レベルをターゲットとするアプリをテストする必要がある場合は、次の ADB コマンドを使用します。

adb install --bypass-low-target-sdk-block FILENAME.apk

カメラとメディア

Android 15 では、すべてのカメラとメディアの動作が次のように変更されます。 。

直接再生とオフロード音声再生で、リソースの上限に達すると、以前開いていたダイレクト トラックまたはオフロード オーディオ トラックが無効になるようになりました

Before Android 15, if an app requested direct or offload audio playback while another app was playing audio and the resource limits were reached, the app would fail to open a new AudioTrack.

Beginning with Android 15, when an app requests direct or offload playback and the resource limits are reached, the system invalidates any currently open AudioTrack objects which prevent fulfilling the new track request.

(Direct and offload audio tracks are typically opened for playback of compressed audio formats. Common use-cases for playing direct audio include streaming encoded audio over HDMI to a TV. Offload tracks are typically used to play compressed audio on a mobile device with hardware DSP acceleration.)

ユーザー エクスペリエンスとシステム 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 以降、アプリが強制停止されると、システムがアプリのペンディング インテントをすべてキャンセルするためです。

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

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

サポートの終了

各リリースで、特定の Android API が古くなったり、廃止する必要があったりします。 デベロッパー エクスペリエンスの向上や新しいプラットフォームのサポートのためにリファクタリングされた 提供しますそのような場合は、廃止された API を正式に非推奨化し、 代わりに使用する代替 API をデベロッパーに提示します。

非推奨とは、API の公式サポートを終了したことですが、今後 引き続きデベロッパーが利用できるようになっています。注目すべきトピックについて 非推奨に関するページをご覧ください。