Android 12 リリースノート

このページでは、Android 12 リリースの主な機能の概要を説明し、追加情報へのリンクを掲載しています。これらの機能の概要は、このサイトにおける各機能のドキュメントの場所に従って整理されています。

アーキテクチャ

AlwaysOnHotwordDetector クラスの更新

Android 12 以降、AlwaysOnHotwordDetector クラス(そのファクトリー メソッドである android.service.voice.VoiceInteractionService.createAlwaysOnHotwordDetector() を含む)は、公開 API ではなく、システム API(@SystemApi)となっています。AlwaysOnHotwordDetector クラスは、通常は OS リリースにバンドルされている、システムレベルの権限を持つアシスタント アプリでの使用を対象としています。Android 11 以前の場合、呼び出し元が現在アクティブなアシスタント アプリであることを確認するチェックによって API が保護されているため、他のサードパーティ アプリでは API を使用できません。

また、Android 12 ではサウンド トリガー機能が強化され、サウンド トリガー API を介したマイクの使用に関連するアトリビューションと権限を強化しています。マイクの使用(SoundTriggerManager クラスや AlwaysOnHotwordDetector クラスなどによる間接的な使用を含む)は、AlwaysOnHotwordDetector クラスを呼び出す元のパッケージ(アシスタント アプリ)に関連付けられています。これにより、マイクを使用するパッケージについて、ユーザーのプライバシーと透明性が向上します。Android 11 以前では、元のパッケージはサウンド トリガー API を直接使用するのではなく、system_server プロセスに常駐する高レベルのサービスを介しているため、マイクの使用はシステム ユーザーに起因します。

この変更による影響は次のとおりです。

  • AlwaysOnHotwordDetector クラスを使用している非システムアプリは、API が公開 API から削除されたため、Android 12 API に対してコンパイルできません。
  • AlwaysOnHotwordDetector クラスを使用する既存のシステムアプリでは、実行時にサウンド トリガー機能の使用が拒否される場合があります。この問題に対処し、該当アプリがサウンド トリガーを介してマイクにアクセスできるようにするには、該当アプリの RECORD_AUDIO 権限と CAPTURE_AUDIO_HOTWORD 権限を宣言します。

Android Rust 言語のサポート

Android 12 で Rust コードの使用がサポートされるようになりました。セットアップのドキュメントに新しく追加されたセクションに、Rust を使って Android で開発するためのガイダンスが記載されています。

Android Rust の詳細、さまざまなモジュール、例(および IDE の設定情報の取得)については、Android Rust の概要にある新しい Android Rust セクションをご覧ください。

ブートイメージ ヘッダー

Android 12 では、汎用カーネル イメージ(GKI)アーキテクチャをサポートするデバイスのプライマリ ブートイメージである、ブートイメージ ヘッダー バージョン 4 を使用できるようになりました。Android 12 では、カーネルと RAM ディスクの整合性を確認するための boot_signature も提供されています。GKI アーキテクチャを使用するデバイスでは、VtsSecurityAvbTest で行われるチェックが必要です。

詳細については、ブートイメージ ヘッダーのページをご覧ください。

bootconfig の実装に関する変更点

Android 12 の bootconfig 機能は、ビルドとブートローダーから Android 12 に設定情報を渡すメカニズムであり、Android 11 以前で使用されていた androidboot.* カーネル コマンドライン オプションに代わるものです。この機能により、Android ユーザー空間の構成パラメータをカーネルの構成パラメータから分離できます。

詳細については、Bootconfig の実装をご覧ください。

カスタムの代替フォント

Android 12 より前のバージョンでは、AOSP(/system/fonts パーティション内)またはベンダー パーティション(/product/fonts パーティションまたは /system/fonts パーティション内)のデバイスにインストールされているフォント ファイルを更新するには、OEM によるシステム アップデートが必要でした。この要件は絵文字の互換性に大きな影響を与えます。 Android 12 では、FontManager システム サービスを使用することで、インストール済みのフォント ファイルを管理し、システム アップデートを行わずにデバイスにインストールされているフォント ファイルを更新できます。

