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 以降、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% 高速化
- システムの起動時間の改善: 平均 1.5%(約 0.8 秒)改善
これらの改善は初期テストに基づくため、実際のデバイスでの結果とは異なる可能性があります。Google はテストを継続し、アプリの潜在的な利点に関して追加の分析を提供します。
アプリが影響を受けるかどうかを確認する
アプリでネイティブ コードを使用している場合は、16 KB デバイスをサポートするようにアプリを再ビルドする必要があります。アプリがネイティブ コードを使用しているかどうか不明な場合は、APK Analyzer を使用して、ネイティブ コードが存在するかどうかを確認できます。
すべてのライブラリや SDK を含め、Java プログラミング言語または Kotlin で記述されたコードのみを使用しているアプリの場合、すでに 16 KB のデバイスをサポートしています。それでも、16 KB 環境でアプリをテストし、アプリの動作に予期しない回帰がないことを確認することをおすすめします。
プライベート スペースをサポートするために一部のアプリで必要な変更
Private space is a new feature in Android 15 that lets users create a separate space on their device where they can keep sensitive apps away from prying eyes, under an additional layer of authentication. Because apps in the private space have restricted visibility, some types of apps need to take additional steps to be able to see and interact with apps in a user's private space.
All apps
Because apps in the private space are kept in a separate user profile, similar to work profiles, apps shouldn't assume that any installed copies of their app that aren't in the main profile are in the work profile. If your app has logic related to work profile apps that make this assumption, you'll need to adjust this logic.
Medical apps
When a user locks the private space, all apps in the private space are stopped, and those apps can't perform foreground or background activities, including showing notifications. This behavior might critically impact the use and function of medical apps installed in the private space.
The private space setup experience warns users that the private space is not suitable for apps that need to perform critical foreground or background activities, such as showing notifications from medical apps. However, apps can't determine whether or not they're being used in the private space, so they can't show a warning to the user for this case.
For these reasons, if you develop a medical app, review how this feature might impact your app and take appropriate actions—such as informing your users not to install your app in the private space—to avoid disrupting critical app capabilities.
Launcher apps
If you develop a launcher app, you must do the following before apps in the private space will be visible:
- Your app must be assigned as the default launcher app for the device—that
is, possessing the
ROLE_HOME
role. - Your app must declare the
ACCESS_HIDDEN_PROFILES
normal permission in your app's manifest file.
Launcher apps that declare the ACCESS_HIDDEN_PROFILES
permission must handle
the following private space use cases:
- Your app must have a separate launcher container for apps installed in the
private space. Use the
getLauncherUserInfo()
method to determine which type of user profile is being handled. - The user must be able to hide and show the private space container.
- The user must be able to lock and unlock the private space container. Use
the
requestQuietModeEnabled()
method to lock (by passingtrue
) or unlock (by passingfalse
) the private space. While locked, no apps in the private space container should be visible or discoverable through mechanisms such as search. Your app should register a receiver for the
ACTION_PROFILE_AVAILABLE
andACTION_PROFILE_UNAVAILABLE
broadcasts and update the UI in your app when the locked or unlocked state of the private space container changes. Both of these broadcasts includeEXTRA_USER
, which your app can use to refer to the private profile user.You can also use the
isQuietModeEnabled()
method to check whether the private space profile is locked or not.
App store apps
The private space includes an "Install Apps" button that launches an implicit
intent to install apps into the user's private space. In order for your app to
receive this implicit intent, declare an <intent-filter>
in your app's manifest file with a <category>
of
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 では、すべてのカメラとメディアの動作が次のように変更されます。 。
直接再生とオフロード音声再生で、リソースの上限に達すると、以前開いていたダイレクト トラックまたはオフロード オーディオ トラックが無効になるようになりました
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 の公式サポートを終了したことですが、今後 引き続きデベロッパーが利用できるようになっています。注目すべきトピックについて 非推奨に関するページをご覧ください。