Android 10 リリースノート

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

ビルド

java_sdk_library

Android 10 では、共有 Java ライブラリの互換性の問題を解決するための新しいビルドルールとして、java_sdk_library が導入されています。デバイス メーカーは、独自の共有 Java ライブラリでこのメカニズムを使用して、独自の API の下位互換性を維持できます。

アーキテクチャ

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

Android 10 は、一部の Android システム コンポーネントをモジュール化しており、Android の通常のリリース サイクル以外で更新できます。モジュールには次のものがあります。

ハードウェア抽象化レイヤ(HAL)

Android 10 では、クライアントがない場合に HAL を自動的にシャットダウンするためのサポートが追加されました。

カーネル

ABI

Android 10 は、カーネル モジュールとの互換性に影響するカーネル ABI の変更を比較、追跡、軽減するための新しい ABI モニタリング ユーティリティをサポートしています。

Android 10 には、シンボルベースの ABI 使用状況チェッカーも導入されています。チェッカーは、ビルド時に古いビルド済みのバイナリを検出できるので、共有ライブラリのデベロッパーは、変更により無効となった可能性のあるビルド済みのバイナリとビルドし直す必要のあるバイナリを判断できます。

Android Live-Lock Daemon

Android 10 には、Android Live-Lock Daemon(llkd)が搭載されています。これは、カーネルのデッドロックを捕捉して軽減するためのものです。

ARM64 上の vDSO32

Android 10 は 64 ビットカーネルでの vDSO32 の使用をサポートしています。これにより電池駆動時間が 0.4% 増加し、その他のパフォーマンスの向上が実現しています。

初期マウント パーティション用の fstab エントリ

Android 10 では、デバイスが初期段階の RAM ディスクで fstab ファイルを使用して、初期マウント パーティションfstab エントリを指定することが必要です。

HIDL

Offload BroadcastQueue

Android 10 には、既存のバックグラウンドフォアグラウンドのキューに対して、新しいオフロードBroadcastQueue が用意されています。オフロード キューの優先度とタイムアウト動作は、バックグラウンド キューと同じです。より重要でユーザーに表示されるブロードキャストが起こる可能性があるバックグラウンド キューがブロックされるのを回避するため、BOOT_COMPLETED ブロードキャスト(多くのアプリがリッスンするため完了まで長時間を要する可能性がある)をオフロード キューが処理します。 オフロード キューは現在、BOOT_COMPLETED ブロードキャストのみを処理していますが、将来的には他の長いブロードキャストを処理する可能性もあります。

SystemSuspend サービス

Android 10 では、システム サスペンドを開始する libsuspend のスレッドが、SystemSuspend HIDL サービスに置き換えられました。この変更によって、Android HIDL インフラストラクチャのメリットを活用しながら、以前のバージョンと同等の機能を実現しています。

HIDL の safe_union

Android 10 では、明示的にタグ付けされた共用体タイプである safe_union が HIDL に導入されています。

構成

ConfigStore HAL

ConfigStore HAL はメモリ消費量が多く、使用方法が難しいため、Android 10 ではサポートを終了し、HAL をシステム プロパティに置き換えました。

Config File Schema API

Android プラットフォームには、構成データを格納する多数の XML ファイルが含まれています。XML ファイルの多くは vendor パーティションに存在しますが、system パーティションで読み込まれます。この場合、XML ファイルのスキーマは 2 つのパーティション間のインターフェースとして機能するため、明示的にスキーマを指定し、下位互換性を持たせる必要があります。Android 10 より前のプラットフォームには、XML スキーマの指定と使用を要求するメカニズムや、互換性が失われるスキーマ変更を防ぐメカニズムはありませんでした。Android 10 には、そのためのメカニズムとして Config File Schema API が搭載されています。

API としてのシステム プロパティ

パーティション間でアクセスされるシステム プロパティは、sysprop 説明ファイルにスキーマ化され、プロパティにアクセスするための API が C++ 用のコンクリート関数と Java 用のクラスとして生成されます。

ベンダー インターフェース(VINTF)オブジェクト

VINTF

Android 10 の VINTF の変更点は次のとおりです。

ブートローダー

RAM ディスク

Android 10 では、ルートファイル システムramdisk.img には存在せず、system.img に統合されています。

ODM パーティションのビルド

Android 10 は、Android ビルドシステムを使用した odm パーティションのビルドをサポートしています。個別の /odm パーティションをカスタマイズに使用でき、それによって複数のハードウェア SKU に 1 つのベンダー イメージを使用できます。これにより、ODM は SoC ベンダーの Board-Support Package(BSP)を特定のデバイス(ODM のボード)にカスタマイズできます。ハードウェア抽象化レイヤ(HAL)に、ボード固有のコンポーネント、ボード固有のデーモン、または独自の機能のカーネル モジュールを実装できます。また、SoC コンポーネントの置き換えやカスタマイズも可能です。

ブートイメージ ヘッダーのバージョニング