この新機能の詳細については、カスタムの代替フォントの実装をご覧ください。

DMA-BUF ヒープ

Android 12 では、GKI 2.0 で ION アロケータが DMA-BUF ヒープに置き換えられています。

言語 / 地域フィルタの有効化

Android 12 には、新しいデバイスタイプに対してデフォルトのシステム言語と言語 / 地域フィルタを設定できる機能が導入されています。これにより、工場出荷時の調整でフィルタのプロパティ値とデフォルト言語を oem/oem.prop を使って設定し、システム イメージにフィルタを埋め込まずに制限を構成できます。

詳細については、言語 / 地域フィルタの有効化をご覧ください。

ベンダー RAM ディスクのフラッシュ

Android 12 では、デバイスから完全な vendor_boot イメージを取得する fastboot コマンドにより、ベンダー RAM ディスクのフラッシュがサポートされています。このコマンドは、ホスト側の fastboot ツールに対し、ベンダー ブートヘッダーを読み取り、イメージを再作成して新しいイメージをフラッシュするように要求します。このサポートには、パーティションのサイズやオフセットなど、必要なデータを取得するためのブートローダーや fastbootd の変更が含まれます。

詳細については、ユーザー空間での fastboot ページのベンダー RAM ディスクのフラッシュをご覧ください。

GKI のバージョニング

Android 12 以降では、KMI バージョンの Android リリース部分をカーネルから抽出して、ビルド時にデバイス マニフェストに挿入できます。

詳細については、GKI のバージョニングをご覧ください。

MM イベント - 過去のメモリ統計情報

Android 12 搭載のデバイスでは、メモリ負荷の発生中に定期的に取得されるメモリ関連の統計情報セット mm_events を利用できます。mm_events は、perfetto トレース メカニズムと統合されており、パフォーマンスのオーバーヘッドを最小限に抑えます。統計情報の収集は、指定した期間にわたってアクティブになり、定期的に統計情報を収集します。

mm_events の統計情報の使用方法については、MM イベント - 過去のメモリ統計情報をご覧ください。

システム アラート ウィンドウの制限

Android エコシステムのセキュリティを強化するため、Android 12 では SYSTEM_ALERT_WINDOW 権限の取得が難しくなっており、サードパーティ アプリで他のサードパーティからのオーバーレイをブロックできるようになりました。

Android 12 では、プリインストールされたアプリに SYSTEM_ALERT_WINDOW appOp が自動的に付与されません。 プリインストール アプリで使用するには、ユーザーが明示的に付与する必要があります。システムアプリには、引き続きデフォルトで権限が付与されます。

サードパーティ アプリは、アプリの上にアプリ オーバーレイが描画されることをオプトアウトできます。 これは、cloak and dagger スタイルの攻撃に対する保護メカニズムになります。これはすべてのアプリで利用できるため、バンキング アプリなど、セキュリティが重視されるアプリにおいてアプリ自体を保護できます。この機能を使用するには、アプリのマニフェストで HIDE_OVERLAY_WINDOWS 権限を宣言する必要があります。

HIDE_NON_SYSTEM_OVERLAY_WINDOWS(signature|privileged) のサポートが終了し、HIDE_OVERLAY_WINDOWS に置き換えられました。

ベンダー ブート パーティションの変更

ブートイメージ ヘッダー バージョン 4 を使用する Android 12 デバイスは、vendor_boot パーティションで複数のベンダー RAM ディスクをサポートしています。このような RAM ディスク フラグメントは、ベンダー RAM ディスク セクションに順次連結されます。 ベンダー RAM ディスク テーブルは、ベンダー RAM ディスク セクションのレイアウトと、各ベンダー RAM ディスク フラグメントのメタデータを示します。

