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 の新機能です。ユーザーは追加の認証レイヤを使用することで、機密性の高いアプリがのぞき見されないように、デバイスに別のスペースを作成できます。プライベート スペース内のアプリは公開設定が制限されているため、一部のタイプのアプリでは、ユーザーのプライベート スペース内のアプリを表示して操作できるようにするには、追加の手順を行う必要があります。
すべてのアプリ
プライベート スペースのアプリは、仕事用プロファイルと同様に別個のユーザー プロファイルに保存されるため、メイン プロファイルにないインストール済みのアプリのコピーが仕事用プロファイルにあると想定しないでください。仕事用プロファイルのアプリに関連するロジックがあり、そのようなロジックがアプリにある場合、このロジックを調整する必要があります。
ランチャー アプリ
ランチャー アプリを開発する場合は、プライベート スペースのアプリが表示されるようにする前に、次のことを行う必要があります。
- アプリがデバイスのデフォルト ランチャー アプリとして割り当てられている(つまり、
ROLE_HOME
ロールを持っている)必要があります。 - アプリでは、アプリのマニフェスト ファイルで
ACCESS_HIDDEN_PROFILES
の標準の権限を宣言する必要があります。
ACCESS_HIDDEN_PROFILES
権限を宣言するランチャー アプリは、次のプライベート スペースのユースケースに対応する必要があります。
- プライベート スペースにインストールされたアプリ用の個別のランチャー コンテナが必要です。
getLauncherUserInfo()
メソッドを使用して、処理するユーザー プロファイルのタイプを特定します。 - ユーザーは、プライベート スペース コンテナの表示と非表示を切り替えられる必要があります。
- ユーザーは、プライベート スペース コンテナのロックとロック解除を行える必要があります。
requestQuietModeEnabled()
メソッドを使用して、プライベート スペースをロック(true
をパス)またはロック解除(false
をパス)します。 ロックされている間、プライベート スペース コンテナ内のアプリは、検索などのメカニズムで表示または検出できないようにする必要があります。アプリは
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 byFragmentManager
or by the Navigation component instead.
ユーザーがアプリを強制停止したときにウィジェットが無効になる
Android 15 を搭載したデバイスでユーザーがアプリを強制停止すると、そのアプリのウィジェットがすべて一時的に無効になります。ウィジェットはグレー表示され、ユーザーは操作できません。これは、Android 15 以降、アプリが強制停止されると、システムがアプリのペンディング インテントをすべてキャンセルするためです。
ウィジェットは、ユーザーが次にアプリを起動したときに、再び有効になります。
詳しくは、パッケージ停止状態の変更をご覧ください。
サポートの終了
各リリースで、特定の Android API が古くなったり、廃止する必要があったりします。 デベロッパー エクスペリエンスの向上や新しいプラットフォームのサポートのためにリファクタリングされた 提供しますそのような場合は、廃止された API を正式に非推奨化し、 代わりに使用する代替 API をデベロッパーに提示します。
非推奨とは、API の公式サポートを終了したことですが、今後 引き続きデベロッパーが利用できるようになっています。注目すべきトピックについて 非推奨に関するページをご覧ください。