Android 10 は、ブートイメージ ヘッダーをバージョン 2 に更新します。この中には、デバイスツリー blob(DTB)イメージを格納するセクションが含まれます。Android 10 VTS テストでは、Android 10 を搭載するすべてのデバイスがブートイメージ ヘッダー バージョン 2 を使用し、有効な DTB イメージがブートイメージまたは復元イメージの一部として含まれていることを検証します。

非 A/B デバイスのリカバリ イメージ

Android 9 以降では、デバイスのリカバリ イメージにオーバーレイ イメージの情報を含める必要があります。 デバイス メーカーは、DeviceTree または ACPI(Advanced Configuration and Power Interface)を使用して、すべての検出不可能なデバイスを記述できます。Android 10 以降では、Device Tree blob for overlay(DTBO)の代わりに ACPI を使用するアーキテクチャがサポートされています。

安定版の AIDL

Android 10 では、安定版の Android インターフェース定義言語(AIDL)のサポートが追加されています。これは、AIDL インターフェースによって提供されるアプリケーション プログラム インターフェース(API)やアプリケーション バイナリ インターフェース(ABI)を追跡するための新しい方法です。

ユーザー空間への fastboot の移行

Android 10 では、fastboot の実装をブートローダーからユーザー空間に移動することで、サイズ変更可能なパーティションのサポートを追加しました。

ディスプレイ

HDR 動画再生

Android 10 は、HDR10、VP9、HDR10+ の再生に対応しています。

テキスト分類

テキスト分類では機械学習技術を使用して、デベロッパーによるテキスト分類を支援します。Android 10 では、TextClassifier API に対して suggestConversationActionsdetectLanguage の 2 つのメソッドが導入されています。 suggestConversationActions メソッドは、会話内容に基づき回答や反応の提案を生成します。detectLanguage メソッドはテキストの言語を検出します。

Zawgyi フォント レンダリングのサポート

Zawgyi はミャンマーで最も一般的なフォントです。Android 9 以前では、Unicode に準拠していないことから、Zawgyi のレンダリングをサポートしていませんでした。 Android 10 では、Unicode のビルマ語と Zawgyi の両方をレンダリングできる Unicode フォントを含めることでこれを解決しています。Android 10 で起動するデバイスで、Zawgyi フォントのレンダリングをサポートするための実装作業は必要ありません。Zawgyi をサポートするカスタム実装がデバイスにある場合、次のことが可能です。

  • これらの変更を元に戻し、プラットフォームに対応したメソッドを使用します。
  • 共通の Zawgyi フォントをシステムに保存し、fonts.xml でロケールコード my-qaag を使用します。詳細については、Zawgyi(Qaag)での Unicode CLDR リリースノートをご覧ください。

アプリアイコンの非表示に関する制限事項

Android 10 では、アプリのランチャー アイコンを非表示にする機能が制限されています。アプリでランチャー アクティビティが有効になっていない場合、合成アクティビティがランチャーに表示されます。この合成アクティビティは、システム設定内のアプリの詳細ページを表します。

アプリアイコンの表示に使用されるロジック(アプリアイコンが表示されないアプリの種類を含む)の詳細については、API リファレンスの getActivityList() のドキュメントをご覧ください。

設定

ユーザー補助機能の向上のため、Android 10 には、ユーザーがカスタマイズ可能なタイムアウト設定が用意されています。Android 10 では API と設定が変更されています。設定をカスタマイズする場合は、この機能がサポートされていることを確認してください。デバイス上でタイムアウトさせる UI 要素がある場合は、それらの要素に timeouts API を使用します。詳細については、Android デベロッパー向けのユーザー補助機能のガイドラインをご覧ください。

互換性

Android 互換性定義ドキュメント(CDD)

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

テスト

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

Android CTS には独立したリリースノート ページがあり、Android 10 に関する多くの重要な変更点が記載されています。

CTS のダウンロード

Android 10 向けの CTS パッケージは、CTS ダウンロードから入手できます。格納されているテストのソースコードは、オープンソース ツリーの android-cts-10_r1 タグによって同期できます。

CTS Shim APEX

Android 10 には、CtsShimApex というパッケージが導入されています。APEX 管理用の CTS テストを作成するデバイスには、これをプリインストールする必要があります。

テストハーネス モード

CTS テストハーネス モードは、デベロッパーがデバイスやデバイス群のテストを自動化するのに役立ちます。

Instant Apps モード

Android 10 以降、CTS は Instant Apps モードで実行されます。つまり、テスト APK を Instant App としてインストールし、テストを実行します。

Android 10 には、Instant App の CTS モードに加えて、Instant App 用の CTS 検証ツールが搭載されています。

CTS 検証ツールの Pro Audio テスト

Android 10 では、Pro Audio 準拠に関する CTS 検証ツールのテストが追加されています。

CTS 検証ツール MIDI テスト

Android 10 では、CTS 検証ツール MIDI テストは、USB MIDI インターフェース、Bluetooth MIDI インターフェース、仮想 MIDI デバイスパスを使用して MIDI 機能をテストします。

CTS テストの解釈

Android 10 では、CTS の結果を解釈する方法が更新されています。

ベンダー テストスイート(VTS)