Android 12 以降ではベンダー ブート パーティションが変更されたため、default をベンダー RAM ディスク フラグメント名として使用することはできません。予約済みとして指定されています。いかなる場合でも、ベンダー RAM ディスク フラグメントの名前として使用することはできません。

詳細については、ベンダー ブート パーティション複数のベンダー RAM ディスクをご覧ください。

音声

オーディオ機器のルーティングの組み合わせ

オーディオ機器のルーティング機能を組み合わせると、複数のオーディオ機器に同時に音声をストリーミングできるようになります。この機能を使用すると、特権アプリはシステム API を通じて、特定の戦略に対して複数の優先デバイスを選択できます。この機能で提供される公開 API を使って、アプリでオーディオ機器の機能をより正確に検出することが可能となります。

詳細については、オーディオ機器のルーティングの組み合わせをご覧ください。

オーディオ HAL V7 の更新

下位互換性の問題に対応するため、Android 13 以降、すべての HAL の変更に安定版 AIDL が必須となります。将来の AIDL の採用に向けて準備と強化を行うため、Android 12 では Audio HAL のバージョン 7 に大幅な変更が加えられています。

詳細については、Audio HAL V7 の更新オーディオ ポリシーの例をご覧ください。

カメラ

折りたたみ式デバイス用のカメラの静的メタデータ エントリ

Android 12 で導入されるカメラの静的メタデータ エントリ deviceStateOrientationMap により、カメラ HAL はデバイスの折りたたみ状態の変化によってトリガーされたセンサーの向きの変化をカメラ クライアントとカメラ フレームワークに伝えられるようになります。折りたたみ式デバイスは、デバイスの折りたたみ状態に応じてセンサーの向きが異なる物理デバイスで構成される 1 つ以上の論理カメラを必要に応じて使用できます。メタデータ エントリ deviceStateOrientationMap により、カメラ フレームワークでは、キャプチャ結果で有効な物理 ID が変わった場合に、必要な出力サーフェス変換を確実に適用できるようになります。

詳しくは、metadata_definitions.xml をご覧ください。

CameraX ベンダー拡張機能のサポート要件

Android 12 では、CameraX 拡張機能をサポートするデバイスは ro.camerax.extensions.enabled プロパティを true に設定する必要があります。これにより、デバイスが拡張機能をサポートしているかどうかを照会できます。

詳細については、ベンダー ライブラリをデバイスに設定するをご覧ください。

Quad Bayer カメラセンサーのサポート

画質と低照度性能の面で高い柔軟性を備えた Quad / Nona Bayer パターンに代表される超高解像度カメラセンサーを搭載したデバイスをアプリで活用できるよう、Android 12 ではプラットフォーム API が導入されています。新しい API は、こうしたセンサーの固有の動作をサポートし、フル解像度または「最大解像度」モードと「デフォルト」モードで動作するときに、異なるストリーム構成や組み合わせをサポートする可能性があることを考慮に入れています。

超高解像度カメラセンサーのカメラ HAL サポートを実装するには、デバイス メーカーが以下のファイルの変更を実装する必要があります。

互換性

SIM カードの ADN サポート要件

Android 12 以降、CTS テストに使用するデバイスのすべての SIM カードで、短縮ダイヤル番号(ADN)の保存をサポートする必要があります。

詳細については、画面とストレージをご覧ください。

Camera ITS の更新

Android 12 では、カメラ画像テストスイート(ITS)において、新しいテストと更新されたテスト、Python 3 へのリファクタリング、Mobly テスト フレームワークの採用など、さまざまな更新が行われています。

詳細については、Android 12 カメラ画像テストスイートのリリースノートをご覧ください。

CDD の更新

Android 12 互換性定義ドキュメントでは、以前のバージョンをアップデートする際に互換性を保つための各種要件について定めています。

接続

