Android 15 プラットフォームには、アプリに影響する可能性がある動作変更が含まれています。下記の動作変更は、targetSdkVersion
に関係なく、Android 15 上で稼働するすべてのアプリに適用されます。該当する場合は、アプリをテストし、必要に応じて修正して、適切に対応してください。
Android 15 をターゲットとするアプリにのみ影響する動作変更のリストも必ずご確認ください。
コア機能
Android 15 では、Android システムのコア機能が変更または拡張されています。
パッケージの停止状態の変更
软件包 FLAG_STOPPED
状态(用户可以通过在 AOSP build 中长按应用图标并选择“强制停止”来启用此状态)的用途一直是让应用保持在此状态,直到用户通过直接启动应用或间接与应用互动(通过 Sharesheet 或 widget、将应用选择为动态壁纸等)来明确将应用从此状态移除。在 Android 15 中,我们更新了系统行为,使其与此预期行为保持一致。应用应仅通过直接或间接的用户操作从停止状态移除。
为了支持预期行为,除了现有限制之外,当应用在搭载 Android 15 的设备上进入停止状态时,系统还会取消所有待处理 intent。当用户的操作将应用从停止状态移除时,系统会将 ACTION_BOOT_COMPLETED
广播传送到应用,以便应用有机会重新注册所有待处理 intent。
您可以调用新的 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% 高速化
- システムの起動時間の短縮: 平均で 8%(約 950 ミリ秒)短縮
これらの改善は初期テストに基づくものであり、実際のデバイスでの結果は異なる可能性があります。テストを継続する中で、アプリの潜在的な収益増加に関する追加の分析情報を提供していきます。
检查您的应用是否受到影响
アプリがネイティブ コードを使用している場合は、16 KB デバイスをサポートするようにアプリを再ビルドする必要があります。アプリがネイティブ コードを使用しているかどうか不明な場合は、APK アナライザを使用してネイティブ コードが存在するかどうかを特定し、検出された共有ライブラリの ELF セグメントの配置をチェックします。
ライブラリや 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()
メソッドを使用して、プライベート スペース プロファイルがロックされているかどうかを確認することもできます。
アプリストアのアプリ
プライベート スペースには、ユーザーのプライベート スペースにアプリをインストールする暗黙的なインテントを起動する [アプリをインストール] ボタンがあります。アプリがこの暗黙的インテントを受け取るには、アプリのマニフェスト ファイルで <intent-filter>
を宣言し、<category>
を CATEGORY_APP_MARKET
に設定します。
PNG ベースの絵文字フォントが削除されました
従来の PNG ベースの絵文字フォント ファイル(NotoColorEmojiLegacy.ttf
)は削除され、ベクターベースのファイルのみが残されています。Android 13(API レベル 33)以降、システム 絵文字レンダラで使用される絵文字フォント ファイルは、PNG ベースのファイルからベクター ベースのファイルに変更されました。システムは互換性上の理由から、Android 13 と 14 で以前のフォント ファイルを保持しました。これにより、独自のフォント レンダラを持つアプリは、アップグレードできるまで以前のフォント ファイルを引き続き使用できました。
アプリが影響を受けているかどうかを確認するには、アプリのコードで NotoColorEmojiLegacy.ttf
ファイルへの参照を検索します。
アプリを適応させる方法はいくつかあります。
- テキストのレンダリングにはプラットフォーム API を使用します。テキストをビットマップ バックの
Canvas
にレンダリングし、必要に応じてそれを使用して未加工の画像を取得できます。 - アプリに COLRv1 フォント サポートを追加します。FreeType オープンソース ライブラリは、バージョン 2.13.0 以降で COLRv1 をサポートしています。
- 最後の手段として、以前の絵文字フォント ファイル(
NotoColorEmoji.ttf
)を APK にバンドルすることもできますが、その場合、アプリには最新の絵文字のアップデートが適用されません。詳しくは、Noto Emoji GitHub プロジェクトのページをご覧ください。
ターゲット SDK の最小バージョンを 23 から 24 に引き上げ
Android 15 基于
在 Android 14 中进行的更改,并扩展了
安全性。在 Android 15 中,
无法安装低于 24 的 targetSdkVersion
。
要求应用符合现代 API 级别有助于确保更好的安全性和
保护隐私。
恶意软件通常会以较低的 API 级别为目标平台,以绕过安全和隐私
更高的 Android 版本中引入的保护机制。例如,有些恶意软件应用使用 targetSdkVersion
22,以避免受到 Android 6.0 Marshmallow(API 级别 23)在 2015 年引入的运行时权限模型的约束。这项 Android 15 变更使恶意软件更难以规避安全和隐私权方面的改进限制。尝试安装以较低 API 级别为目标平台的应用将导致安装失败,并且 Logcat 中会显示如下所示的消息:
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7
在升级到 Android 15 的设备上,targetSdkVersion
级别较低的任何应用
安装在 Google Play 上
如果您需要测试以旧版 API 级别为目标平台的应用,请使用以下 ADB 命令:
adb install --bypass-low-target-sdk-block FILENAME.apk
セキュリティとプライバシー
Android 15 引入了强大的措施来防范动态密码 (OTP) 欺诈并保护用户的敏感内容,重点是增强通知监听器服务和屏幕共享保护措施。主要增强功能包括从可供不可信应用访问的通知中隐去 OTP、在屏幕共享期间隐藏通知,以及在发布 OTP 时保护应用 activity。这些变更旨在保护用户的敏感内容,使其免受未经授权的操作者的侵害。
开发者需要注意以下事项,以确保其应用与 Android 15 中的变更兼容:
动态密码隐去
Android 会阻止实现 NotificationListenerService
的不受信任应用读取已检测到 OTP 的通知中的未隐去的内容。配套设备管理器关联等受信任应用不受这些限制。
屏幕共享保护
- 在屏幕共享会话期间,系统会隐藏通知内容,以保护用户的隐私。如果应用实现了
setPublicVersion()
,Android 会显示通知的公开版本,该版本在不安全情境中用作替换通知。否则,系统会隐去通知内容,不提供任何其他背景信息。 - 系统会向远程观看者隐藏密码输入等敏感内容,以防止泄露用户的敏感信息。
- 如果在屏幕共享期间检测到动态密码,系统会隐藏在该时间段内发布通知的应用的活动。应用内容在启动时会向远程查看器隐藏。
- 除了 Android 自动识别敏感字段之外,开发者还可以使用
setContentSensitivity
手动将应用的部分标记为敏感,在屏幕共享期间,这些敏感字段会对远程观看者隐藏。 - 开发者可以选择切换开发者选项下的停用屏幕共享防护选项,以便出于演示或测试目的豁免屏幕共享防护。默认的系统屏幕录制工具不受这些更改的影响,因为录制内容会保留在设备上。
カメラとメディア
Android 15 では、すべてのアプリのカメラとメディアの動作が次のように変更されます。
リソースの上限に達すると、直接再生とオフロード再生で、以前に開いた直接再生またはオフロード再生のオーディオ トラックが無効になる
在 Android 15 之前,如果某个应用在另一个应用播放音频且达到资源限制时请求直接或分流音频播放,该应用将无法打开新的 AudioTrack
。
从 Android 15 开始,当应用请求直接播放或分流播放且达到资源限制时,系统会使任何当前打开的 AudioTrack
对象失效,以防止执行新轨道请求。
(直接音轨和分流音轨通常会打开,以播放压缩音频格式。播放直接音频的常见用例包括通过 HDMI 将编码的音频流式传输到电视。分流轨道通常用于在具有硬件 DSP 加速的移动设备上播放压缩音频。)
ユーザー エクスペリエンスとシステム UI
Android 15 では、より一貫性があり直感的なユーザー エクスペリエンスを実現するための変更がいくつか加えられています。
有効にしたアプリで予測型「戻る」アニメーションが有効
从 Android 15 开始,预测性返回动画的开发者选项已被移除。现在,如果应用已完全或在 activity 级别选择启用预测性返回手势,则系统会为其显示“返回主屏幕”“跨任务”和“跨 activity”等系统动画。如果您的应用受到了影响,请执行以下操作:
- 确保您的应用已正确迁移,以使用预测性返回手势。
- 确保 fragment 转场效果可与预测性返回导航搭配使用。
- 请弃用动画和框架过渡,改用动画和 androidx 过渡。
- 从
FragmentManager
不认识的返回堆栈迁移。请改用由FragmentManager
或 Navigation 组件管理的返回堆栈。
ユーザーがアプリを強制停止したときにウィジェットが無効になる
如果用户在搭载 Android 15 的设备上强制停止应用,系统会暂时停用该应用的所有微件。这些 widget 会灰显,用户无法与其互动。这是因为,从 Android 15 开始,当系统强制停止应用时,会取消应用的所有待处理 intent。
系统会在用户下次启动应用时重新启用这些微件。
如需了解详情,请参阅对软件包停止状态的更改。
メディア プロジェクションのステータスバー チップで、画面共有、キャスト、録画についてユーザーに通知
优势和性能提升
检查您的应用是否受到影响
サポートの終了
リリースのたびに、特定の Android API が古くなったり、デベロッパー エクスペリエンスの向上や新しいプラットフォーム機能のサポートを目的としたリファクタリングが必要になったりすることがあります。このような場合、Google は古くなった API のサポートを正式に終了し、代わりに使用する代替 API をデベロッパーに案内します。
サポートの終了とは、API の正式なサポートが終了したことを指しますが、デベロッパーは引き続きそうした API を利用できます。Android の今回のリリースでサポートが終了した主な API の詳細については、非推奨の API のページをご覧ください。