デバッグ用 RAM ディスクを使用した VTS テスト

Android 10 では、GSI がリリース署名されているため、CTS-on-GSI/VTS 準拠テストを実行するための汎用システム イメージ(GSI)が、userdebug からユーザー ビルドタイプに変更されます。ただし、テスト中の Android デバイスへのホストルート権限を与える adb root コマンドは、ユーザービルドでは使用できません。この問題は、VTS の実行に adb root が必要なことに起因しています。

デバッグ用 RAM ディスクは、デバイスがロック解除されている場合に adb root を可能にするため導入されました。これにより、同じユーザービルド system.img(GSI または OEM の system.img)を再利用してテストフローを簡素化できます。

Hardware Composer の検証

Android 10 では、Hardware Composer の検証用の新しい VTS テストクラスが IComposerClient.halreadback インターフェースを介して追加搭載されています。 ベンダーが readback を実装しない場合、テストは自動的にパスします。

デバッグ

異なるクラスローダーを持つ共有ライブラリを読み込む

Android 9 以前のアプリは、リンクされた Java 共有ライブラリをアプリのクラスローダーから読み込んでいました。Android 10 では、フレームワークはアプリのクラスローダーとは別のクラスローダーを使用することにより、リンクされた Java 共有ライブラリを uses-library または uses-static-library 経由で読み込みます。

一般に、アプリは特定のクラスローダーを使用する必要がないため、アプリの動作に異常が生じることはありません。ただし、アプリが単一のクラスローダーを使用している場合、その動作には異常が生じます。さらに、同じパッケージ内のクラスのパッケージ プライベートの可視性は引き続きサポートされますが、共有ライブラリではサポートされません。

デバイス メーカーは、Android 10 搭載デバイスをテストする際にアプリの互換性に関する問題を認識する可能性があります。

セキュリティ機能

セキュリティとプライバシーだけに関する機能強化の詳細な一覧については、Android 10 のセキュリティとプライバシーの機能強化のページをご覧ください。

顔認証

顔認証では、ユーザーはデバイスの正面を見るだけでデバイスのロックを解除できます。Android 10 では、カメラフレームを安全に処理できる新しい顔認証スタックのサポートが追加されており、サポート対象のハードウェアにおける顔認証時にセキュリティとプライバシーを保護します。また Android 10 では、簡単にセキュリティ要件を満たせる実装方法が用意されており、オンライン バンキングなどのサービス トランザクションでセキュリティ機能をアプリケーションに統合できます。

拡張アクセス

Trust Agent は、Smart Lock などの二次的な認証メカニズムの基盤となるメカニズムであり、Android 10 でのみロック解除を拡張できます。ロックされたデバイスのロックを Trust Agent で解除することはできなくなりました。また、デバイスをロック解除状態に保てるのは最長 4 時間です。

暗号化

OEMCrypto

Android 10 は OEMCrypto API バージョン 15 を使用します。

テスト

BoundsSanitizer

Android 10 は、Bluetooth とコーデックで BoundsSanitizer(BoundSan)をデプロイします。BoundSan は、UBSan の境界サニタイザーを使用します。この緩和は、モジュール単位で有効になります。Android の重要なコンポーネントを安全に保護するものであり、無効にすることはできません。BoundSan は、次のコーデックで有効になっています。

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

整数オーバーフローの無害化

Android 10 では、ソフトウェア コーデックで整数オーバーフローの無害化(IntSan)が有効になりました。デバイスのハードウェアでサポートされていないコーデックに対して、再生パフォーマンスが許容可能であることを確認します。IntSan は、次のコーデックで有効になっています。

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec

実行専用メモリ

デフォルトでは、AArch64 システム バイナリの実行可能コード セクションは、コードの再利用による Just-In-Time 攻撃を防ぐための強化緩和策として実行専用(読み取り不可)としてマークされています。データとコードを混在させたコードおよび、意図的にこれらのセクションを検査するコード(メモリ セグメントを最初に読み取り可能として再マップしない場合も含む)は機能しなくなりました。Android 10 のターゲット SDK を使用したアプリの API レベル 29 以降は、実行専用メモリ(XOM)セクションを読み取り可能にする必要はありません。

Scudo

Scudo は、ヒープ関連の脆弱性に対する耐性を高めるために設計された、動的なユーザーモード メモリ アロケータです。標準的な C の割り当て、割り当て解除のプリミティブ、C++ のプリミティブを提供します。

ShadowCallStack

ShadowCallStack(SCS)は、LLVM インストゥルメンテーション モードです。関数の戻りアドレスを非リーフ関数の関数プロローグに別々に割り当てられた ShadowCallStack インスタンスに保存し、戻りアドレスを関数エピローグの ShadowCallStack インスタンスから読み込むことで、戻りアドレス(スタック バッファなど)に対する上書きを回避します。

音声

Audio HAL

Android 10 には、Audio HAL 向けに次の新しい機能が搭載されています。

  • AudioSource
  • AudioFormat
  • AudioChannelMask

Audio HAL とサブシステムの実装に要件が追加されました。