5G ネットワークのスライス

Android 12 では、5G ネットワーク スライスがサポートされています。ネットワーク仮想化を使用して、1 つのネットワーク接続を複数の異なる仮想接続に分割し、異なるタイプのトラフィックに異なる量のリソースを提供するものです。これにより、ネットワーク事業者は、ネットワークの一部を特定の顧客セグメント専用にして、特定の機能を提供できます。

詳細については、5G ネットワークのスライスをご覧ください。

コンパニオン デバイス マネージャーのプロファイル

Android 12 以降をターゲットとするアプリは、スマートウォッチに接続する際にコンパニオン デバイス プロファイルを使用できます。プロファイルを使用すると、デバイスタイプ固有の権限の付与を 1 つのステップにまとめることで、登録プロセスを簡素化できます。

権限を付与するよう求めるプロンプトを表示するスマートフォンのスクリーンショット

まとめた権限は、デバイスが接続されるとコンパニオン アプリに付与され、デバイスが関連付けられている間に限り有効です。アプリを削除するか関連付けを削除すると、権限が削除されます。

詳細については、コンパニオン デバイス プロファイルをご覧ください。

IMS 利用サービス資格(TS.43)

Android 12 は TS.43 Service Entitlement Configuration に対応しています。これは、Voice-over-Wi-Fi(VoWiFi)、Voice-over-LTE(VoLTE)、SMS over IP(SMSoIP)、要求元デバイスに関連付けられた eSIM コンパニオン デバイスの On-Device Service Activation(ODSA)、データプラン情報などのサービスを有効化する利用資格検証手順を定義する GSMA 仕様です。

詳細については、IMS サービスの利用資格をご覧ください。

IMS の単一登録

Android 12 では、MMTEL 機能と RCS 機能を提供するための単一登録モデルのサポートが追加されています。このモデルでは、デバイスの ImsService から提供される単一の IMS 登録を通じて、すべての IMS 機能をデバイスで管理できます。単一のデバイスで複数の IMS 登録を管理するデュアル登録モデルと比較すると、単一登録モデルでは携帯通信会社のネットワークのトラフィックが減少し、信頼性が向上します。

詳細については、IMS の単一登録をご覧ください。

位置情報によるタイムゾーン検出

Android 12 には、位置情報によるタイムゾーン検出が用意されています。これは、デバイスが位置情報とタイムゾーンのマップデータを使用して現在のタイムゾーンを判別できるようにする、オプションの自動タイムゾーン検出機能です。

詳細については、位置情報によるタイムゾーン検出をご覧ください。

MAC アドレスのランダム化

Android 12 では、永続的ではない MAC アドレスのランダム化タイプが導入されています。これにより、Android はあらゆる接続の開始時に特定のネットワークの MAC アドレスを再ランダム化できます。

詳細については、MAC アドレスのランダム化の動作をご覧ください。

ネットワークの選択

Android 12 では、NetworkScore クラスを使用した新しいネットワーク選択メカニズムが導入されています。ネットワークの選択は、アプリとシステムのネットワーク リクエストを Android が処理する方法と、アプリのデフォルト ネットワークの選択方法に影響します。

詳細については、ネットワークの選択をご覧ください。

通知の CallStyle

Android 12 以降では、音声通話とビデオ通話の着信と進行中の通話では、新しい通知スタイル CallStyle を使用することをおすすめします。この通知スタイルには、通話に応答する、拒否する、通話を切るための操作ボタンが含まれています。また、会話で使用されるものと同じ人中心のスタイルが使用されており、シェードの上部で通話通知をランク付けする動作と一貫性があります。

アプリで CallStyle 通知スタイルを使用するには、全画面表示インテントまたはフォアグラウンド サービス(関連付けられた承認を含む)を使用する必要があります。このスタイルでは、通話の通知がシェードの上部にランク付けされます。進行中の通話では、ステータスバーにチップが追加され、ユーザーは通話アプリにすばやく戻ることができます。

