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

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

アプリにのみ影響する動作変更のリストも必ずご確認ください。 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 以降では、ページサイズが 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 では、すべてのカメラとメディアの動作が次のように変更されます。 。

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

Android 15 より前では、アプリが音声を再生しているときに、アプリが音声再生の直接またはオフロードをリクエストし、リソース制限に達した場合、アプリは新しい AudioTrack を開くことができませんでした。

Android 15 以降では、アプリがダイレクト再生またはオフロード再生をリクエストし、リソースの上限に達すると、現在開いている AudioTrack オブジェクトがすべて無効になり、新しいトラック リクエストを実行できなくなります。

(通常、ダイレクト オーディオ トラックとオフロード オーディオ トラックは圧縮音声形式の再生用に開きます。ダイレクト オーディオを再生する一般的なユースケースとして、エンコードされたオーディオを HDMI 経由でテレビにストリーミングすることがあります。オフロード トラックは通常、ハードウェア DSP アクセラレーションを備えたモバイル デバイスで圧縮音声を再生するために使用されます)。

ユーザー エクスペリエンスとシステム UI

Android 15 では、一貫性を保ち、 直感的に操作できます

予測型「戻る」アニメーションをオプトインしたアプリで有効にする

Android 15 以降、予測型「戻る」アニメーションの開発者向けオプションは削除されています。ホームに戻る、タスク間、クロスアクティビティなどのシステム アニメーションは、全体またはアクティビティ レベルで予測型「戻る」ジェスチャーをオプトインしたアプリに表示されるようになりました。アプリが影響を受ける場合は、次のように対応します。

  • 予測型「戻る」ジェスチャーを使用するようにアプリが適切に移行されていることを確認します。
  • フラグメントの遷移が予測型「戻る」ナビゲーションと連携することを確認します。
  • アニメーションとフレームワークの遷移から移行し、代わりに Animator と androidx の遷移を使用してください。
  • FragmentManager が認識していないバックスタックから移行します。代わりに、FragmentManager または Navigation コンポーネントによって管理されるバックスタックを使用してください。

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

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

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

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

サポートの終了

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

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