前処理効果

Android では、音響エコー キャンセル、自動ゲイン コントロール、ノイズ抑制などの前処理効果が用意されています。 Android 10 では、VOICE_COMMUNICATION を使用したキャプチャに対して新しい要件が追加されています。

オーディオ ポリシー マネージャ

Android 10 では、オーディオ ポリシー マネージャについて大幅なリファクタリングが実施されており、複雑な自動車用途を柔軟にサポートできるようになっています。

ハイ レゾリューション オーディオ

Android 10 では、ハイ レゾリューション オーディオに関して次の機能改善が実施されています。

  • 浮動小数点サポート
  • 192 KHz 周波数のサポート
  • 8 チャネルのサポート
  • タイミング情報の追加

同時キャプチャ

Android 10 では、アクティブな音声キャプチャを複数同時に行う同時キャプチャのユーザー エクスペリエンスが向上しています。

音声再生キャプチャ

Android 10 には AudioPlaybackCapture という新しい API が搭載されています。これにより、アプリで再生中の音声を他のアプリにコピーできます。この機能は、画面キャプチャと似ていますが、音声のみを対象とします。 主な使用例は、ゲームで再生中の音声をストリーミング アプリからキャプチャできるようにするというものです。

キャプチャ API は、音声がキャプチャされているアプリのレイテンシには影響しません。

MIDI

Android 10 を使用すると、MIDI を使用するプロ向けオーディオ アプリを、AMidi NDK API を使用して Android プラットフォームに簡単に移植できます。

カメラ

Android 10 で導入されたカメラ API、カメラ HAL、カメラ モジュールの変更点の概要については、Android 10 カメラの更新点をご覧ください。

カメラ フレームワークのプライバシー改善

Android 10 では、カメラ フレームワークのプライバシーが強化されています。機密情報を含む可能性のある CameraCharacteristics 内の静的カメラ情報が、ユーザーの同意なしに漏出することを回避するため、機密タグが含まれる静的メタデータを取得する際は、getCameraCharacteristics メソッドを使用して CAMERA 権限を取得する必要があります。

CAMERA 権限を必要とするカメラ特性キーのリストを取得するには、getKeysNeedingPermission メソッドを呼び出します。

セッション再構成クエリ

Android 10 では、セッション再構成クエリ機能が追加されています。内部セッション パラメータの再構成ロジックをより詳細に制御することにより、パフォーマンスが向上しています。

カメラ HAL3 バッファ管理 API

Android 10 では、バッファ管理ロジックを実装できる、オプションのカメラ HAL3 バッファ管理 API が導入されています。これにより、異なるメモリとキャプチャ レイテンシのトレードオフがカメラの HAL 実装で可能になります。

カメラ HAL のダイナミック物理カメラスイッチ

Android 10 では、論理カメラデバイスの基盤となるアクティブな物理カメラを示す、ダイナミック メタデータタグである ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID が導入されています。詳しくは、マルチカメラ サポートをご覧ください。

物理カメラの非表示をサポート

Android 10 では、カメラ HAL を使用すると、アプリで直接開ける物理カメラの数を減らせます。詳細については、マルチカメラ サポートをご覧ください。

Camera2 VNDK API

Android 10 のベンダー モジュールは、2 つの新しい標準 HIDL インターフェースである android.frameworks.cameraservice.service@2.0android.frameworks.cameraservice.device@2.0 を介して、カメラデバイスへのアクセスと制御が可能です。HIDL インターフェースの利便性を向上するために、Android 10 にはベンダーが利用可能なライブラリ libcamera2_vendor も導入されています。このライブラリは、カメラ NDK ライブラリに似ていますが、若干の微修正が加えられています。

ストリーム構成

Android 10 には、推奨されるカメラ ストリームをカメラベンダーからカメラ クライアントにアドバタイズ可能にし、ストリームの組み合わせを照会する API をサポートする機能が追加されています。

カメラ ストリームの組み合わせの要件

Android 10 を搭載するデバイスでは、物理サブカメラ ストリームとのストリームの組み合わせをサポートする必要がなくなりました。ただし、カメラ HAL デバイス バージョン 3.5 の Android 10 を搭載するデバイスでは、物理ストリームを含むストリームの組み合わせがサポートされるかどうかをアプリが照会できるように、isStreamCombinationSupported() をサポートする必要があります。

詳しくは、マルチカメラ サポートをご覧ください。

HEIF イメージング

Android 10 は、High Efficiency Image File 形式(HEIF)画像のネイティブ カメラをサポートしています。HEIF 画像は JPEG 画像と比べて画質が向上し、サイズも小さくなります。HEIF 画像をサポートするには、デバイスに HEIC または HEVC エンコーダが必要です。

モノクロカメラ

Android 10 では、Y8 ストリーム形式、モノクロおよび近赤外線(NIR)カラーフィルタ配列の静的メタデータ、モノクロカメラ に関する DngCreator 関数に対するサポートが追加されています。

接続

通話とメッセージ

緊急通報番号と緊急通報