詳細については、通話の通知をご覧ください。

Passpoint の更新

Android 12 では、Passpoint R3 に加え、利用規約、場所の情報の URL、装飾された ID 接頭辞、緊急認証解除の処理などの Passpoint 機能が導入されています。

上記の機能の詳細については、Passpoint(Hotspot 2.0)をご覧ください。

クイック アクセス ウォレットの更新

Android 12 以降では、クイック アクセス ウォレット機能は、Android 11 のように電源ボタン メニューからではなくシェードから使用できます。ウォレット UI はシステム UI 内で動作し、frameworks/base/packages/SystemUI/src/com/android/systemui/wallet にあります。

詳細については、クイック アクセス ウォレットをご覧ください。

シンプルな接続ユーザー エクスペリエンス

Android 12 では、ネットワーク接続状況の把握、インターネットプロバイダの切り替え、ネットワーク接続問題のトラブルシューティングに役立つ、シンプルな接続エクスペリエンスがオプションで提供されます。

詳細については、接続ユーザー インターフェースをご覧ください。

タイムソースの優先度

Android 12 以降、フレームワークはデフォルトで NITZ(ネットワーク アイデンティティとタイムゾーン)のソースよりも NTP(ネットワーク タイム プロトコル)タイムソースを優先します。

デバイスでタイムソースの優先度を設定してテストする方法については、タイムソースの優先度をご覧ください。

切り替えによる 2G の無効化

セキュリティ強化のため、Android 12 では [設定] に 2G の切り替えが導入されており、ユーザーは 2G モバイル接続を完全に無効にできます。 この機能を利用するには、Radio 1.6 HAL を実装する必要があります。

2G の切り替え機能は、デフォルトで有効になっています。携帯通信会社は、CarrierConfig フラグ KEY_HIDE_ENABLE_2G を使用して実行時にこの機能を無効にできます。

デバイス メーカーは、緊急通報時にすべてのネットワークが利用できることを確認する必要があります。

UICC の仕様

Android 12 で CTS キャリア API テストを実行するには、デバイスで、最新バージョンのサードパーティ GSMA TS.48 テスト プロファイル仕様で指定されている要件を満たす、CTS キャリアの権限を持ったデベロッパー UICC を使用する必要があります。

詳細については、UICC の準備をご覧ください。

Wi-Fi AP / AP の同時実行

Android 12 では、Wi-Fi AP / AP の同時実行機能が導入され、デバイスでブリッジされたデュアル(AP + AP)テザリング アクセス ポイントを起動できるようになりました。

詳細については、Wi-Fi AP / AP の同時実行をご覧ください。

Wi-Fi / セルラー共存チャンネル回避

Android 12 では、Wi-Fi / セルラー共存チャンネル回避機能が導入されました。これは、セルラー チャンネル間で干渉がある場合に、安全でない Wi-Fi チャンネルの使用を特定して防止する機能です。これには、STA、SoftAp、Wi-Fi Direct(P2P)、Wi-Fi Aware(NAN)などのインターフェースが含まれます。

Wi-Fi セキュリティ プロトコルの機能強化

Android 12 では、WPA3 Hash-to-Element(H2E)、WPA2 / WPA3-Enterprise 移行モード、Transition Disable インディケーションがサポートされています。

詳細については、WPA3 と Wi-Fi Enhanced Open をご覧ください。

Wi-Fi STA / STA の同時実行

Android 12 では、Wi-Fi STA / STA の同時実行機能が導入され、2 つの Wi-Fi ネットワークに同時に接続できるようになりました。

詳細については、Wi-Fi STA / STA の同時実行をご覧ください。

デバイス

Android 12 の新しい自動車機能

下記の新機能の詳細については、自動車の新機能をご覧ください。

ディスプレイ

信頼できないタッチのブロック