Android 10 では、緊急通報のサポートが強化されています。IRadio HAL v1.4 をサポートするデバイスであれば、SIM カード、ネットワーク信号、Android データベースなどの情報源から取得した緊急通報番号を使用して緊急通報を開始できます。番号は、警察、消防、救急車などの緊急サービスのカテゴリに基づいて分類できます。

グループ通話 API

グループ通話 API は、Android 9 で追加された eMBMS API の拡張版です。新しい API は、eMBMS ミドルウェア パッケージと連携し、アプリがセルブロードキャスト グループの通話に参加してブロードキャストする際の標準を定義します。グループ通話が適切に機能するには、チップセット ベンダー、ミドルウェア ベンダー、携帯通信会社からのサポートが必要です。デベロッパー向けドキュメントは、developer.google.com にあります。

リモート SIM 機能

Android 10 では、Android ホストデバイス上のメッセージング アプリが Bluetooth などのメカニズムを使用して、スマートフォンで SMS メッセージを送信できるようにするリモート SIM 機能が導入されています。詳細については、getSubscriptionType メソッドと SUBSCRIPTION_TYPE_REMOTE_SIM 定数に関するリファレンス ドキュメントをご覧ください。

複数の eSIM

Android 10 では、EuiccManager クラスは複数の埋め込み SIM(eSIM)、または eUICC を搭載したデバイスをサポートしています。

eSIM の更新

eSIM をサポートする Android 10 デバイスでは、取り外し不能 eUICC スロットの ID 配列を定義する必要があります。デバイスは IRadio HAL v1.4 と IRadioConfig HAL v1.2 にも対応している必要があります。詳細については、eSIM の実装HAL の要件をご覧ください。

5G NSA(非スタンドアロン)

Android 10 では、5G ノンスタンドアローン(NSA)のサポートが追加されています。5G NSA は、ネットワークが既存の 4G インフラストラクチャでサポートされている 5G ネットワークのソリューションです。 Android 10 では、デバイスが 5G ネットワークに接続すると、ステータスバーに 5G アイコンが表示されます。

スマートフォン アカウントの候補

Android 10 では、スマートフォン アカウント提案サービスが導入され、通話時にスマートフォン アカウントの候補をユーザーに表示できます。

携帯通信会社

モバイル ネットワーク設定の移行

Android 10 では、モバイル ネットワーク設定の UI コードが再構築され、テレフォニー スタックから設定スタックに移動されています。移行したコードをサポートするには、次のモバイル ネットワーク設定の構成値を Android リソースから CarrierConfig リソースに変更します。

config_world_mode -> CarrierConfigManager#KEY_WORLD_MODE_ENABLED_BOOL

config_support_tdscdma -> CarrierConfigManager#KEY_SUPPORT_TDSCDMA_BOOL

config_support_tdscdma_roaming_on_networks -> CarrierConfigManager#KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY

config_enabled_lte -> CarrierConfigManager#KEY_LTE_ENABLED_BOOL

デバイス ID

永続的なデバイス識別子(IMEI/MEID、IMSI、ビルドシリアル)は、特権によって保護され、デバイスやプロファイル オーナーアプリに対するアクセス権も付与されています。IMSI と SIM のシリアル番号は携帯通信会社が提供しているため、これらの ID へのアクセス権は携帯通信会社の権限を持つパッケージに付与されます。

Wi-Fi

ネットワークの選択

Android は接続済みネットワークの品質を継続的に評価し、使用可能なネットワークの品質を確認します。Android 10 では、Wi-Fi ネットワークの選択と切り替えのアルゴリズムと手順が更新されています。

Wi-Fi 優先ネットワーク オフロード スキャン

Android 10 では、WifiManagersetDeviceMobilityState() という名前のオプションの API メソッドが導入されました。デバイスが静止している際の優先ネットワーク オフロード(PNO)のスキャン間隔を延長して、電力消費を抑えます。

キャリア Wi-Fi

Android 10 では、キャリア Wi-Fi 機能を備えたデバイスは、構成済みのキャリア Wi-Fi ネットワーク(公開鍵証明書を使用したネットワーク)に自動的に接続します。

Wi-Fi Easy Connect

Android 10 では、デバイスは Wi-Fi Alliance(WFA)により導入された Device Provisioning Protocol(DPP、デバイス プロビジョニング プロトコル)を使用して、Wi-Fi デバイスのプロビジョニングと構成を行う Wi-Fi Easy Connect を使用できます。

Wi-Fi 低レイテンシ モード

Android 10 では、Wi-Fi チップを構成してレイテンシを軽減する Wi-Fi 低レイテンシ モードが導入されています。

更新済みの DHCP サーバー

「IP サーバー」の包括的サービスを構成する一環で、dnsmasq が削除されています。Android 10 では、DHCPv4 サーバー機能の使用を、主に Java で記述された別のコンポーネントで置き換え、Java フレームワークのコントロール プレーンとの統合を改善しています。これにより、DHCP サーバーのセキュリティと更新可能性が向上します。詳しくは packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java をご覧ください。

この変更を実装するための操作は必要ありません。Android 10 でリリースされるデバイス、または Android 10 にアップグレードされるすべてのデバイスは、DhcpServer をデフォルトで使用します。 DHCP サーバーをカスタマイズしている場合は、グローバル設定 tether_enable_legacy_dhcp_server=1 を設定して Android 9 の動作に戻すことができます。 新しい DhcpServer は、ネットワーク コンポーネント モジュールに含まれているため、DHCP サーバー機能のカスタマイズはすべて上流に配置されます。

WPA3 と Wi-Fi Enhanced Open

Android 10 には、Wi-Fi Protected Access 3(WPA3)と Wi-Fi Enhanced Open のセキュリティ標準に対するサポートが追加され、既知の攻撃に対するプライバシーと堅牢性が強化されました。

Wi-Fi Direct

Wi-Fi P2P とも呼ばれる Wi-Fi Direct によって、デバイスが Wi-Fi Direct プロトコルを使用して、インターネットやモバイル ネットワークにアクセスせずに直接相互に検出、接続できるようにサポートできます。

MAC のランダム化の拡張

Android 10 以降では、クライアント モード、SoftAp、Wi-Fi Direct ではデフォルトで MAC のランダム化が有効になっています。デバイスは、システム UI で SSID ごとに MAC のランダム化を有効または無効にするオプションを提供する必要があります。

Passpoint R2

Android 10 では、Passpoint R2 機能のサポートが追加されています。Passpoint R2 には、新たな Passpoint プロファイルをプロビジョニングする標準的な手法、オンライン サインアップ(OSU)が実装されています。Android 10 は、SOAP-XML を使用した EAP-TTLS プロファイルのプロビジョニングをサポートしています。

NFC

NFC の保護

セキュア NFC は、デバイスの画面がロック解除されている場合にのみオフホスト NFC カード エミュレーションを有効にします。この機能を実装すると、ユーザーはセキュア NFC を有効にしてセキュリティを強化できます。

Android ビームのサポート終了

Android 10 では、Android ビームは不要になり、次のインターフェースとメソッドは廃止されました。

インターフェース:

メソッド:

Android ビームを使用するには、android.sofware.nfc.beam 機能定数をレポートします。

グラフィック

ASurfaceControl

Android 10 では、SurfaceFlinger がバッファを受け入れる新しい方法として、ASurfaceControl が追加されています。

グラフィックの実装

OpenGL ES レイヤ

Android 10 では、GLES のレイヤリング システムが導入されています。

EGL 1.5

Android 10 は、EGL 1.5 インターフェースを実装しています。 EGL 1.5 の新機能については、Khronos Releases EGL 1.5 Specification をご覧ください。

Vulkan

Android 10 では、Vulkan 1.1 グラフィックをサポートしています。 Vulkan アプリでスワップチェーン メモリを利用する VkImage を作成できるように、VK_KHR_swapchain v70 もサポートしています。

パフォーマンスの更新頻度

Android 10 では、通常より高いリフレッシュ レートのサポートが追加されています。 この機能はデフォルトでオフになっています。

操作

自動車

自動車用オーディオ

Android 10 では、Audio HAL コンテキストは AudioAttributes.usage にマッピングされ音を識別します。Android は、コンテキストごとに 1 つの AUDIO_DEVICE_OUT_BUS インスタンスをサポートします。IAudioControl HAL は、Audio HAL に車両固有の拡張機能を提供します。

ジェスチャー ナビゲーション

Android 10 では、完全なジェスチャーによるシステム ナビゲーションのオプションが導入されています。この機能を使用するアプリの準備方法については、Android デベロッパー サイトのジェスチャー ナビゲーションページをご覧ください。

ニューラル ネットワーク

Android 10 では、Neural Networks API と Neural Networks HAL が更新されています。変更の概要については、ニューラル ネットワークをご覧ください。

Android 10 のニューラル ネットワークに関する新規および更新済みのドキュメント:

センサー

センサー HAL 2.0

センサー HAL 2.0 では、高速メッセージ キュー(FMQ)を使用して、センサー イベントを HAL から Android センサー フレームワークに送信できます。

センサーのオフ

Android 10 には、デバイスですべてのセンサーをオフにするデベロッパー向け設定が用意されています。この機能は、センサーを使用できなくなった状況下におけるアプリの機能をテストするのに役立ちます。ユーザーに対してデバイス内のセンサーを制御する方法にもなります。

デバイスが、SensorServiceCameraServiceAudioPolicyService のデフォルトの実装を使用する場合、参照設計に対する追加のカスタマイズは必要ありません。他のセンサーを搭載している場合は、この機能のサポートに関する詳細について、カスタマイズをご覧ください。

メディア

更新可能なメディア コンポーネント

Android 10 では、Google Play ストア インフラストラクチャまたはパートナーの提供による無線(OTA)メカニズムを介して、メディア関連のモジュラー システム コンポーネントの更新を可能にする、更新可能なメディア コンポーネントが用意されています。

メディア DRM

Android 10 では、MediaDrm Java API と NDK API のユーティリティとユーザビリティが改善されています。

デコード