システム セキュリティの維持と優れたユーザー エクスペリエンスを実現するため、Android 12 では信頼できないタッチイベントをブロックできるようになりました。 こうすることで、オーバレイにより安全でない方法でアプリが覆い隠されている場合に、アプリでタッチイベントが使用されないようにします。

会話の通知とウィジェット

Android 11 では、通知シェードでの会話通知の動作と配置を優先度とアラートレベルごとにカスタマイズすることが可能となり、会話に重要マークを付けて、会話固有のバブルを会話スペースに表示できるようになりました。こうした Android 11 の機能に加えて、Android 12 の会話ウィジェット機能を使用すると、ユーザーは重要な連絡先の会話ウィジェットをホーム画面に追加することで、通知を待たずに簡単に会話を再開できます。

詳細については、会話の通知とウィジェットについての記事をご覧ください。

ウィンドウのぼかし

Android 12 では、ウィンドウのぼかし効果(背景のぼかしや背後のぼかしなど)を実装するための公開 API が利用可能となっています。この API を使用すると、表示するウィンドウの背後にあるものをすべてぼかすことができます。背景をぼかしたウィンドウを作成して、すりガラスの効果を生み出したり、背後の画面全体をぼかしてウィンドウを表示し、被写界深度の効果を生み出したりすることができます。この 2 つを組み合わせることも可能です。

この新機能の詳細と実装方法については、ウィンドウのぼかしについての記事をご覧ください。

ウィンドウの拡大

ロービジョン ユーザーは、Android 12 のウィンドウ拡大機能を使用するとディスプレイ上のあらゆるものを拡大できます。ウィンドウ拡大機能は、画面全体のズーム機能とは異なり、画面の選択した部分を拡大する機能です。選択したウィンドウをディスプレイ全体にドラッグすることで、必要に応じて画面のさまざまな部分を拡大できます。

詳細については、ウィンドウ拡大鏡をご覧ください。

エンタープライズ

デバイス管理の更新

Android 12 では以下のデバイス管理機能の更新が行われています。

  • 管理対象プロファイル データ分離の更新。仕事用プロファイルが設定された個人所有デバイスの場合、Android 12 ではデバイス ハードウェア識別子(IMEI、MEID、シリアル番号)へのアクセス権が削除され、特定の組織に対する仕事用プロファイル登録を識別する一意の登録固有の ID が提供されます。詳細については、デバイス ID をご覧ください。

  • デバイスのプロビジョニングの更新。Android 12 では、デバイスのプロビジョニングにいくつかの変更が加えられています。詳細と変更点のリストについては、Android 12 の更新をご覧ください。

グラフィック

Composer HAL でのホットプラグ対応

Android TV セットトップ ボックス(STB)やオーバー ザ トップ(OTT)など、外部接続されたディスプレイ(HDMI またはDisplayPort 経由)を持つデバイスでは、ディスプレイ機能(ディスプレイ モードやサポートされているHDRタイプなど)を動的に変更できます。Android 12 以降、フレームワークの変更により、ホットプラグ対応やダイナミック ディスプレイ機能がサポートされています。

詳細については、Composer HAL でのホットプラグ対応をご覧ください。

モジュラー システム コンポーネント

Android 13 では、新しいモジュラー システム コンポーネントが追加されたり、既存のモジュラー システム コンポーネントが更新されたりしています。新しいモジュールは次のとおりです。

  • ART: このモジュールは、最新の管理対象ランタイムの最適化、機能、バグ修正をユーザーに提供することで Android の利便性を改善することを目的としています。

  • Device Scheduling このモジュールには、デバイスがアイドル状態かどうかを検出するロジックがあり、ユーザーが操作しなくても再起動できます。