Android 10 は AV1 SW デコードに対応しています。

権限

Android 10 には、透過性とユーザーのプライバシーに関する追加の権限構成が用意されています。

連絡先プロバイダとアフィニティ情報

Android 10 以降では、連絡先プロバイダ コンポーネントによって管理される連絡先アフィニティ関連のデータには、Android 9 以前とは異なる方法でアクセスします。このようにデータのユーザー補助機能を変更すると、連絡先プロバイダ コンポーネントを使用するすべての Android 10 デバイスでユーザーのプライバシーが向上します。 基盤データベースには、連絡先アフィニティ データは含まれなくなりました。そのため、アプリが読み書きできません。

Android 10 の変更は、API に大きな影響を与えることが予想されます。連絡先プロバイダとアフィリエイト情報に記載されている非推奨の機能をアプリが利用している場合は、今回の変更に対応するためアプリを更新することをおすすめします。また、連絡先プロバイダのフォーク バージョンを使用する場合は、連絡先プロバイダをアップデートする必要があります。

位置情報の 3 段階の利用許可

Android 10 で導入された位置情報の 3 段階の利用許可によって、ユーザーはアプリがデバイスの位置情報にアクセスする方法をより詳細に制御できます。

バックグラウンドでの位置情報へのアクセスに関するリマインダー

Android 10 では、バックグラウンドでの位置情報へのアクセスに関するリマインダー機能が追加されました。デバイスの位置情報に対するアプリのアクセス頻度に関する透過性が向上し、ユーザーがそうしたアクセスの制御を維持するうえで役立ちます。

日和見的な位置情報の取得制限

アプリがデバイスの位置情報をリクエストすると、アプリはリクエストへの応答を待つか、アクティブなロケーション リスナーを使用して日和見的な位置情報を取得できます。Android 10 以降で日和見的な位置情報の更新を取得するには、FusedLocationProviderClient クラスからパッシブな位置情報の更新を取得する必要があります。

バックグラウンド アプリの起動

Android 10 では、ウィンドウが表示されない非特権アプリは自動的にフォアグラウンドで起動できません。この変更により、広告のポップアップや不正な全面広告が抑制されます。これを有効にするのに操作は必要ありません。

アプリ サンドボックス

Android 10 では、アプリに対してファイル システムの raw データのビューが制限されており、/sdcard/DCIM などのパスに直接アクセスできません。ただし、アプリは Context.getExternalFilesDir() などの適用可能なメソッドにより返されたパッケージ固有のパスに対しては、引き続き完全な raw アクセスを行うことができます。 パッケージ固有のパスに対する完全な raw アクセス権は維持されています。

適切なデータ共有粒度を実現するには、アプリ サンドボックスに関するファイル共有ガイドラインを使用します。

アプリのクリップボードへのアクセスを制限する

Android 10 では、クリップボードへのアクセスが変更されています。ClipboardManager.getPrimaryClip の呼び出し、またはクリップボードが変更されたときに通知する onPrimaryClipChangedListener リスナーの追加によってクリップボードのコンテンツを表示することができなくなりました。これにより、ユーザーのプライバシーが向上し、悪意のある広告アプリがクリップボードを変更できなくなります。

Android 10 では、現在の入力フォーカスが設定されているアプリまたは現在のキーボードのみに読み取りアクセスが許可されます。ClipboardManager.onPrimaryClipChanged() リスナーの呼び出しは、このような制限を満たすアプリに対してのみ行われるようになりました。 ClipboardManager.getPrimaryClipClipboardManager.getPrimaryClipDescription は、要求元のアプリがデフォルトのインプット メソッド エディタ(IME)でない場合、または入力フォーカスがない場合に null を返します。

アクティビティ認識などのランタイム権限

アプリがバックグラウンドでデバイスの位置情報にアクセスすると、ユーザーに対してアクティビティ認識ダイアログが表示されるようになりました。Android 10 では、ハード制限されたランタイムの権限を正しくホワイトリストに登録する必要があります。

MANAGE_DEVICE_ADMINS 権限

Android 10 では、MANAGE_DEVICE_ADMINS 権限が署名または特権から署名のみへ変更されています。つまり、プラットフォームで署名されたアプリだけがデバイス管理者として他のアプリを設定できます。

共有 API の改善

Android 10 には、共有に関連する新しい Android Platform API 機能が多く用意されています。 実装で共有シートコードを変更した場合は、実装がこれらの新機能をサポートしていることを確認します。実装で共有シートコードを変更していない場合は、これらの新機能をサポートするうえで何も操作する必要はありません。

Android ランタイム(ART)

署名済みの構成

署名済み構成機能を使用すると、非 SDK インターフェース制限の構成を APK に埋め込むことができます。これにより、特定の非 SDK インターフェースをブラックリストから削除し、それらを AndroidX で安全に使用できるようになります。この変更により、AndroidX は古いバージョンの Android に新機能のサポートを追加できます。

パフォーマンス

Cgroup 抽象化レイヤ

Android 10 では、Cgroup 抽象化レイヤとタスク プロファイルが用意されています。それらはスレッドまたはプロセスに適用する一連の制限を記述するのに使用できます。

ローメモリ キラーデーモン(lmkd)

Android 10 は、カーネル プレッシャー ストール情報(PSI)モニタを使用してメモリ プレッシャーを検出する、新しい lmkd モードをサポートします。

電源

プラットフォームの電源管理

Android 10 では、常時オンのデバイスと電池駆動のデバイスで Doze モードを有効にできます。

ルーティン バッテリー セーバー

Android 10 には、ルーティンに基づくバッテリー セーバーのスケジュール オプションが用意されています。ルーティン バッテリー セーバーによって、OEM が選択したアプリは、よりインテリジェントなバッテリー セーバーのスケジューリングをシステムに提供できるようになります。このオプションには構成が必要です。実装を省略することもできます。

電力統計 HAL

Android 10 では、IPowerStats.halIPower.hal の電力統計コレクション API に置き換わります。 電力 HAL は引き続き API に対応していますが、今後は電力統計 HAL のみに移行されます。

電力統計 HAL には、サポートされているデバイスのオンデバイス電力測定データの収集をサポートする新しい API が備えられています。既存の電力統計コレクション API も更新され、柔軟性が向上します。電力ヒンティング API は引き続き電力 HAL に格納されており、変更されていません。

熱軽減策

Android 10 のサーマル フレームワークは、CPU、GPU、バッテリー、スキン、冷却装置など、温度サブシステムの温度センサーのデバイス インターフェースを抽象化します。このフレームワークでは、温度状態をクエリしてサーマル スロットリングを開始するポーリング インターフェースと、しきい値を超えたときにユーザーにメッセージを送信するコールバック インターフェースが導入されています。

Android 10 では、これら 3 つの新しいメソッドを使用して、IThermalService インターフェースを介し新しいデータ型を提供します。

アプリは、リスナーを追加、削除し、PowerManager クラスの温度状態にアクセスします。Android API やデバイス メーカー API などの信頼できるシステム サービスのみが、関連する原因イベントについての情報にアクセスできます。デバイス メーカーまたは SoC メーカーは、thermal HAL 2.0 を実装して新しいサーマル フレームワークの全機能を有効にする必要があります。

熱軽減策の実装例については、リファレンス実装をご覧ください。

更新

APEX ファイル形式

Android Pony EXpress(APEX)は、モジュラー システム コンポーネントのインストール フローで使用される新しいコンテナ形式です。

動的パーティション

動的パーティションは、OTA の更新中にパーティションを作成、サイズ変更、破棄できるように、ユーザー空間分割システムを Android に導入します。デバイス メーカーは、systemvendorproduct などのパーティションの個別のサイズを気にする必要はありません。代わりに、1 つの大きな super パーティションを割り当て、その内部でサブパーティションのサイズを動的に変更できます。

システムの動的更新

システムの動的更新(DSU)によって、Android システムのイメージを作成できます。ユーザーはこれをインターネットからダウンロードして、現在のシステム イメージの破損を心配することなく試すことができます。

マルチユーザーのバックアップと復元

Android 10 は、デバイス上のすべてのユーザーを対象とするバックアップと復元機能をサポートしています。以前は、バックアップと復元はシステム ユーザーのみが使用できました。システム ユーザー以外のユーザーのバックアップと復元は、設定、壁紙、システム コンポーネントの一部のみを対象とするため、デフォルトでオフになっています。

Overlayfs

userdebug または eng のビルド作業では、効率的にシステム パーティションを読み書き可能に再マウントでき、システム イメージを再適用することなく任意の数のファイルを追加または変更できることが期待されます。Overlayfs を使用すれば、書き込み可能なファイル システムのバックアップ ストレージを自動的に上位参照として設定し、下位にマウントできます。これらの操作は、adb disable-verityadb remount のリクエストによって行われます。詳細については、AOSP の Overlayfs README をご覧ください。

リカバリモードでの共有ライブラリのサポート

Android 10 では、共有ライブラリをリカバリ パーティションで使用できるため、すべてのリカバリモードの実行可能ファイルを静的にする必要がありません。共有ライブラリは、パーティションの /system/lib(または 64 ビットデバイスの場合は、/system/lib64)ディレクトリにあります。

リカバリ パーティションに新しい共有ライブラリを追加するには、共有ライブラリの Android.bprecovery_available: true または recovery: true を追加します。前者はシステム パーティションとリカバリ パーティションの両方にライブラリをインストールするのに対し、後者はリカバリ パーティションにのみライブラリをインストールします。

共有ライブラリ サポートは、Android の Make ベースのビルドシステムでは構築できません。 リカバリモードの既存の静的実行可能ファイルを動的ファイルに変換するには、Android.mk または static_executable: trueAndroid.bp に格納)の LOCAL_FORCE_STATIC_EXECUTABLE := true を削除します。

ユーザーデータ チェックポイント(UDC)

Android 10 では、ユーザーデータ チェックポイント(UDC)機能が導入されました。これにより、無線(OTA)更新が失敗したときに Android を以前の状態にロールバックできます。