更新されたモジュールは次のとおりです。

  • adbd: モジュールの境界を更新しました。

  • DocumentsUI: ファイル ブラウジングを無効にしました。

  • ExtServices: DisplayHashingService を追加し、モジュールの境界を更新しました。

  • Media: 新しいメディア コンポーネントを追加しました。

  • NNAPI Runtime: モジュールの境界を更新しました。

  • PermissionController: PermissionController モジュールを完全にモジュール化し、モジュールの境界を更新しました。

  • SDK Extensions: モジュールの責任を更新し、新しいコンポーネントを追加しました。

  • Statsd: モジュールの境界を更新しました。

  • Tethering: 機能を追加し、モジュールの境界を更新しました。

  • Time Zone Data: パッケージ形式を更新しました。

  • Wi-Fi: モジュールの境界を更新しました。

メディア

互換性のあるメディアのコード変換

デバイスは、互換性のあるメディアのコード変換により、HEVC などストレージ効率に優れた最新のメディア形式をビデオ キャプチャに使用しながら、アプリとの互換性を維持できます。この機能によってデバイス メーカーは、AVC の代わりに HEVC をデフォルトで使用し、動画の画質を向上させながらストレージと帯域幅の要件を緩和することが可能となります。詳細については、互換性のあるメディアのコード変換をご覧ください。

パフォーマンス

アプリの休止状態

Android 12 には、権限の自動取り消しと同様に、ユーザーが数か月使用していないアプリを休止する機能があります。

詳細については、アプリの休止状態をご覧ください。

cgroup 抽象化レイヤ

Android 12 のコントロール グループ(cgroup)抽象化レイヤでは、特定の cgroup コントローラをオプションとして定義する機能や、writepid コマンド(非推奨)に代わる新しい task_profiles コマンドを使用する機能などの新機能が導入されています。この置き換えにより、cgroup 階層のタスクを移行するときに、基礎となる cgroup の実装が上位レイヤに影響を与えないようになります。Android 12 では、API レベルごとのタスク プロファイルもサポートされています。

詳細については、cgroup 抽象化レイヤをご覧ください。

権限

Bluetooth の権限

Android 12 では、BLUETOOTH 権限と BLUETOOTH_ADMIN 権限に代わって、以下の Bluetooth 権限が導入されています。

  • BLUETOOTH_SCAN: 付近の Bluetooth デバイスの検出とペア設定をアプリに許可します。
  • BLUETOOTH_ADVERTISE: 付近の Bluetooth デバイスへの広告の配信をアプリに許可します。
  • BLUETOOTH_CONNECT: ペア設定された Bluetooth デバイスへの接続をアプリに許可します。

上記の権限は、新しい NEARBY_DEVICES 実行時の権限グループの一部です。この権限グループを使用すると、LOCATION ランタイム権限がなくても、スマートウォッチに接続するなどのユースケースが可能になります。

これらの新しい権限はアプリで互換性があるため、Android 11 以前で実行されるアプリに変更を加える必要はありません。Android 11 以前を対象としたレガシーアプリの場合、プラットフォームにより従来の Bluetooth 権限のリクエストが自動的に新しい権限のリクエストに変換されます。アプリで Android 12 以降を対象とするようにアップグレードする場合、新しい Bluetooth 権限を明示的にリクエストする必要があります。

権限の使用方法について詳しくは、Bluetooth の権限をご覧ください。

プライバシー インジケーター

Android 12 では、アプリがカメラとマイクのアプリ オペレーション権限を通じてプライベート データソースを使用している場合、インジケーターによって透明性が確保されます。

App Ops は、Android 12 でアクティビティ ステータスと個々の API 呼び出しの回数を追跡し、マイクとカメラのインジケーターを操作して、アプリがデバイスの音声データとカメラデータにアクセスしたときにユーザーに提示します。ユーザーがマイクまたはカメラのインジケーターをクリックすると、自分のデータにアクセスしたアプリが表示されます。

この機能はすべての OEM で必須です。詳細については、プライバシー インジケーターをご覧ください。

位置情報

Android 12 以降では、アプリが位置情報にアクセスするときに、おおよその精度の位置情報のみを取得するよう、ユーザーがリクエストできます

この変更は、Android 12 以降をターゲットとするアプリにのみ影響するように設計されています。ただし、古いバージョンの PermissionController モジュールを搭載するデバイスでは、ターゲット SDK のバージョンに関係なく、この変更はすべてのアプリに影響します。

ランタイム

dexpreopt と <uses-library> のチェック

Android 12 では、<uses-library> の依存関係を持つ Java モジュールについて、DEX ファイルの事前(AOT)コンパイル(dexpreopt)に関するビルドシステムの変更があります。場合によっては、こうしたビルドシステムの変更によりビルドが中断されることがあります。

破損に備える方法と破損を修正および軽減する方法については、Dexpreopt と <uses-library> チェックをご覧ください。

テスト

互換性テストスイート(CTS)

Android 12 の CTS には、新規の重要なモジュールが多数追加されおり、またテストにも変更があります。詳しくは、CTS のリリースノートをご覧ください。

テレビ

HDMI-CEC コントロール サービス

Android 12 は、HDMI-CEC を使用して、デバイスの復帰時やスリープ時に、HDMI 接続されたディスプレイを自動的に制御します。

詳細については、HDMI-CEC コントロール サービスをご覧ください。

チューナー フレームワーク

Android 12 では次のようになります。

  • Tuner HAL1.1 以降を搭載したフロントエンドは、DTMB DTV 規格に対応しています。サポートされているフロントエンド機能と設定は以下のとおりです。

    • DtmbFrontendCapabilities

    • DtmbFrontendSettings

  • Tuner SDK API は、Tuner 1.0 と下位互換性のあるバージョン アップグレードである Tuner HAL 1.1 の新機能をサポートしています。

  • android.media.tv.tuner.TunerVersionChecker.getTunerVersion() は、実行中の HAL バージョンを確認します。

更新

APEX 圧縮

Android Pony EXpress コンテナ(APEX)の更新版がインストールされると、プリインストール版は使用されなくなりますが、占有メモリ容量は同じになります。その占有スペースは利用できなくなります。Android 12 では、APEX 圧縮により、読み取り専用パーティション(/system パーティションなど)で高度に圧縮された APEX ファイルセットが使用されるため、このストレージの影響が最小限に抑えられます。Android 12 での APEX 圧縮については、圧縮 APEX をご覧ください。

Resume-on-Reboot のセキュリティと利便性

Android 12 では、マルチクライアントのサポートとサーバーベースの再起動機能が強化されています。RoR(Resume-on-reboot)プロセスは、デバイスのアイドル時間に OTA アップデートを実行できるため、ユーザーのセキュリティと利便性が向上します。また、Android 12 のマルチクライアントおよびサーバーベースの更新機能は、連携してデバイスのハードウェアレベルのセキュリティを提供します。

詳細については、Resume-on-Reboot をご覧ください。

RoR による SIM PIN リプレイ

Android 12 には、RoR による再起動後にシームレスな PIN コード検証を行うための SIM-PIN リプレイ機能があります。SIM PIN は、ユーザーが正常に有効化、検証、または変更するたびに再暗号化されて保存されます。

詳しくは、SIM-PIN リプレイをご覧ください。

仮想 A/B アップデート

Android 12 では、スナップショットされたパーティションに対して仮想 A/B 圧縮を使用できます。Android 12 では、ブートローダーが使用しない更新可能なパーティションをスナップショット化することで、容量を節約できます。これは圧縮することもできます。Android 12 のビルドでスナップショット圧縮を有効にすると、/data パーティションの容量を節約できます。

スナップショット圧縮を使用した仮想 A/B を実装するには、デバイス固有のコードを変更する必要があります。変更と実装について詳しくは、仮想 A/B の概要ページと仮想 A/B の実装ページをご覧ください。