このページでは、Android 10 リリースの主な機能を要約し、追加情報へのリンクを提供します。これらの機能の概要は、このサイト上の機能のドキュメントの場所に従って編成されています。
建てる
java_sdk_library
Android 10 では、共有 Java ライブラリの互換性の問題を修正するための新しいビルド ルールであるjava_sdk_library
が導入されています。デバイス メーカーは、このメカニズムを自社の共有 Java ライブラリに使用して、API の下位互換性を維持できます。
建築
モジュール式システムコンポーネント
Android 10では、一部の Android システム コンポーネントがモジュール化されており、通常の Android リリース サイクル以外でも更新できるようになります。一部のモジュールには次のものが含まれます。
ハードウェア抽象化レイヤー (HAL)
Android 10 では、クライアントがない場合に HAL が自動的にシャットダウンするサポートが追加されています。
カーネル
アビ
Android 10 には、カーネル モジュールとの互換性に影響を与えるカーネル ABI の変更を比較、追跡、軽減するのに役立つ新しいABI 監視ユーティリティのサポートが含まれています。
Android 10 では、シンボルベースのABI 使用状況チェッカーも導入されています。チェッカーはビルド時に古いビルド済みバイナリを検出できるため、共有ライブラリ開発者は、どのビルド済みバイナリが変更によって破損する可能性があるか、どのビルド済みバイナリを再ビルドする必要があるかを知ることができます。
Android ライブロック デーモン
Android 10 には、カーネルのデッドロックを検出して軽減するように設計されたAndroid Live-Lock Daemon (llkd)が含まれています。
ARM64 上の vDSO32
Android 10 は64 ビット カーネルでの vDSO32の使用をサポートしており、これによりバッテリー寿命が 0.4% 延長され、その他のパフォーマンスが向上します。
初期にマウントされたパーティションの fstab エントリ
Android 10 では、デバイスが最初の段階の RAM ディスク内のfstab
ファイルを使用して、初期にマウントされたパーティションのfstab
エントリを指定する必要があります。
HIDL
ブロードキャストキューのオフロード
Android 10 には、既存のバックグラウンドキューとフォアグラウンドキューへの新しいオフロードBroadcastQueue
が含まれています。オフロード キューの優先順位とタイムアウト動作はバックグラウンド キューと同じです。より興味深いブロードキャストやユーザーに表示されるブロードキャストが発生する可能性があるバックグラウンド キューのブロックを防ぐために、オフロード キューは、多くのアプリがリッスンし、完了までに長い時間がかかる可能性があるBOOT_COMPLETED
ブロードキャストを処理します。オフロード キューは現在、 BOOT_COMPLETED
ブロードキャストのみを処理しますが、他の長いブロードキャストも処理できる可能性があります。
システム一時停止サービス
Android 10 では、システム サスペンドの開始を担当するlibsuspend
内のスレッドがSystemSuspend HIDL サービスに置き換えられます。この実装では、Android HIDL インフラストラクチャの利点を活用しながら、以前のバージョンと同等の機能を提供します。
HIDLのsafe_union
Android 10 では、HIDL に明示的にタグ付けされた共用体型であるsafe_union
が導入されています。
構成
構成ストア HAL
Android 10 では、メモリ消費量が多く、使用が難しいため、 ConfigStore HAL が廃止され、HAL がシステム プロパティに置き換えられます。
構成ファイルスキーマ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 の変更点は次のとおりです。
- AVB バージョンタグの廃止
- OTA パッケージへのカーネル情報の追加
- ODMマニフェストを正式に構築する
- 製品互換性マトリックスの追加
- ビルド システム内のマニフェスト エントリと HAL モジュールの関連付け
ブートローダー
ラムディスク
Android 10 では、ルート ファイル システムはramdisk.img
に含まれなくなり、代わりにsystem.img
にマージされます。
ODMパーティションの構築
Android 10 には、Android ビルド システムを使用したodm
パーティションの構築のサポートが含まれています。カスタマイズには別の/odm
パーティションを使用できます。これにより、複数のハードウェア SKU に対して単一のベンダー イメージを使用できるようになります。これにより、オリジナル デザイン メーカー (ODM) は、システム オン チップ (SoC) ベンダーのボード サポート パッケージ (BSP) を自社の特定のデバイス (ボード) に合わせてカスタマイズできます。ボード固有のコンポーネント、ボード固有のデーモン、またはハードウェア抽象化レイヤー (HAL) 上の独自の機能のカーネル モジュールを実装できます。 SoC コンポーネントを置き換えたりカスタマイズしたりする場合もあります。
ブートイメージヘッダーのバージョン管理
Android 10 では、ブート イメージ ヘッダーがバージョン 2 に更新され、デバイス ツリー BLOB (DTB) イメージを保存するセクションが含まれています。 Android 10 VTS テストでは、Android 10 で起動するすべてのデバイスがブート イメージ ヘッダー バージョン 2 を使用し、ブート/リカバリ イメージの一部として有効な DTB イメージが含まれていることを検証します。
非A/Bデバイスのリカバリイメージ
Android 9 以降では、デバイスのリカバリ イメージにオーバーレイ イメージの情報が含まれている必要があります。デバイス メーカーは、DeviceTree または Advanced Configuration and Power Interface (ACPI) を使用して、検出できないすべてのデバイスを説明できます。 Android 10 以降には、オーバーレイ用の DeviceTree BLOB (DTBO) の代わりに ACPI を使用するアーキテクチャのサポートが含まれています。
安定したAIDL
Android 10 では、安定したAndroid インターフェイス定義言語 (AIDL)のサポートが追加されています。これは、AIDL インターフェイスによって提供されるアプリケーション プログラム インターフェイス (API)/アプリケーション バイナリ インターフェイス (ABI) を追跡するための新しい方法です。
fastboot をユーザースペースに移動する
Android 10 では、 fastboot 実装をブートローダーからユーザー空間に再配置することで、サイズ変更可能なパーティションのサポートが追加されています。
画面
HDRビデオの再生
Android 10 は、HDR10、VP9、および HDR10+ の再生をサポートしています。
テキストの分類
テキスト分類では、機械学習技術を使用して、開発者がテキストを分類できるようにします。 Android 10 では、 TextClassifier API に 2 つのメソッド ( suggestConversationActions
とdetectLanguage
が導入されています。 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 にはユーザーがカスタマイズできるタイムアウト設定が含まれています。 API と設定の変更は Android 10 に付属しています。設定をカスタマイズする場合は、この機能がサポートされていることを確認してください。デバイス上でタイムアウトになる UI 要素がある場合は、それらに対してタイムアウト APIを使用します。詳細については、 Android 開発者のアクセシビリティ ガイドライン を参照してください。
互換性
Android 互換性定義ドキュメント (CDD)
Android 10 互換性定義ドキュメントでは、新機能の更新と、以前にリリースされた機能の要件の変更により、以前のバージョンが繰り返されます。
テスト
互換性テストスイート (CTS)
Android CTS には、Android 10 の多くの重要な変更点をリストした別のリリース ノート ページがあります。
CTSのダウンロード
Android 10 をサポートする CTS パッケージは、 CTS ダウンロードページから入手できます。含まれているテストのソース コードは、オープンソース ツリーのandroid-cts-10_r1
タグと同期できます。
CTSシムAPEX
Android 10 では、 CtsShimApex
と呼ばれるパッケージが導入されています。APEX 管理用の CTS テストを作成するには、このパッケージをデバイスにプレインストールする必要があります。
テストハーネスモード
CTS テスト ハーネス モードは、開発者がデバイスまたはデバイス群のテストを自動化するのに役立ちます。
インスタントアプリモード
Android 10 以降、CTS はインスタント アプリ モードで実行されます。これは、テスト APK をインスタント アプリとしてインストールし、テストを実行することを意味します。
Instant Apps の CTS モードに加えて、Android 10 にはInstant Apps の CTS Verifierが含まれています
CTS Verifier プロオーディオ テスト
Android 10では、Pro Audio 準拠のための CTS Verifier テストが追加されています。
CTS Verifier MIDI テスト
Android 10 では、 CTS Verifier MIDI テストは、USB MIDI インターフェイス、Bluetooth MIDI インターフェイス、仮想 MIDI デバイス パスを使用して MIDI 機能をテストします。
CTS テストの解釈
Android 10 では、 CTS 結果を解釈するメカニズムが更新されています。
ベンダー テスト スイート (VTS)
デバッグ RAM ディスクを使用した VTS テスト
Android 10 では、GSI はリリース署名されているため、CTS-on-GSI/VTS コンプライアンス テストの実行に使用される汎用システム イメージ (GSI) が userdebug からユーザー ビルド タイプに変更されます。ただし、テスト対象の Android デバイスにホストの root 権限を与えるadb root
コマンドは、ユーザー ビルドでは使用できません。 VTS ではadb root
を実行する必要があるため、これが問題になります。
デバッグ RAM ディスクは、デバイスのロックが解除されている場合にadb root
を可能にするために導入されました。これにより、同じユーザー ビルドsystem.img
(GSI または OEM のsystem.img
) を再利用することでテスト フローが簡素化されます。
Hardware Composer の検証
Android 10 では、 IComposerClient.hal
のreadback
インターフェイスを介して Hardware Composer 検証用の新しい VTS テスト クラスが追加されています。ベンダーがreadback
を実装していない場合、テストは自動的に合格します。
デバッグ
異なるクラスローダーを使用して共有ライブラリをロードする
Android 9 以前では、アプリはリンクされた Java 共有ライブラリをアプリのクラス ローダーにロードしました。 Android 10 では、フレームワークはアプリのクラス ローダーとは異なるクラス ローダーを使用して、 uses-library
またはuses-static-library
を通じてリンクされた Java 共有ライブラリを読み込みます。
一般に、アプリは特定のクラス ローダーの使用に依存すべきではないため、この変更によってアプリの動作が損なわれることはありません。ただし、アプリが単一のクラス ローダーの使用に依存している場合、その動作は壊れます。さらに、同じパッケージ内のクラスのパッケージプライベート可視性は引き続きサポートされていますが、共有ライブラリではサポートされていません。
デバイス メーカーは、Android 10 を実行するデバイスをテストする際に、アプリの互換性の問題に遭遇する可能性があります。
セキュリティ機能
セキュリティとプライバシーのみに関連する拡張機能のより完全なリストについては、 Android 10 のセキュリティとプライバシーの拡張ページを参照してください。
顔認証
顔認証を使用すると、ユーザーはデバイスの前面を見るだけでデバイスのロックを解除できます。 Android 10 では、カメラ フレームを安全に処理できる新しい顔認証スタックのサポートが追加され、サポートされているハードウェアでの顔認証中にセキュリティとプライバシーが維持されます。 Android 10 では、オンライン バンキングやその他のサービスなどのトランザクションのためのアプリ統合を可能にする、セキュリティに準拠した実装の簡単な方法も提供されます。
拡張アクセス
Smart Lock などの 3 次認証メカニズムで使用される基盤となるメカニズムである信頼エージェントは、Android 10 でのみロック解除を拡張できます。信頼エージェントはロックされたデバイスのロックを解除できなくなり、デバイスのロック解除状態を維持できるのは最大 4 時間のみです。
暗号化
OEMCrypto
Android 10 は OEMCrypto API バージョン 15 を使用します。
テスト
境界サニタイザー
Android 10 では、Bluetooth とコーデックにBoundsSanitizer (BoundSan)が導入されています。 BoundSan は UBSan の境界サニタイザーを使用します。この軽減策はモジュールごとのレベルで有効になります。これは Android の重要なコンポーネントを安全に保つのに役立つため、無効にしないでください。 BoundSan は次のコーデックで有効になります。
-
libFLAC
-
libavcdec
-
libavcenc
-
libhevcdec
-
libmpeg2
-
libopus
-
libvpx
-
libspeexresampler
-
libvorbisidec
-
libaac
-
libxaac
整数オーバーフローのサニタイズ
Android 10 では、ソフトウェア コーデックでInteger Overflow Sanitization (IntSan)が有効になります。デバイスのハードウェアでサポートされていないコーデックでも再生パフォーマンスが許容できることを確認してください。 IntSan は次のコーデックで有効になります。
-
libFLAC
-
libavcdec
-
libavcenc
-
libhevcdec
-
libmpeg2
-
libopus
-
libvpx
-
libspeexresampler
-
libvorbisidec
実行専用メモリ
デフォルトでは、AArch64 システム バイナリの実行可能コード セクションは、ジャストインタイム コード再利用攻撃に対する緩和策を強化するために、実行専用 (読み取り不可) としてマークされます。データとコードを混在させるコードや、これらのセクションを意図的に検査するコード (最初にメモリ セグメントを読み取り可能として再マッピングすることなく) は機能しなくなります。 Android 10 (API レベル 29 以降) のターゲット SDK を使用するアプリは、アプリが最初にセクションを読み取り可能としてマークせずに、メモリ内の実行専用メモリ (XOM)対応システム ライブラリのコード セクションを読み取ろうとした場合に影響を受けます。
スクード
Scudo は、ヒープ関連の脆弱性に対する回復力を高めるように設計された動的なユーザー モード メモリ アロケーターです。これは、C++ プリミティブに加えて、標準の C の割り当ておよび割り当て解除のプリミティブを提供します。
シャドウコールスタック
ShadowCallStack
(SCS)は、関数の戻りアドレスを非リーフ関数の関数プロローグ内で個別に割り当てられたShadowCallStackインスタンスに保存し、戻りアドレスをShadowCallStack
インスタンスからロードすることにより、戻りアドレスの上書き (スタック バッファ オーバーフローなど) から保護するShadowCallStack
インスツルメンテーション モードです。関数のエピローグ。
オーディオ
オーディオ HAL
Android 10 には、オーディオ HAL用の次の新しい機能が含まれています。
-
AudioSource
-
AudioFormat
-
AudioChannelMask
オーディオ HAL およびサブシステムの実装には追加の要件が追加されます。
前処理効果
Android は、音響エコー キャンセル、自動ゲイン制御、ノイズ抑制などの前処理効果を提供します。 Android 10 には、 VOICE_COMMUNICATION
でキャプチャするための新しい要件が含まれています。
オーディオポリシーマネージャー
Android 10 には、自動車の複雑なユースケースをサポートするための柔軟性を高めるために、オーディオ ポリシー マネージャーの大幅なリファクタリングが含まれています。
ハイレゾオーディオ
Android 10 には、ハイレゾ オーディオに関する次の改善が含まれています。
- フロートサポート
- 192 KHz の周波数をサポート
- 8チャンネルのサポート
- タイミング情報の組み込み
同時キャプチャ
Android 10 では、複数のアクティブなオーディオ キャプチャを同時に実行する必要がある同時キャプチャのユーザー エクスペリエンスが向上しています。
オーディオ再生キャプチャ
Android 10 には、 AudioPlaybackCapture
と呼ばれる新しい API が含まれており、これにより、他のアプリによって再生されているオーディオをアプリにコピーできるようになります。この機能は画面キャプチャに似ていますが、音声用です。主な使用例は、ストリーミング アプリがゲームで再生されているオーディオをキャプチャできるようにすることです。
キャプチャ API は、オーディオがキャプチャされているアプリの遅延には影響しません。
ミディ
Android 10 では、 AMidi
NDK APIを使用して、MIDI を使用するプロフェッショナルなオーディオ アプリを 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 により、アプリで直接開くことができる物理カメラの数を減らすことができます。詳細については、 「マルチカメラのサポート」を参照してください。
カメラ2 VNDK API
Android 10 では、ベンダー モジュールは、2 つの新しい標準 HIDL インターフェイス、 android.frameworks.cameraservice.service@2.0
およびandroid.frameworks.cameraservice.device@2.0
を通じてカメラ デバイスにアクセスし、制御できます。 HIDL インターフェイスの使用をより便利にするために、Android 10 ではベンダーが利用可能なライブラリlibcamera2_vendor
も導入されています。このライブラリはCamera NDK ライブラリに似ていますが、若干の変更が加えられています。
ストリーム構成
Android 10 では、カメラ ベンダーが推奨カメラ ストリームをカメラ クライアントにアドバタイズし、ストリームの組み合わせをクエリする APIをサポートできる機能が追加されています。
カメラストリームの組み合わせ要件
Android 10 を実行しているデバイスは、物理サブカメラ ストリームとのストリームの組み合わせをサポートする必要がなくなりました。ただし、カメラ HAL デバイス バージョン 3.5 を備えた Android 10 を実行しているデバイスは、物理ストリームを含むストリームの組み合わせがサポートされているかどうかをアプリがクエリできるように、 isStreamCombinationSupported()
をサポートする必要があります。
詳細については、 「マルチカメラのサポート」を参照してください。
HEIFイメージング
Android 10では、高効率画像ファイル形式 (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
デバイス識別子
永続的なデバイス識別子(IMEI/MEID、IMSI、およびビルド シリアル) は、デバイスおよびプロファイル所有者のアプリにもアクセスが許可される特権アクセス許可によって保護されます。 IMSI および SIM シリアル番号は通信事業者によって提供されるため、これらの識別子へのアクセスは通信事業者の特権を持つパッケージに許可されます。
Wi-Fi
ネットワーク選択
Android は、接続されたネットワークの品質を継続的に評価し、利用可能なネットワークの品質を評価します。 Android 10では、Wi-Fi ネットワークの選択と切り替えのアルゴリズムと手順が更新されました。
Wi-Fi 優先ネットワーク オフロード スキャン
Android 10 ではWifiManager
にsetDeviceMobilityState()
という名前のオプションの API メソッドが導入されており、デバイスが静止しているときに優先ネットワーク オフロード (PNO)スキャンの間隔を増やして電力使用量を削減します。
キャリアWi-Fi
Android 10 では、キャリア Wi-Fi 機能を備えたデバイスは、設定されたキャリア Wi-Fi ネットワーク (公開キー証明書のあるネットワーク) に自動的に接続します。
Wi-Fi簡単接続
Android 10 では、デバイスは Wi-Fi Alliance (WFA) によって導入されたデバイス プロビジョニング プロトコル (DPP) を使用するWi-Fi Easy Connectを使用して、Wi-Fi デバイスをプロビジョニングおよび構成できます。
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 をリリースおよびアップグレードするすべてのデバイスは、デフォルトでDhcpServer
を使用します。 DHCP サーバーをカスタマイズしている場合は、グローバル設定tether_enable_legacy_dhcp_server=1
を設定することで Android 9 の動作に戻すことができます。新しいDhcpServer
ネットワーク コンポーネント モジュールに含まれているため、DHCP サーバー機能のカスタマイズはすべてアップストリームする必要があります。
WPA3 および Wi-Fi 拡張オープン
Android 10では、Wi-Fi Protected Access 3 (WPA3) および Wi-Fi Enhanced Openセキュリティ標準のサポートが追加され、既知の攻撃に対するプライバシーと堅牢性が向上します。
Wi-Fiダイレクト
Wi-Fi Direct はWi-Fi P2P とも呼ばれ、サポートするデバイスがインターネットや携帯電話ネットワークにアクセスせずに Wi-Fi Direct プロトコルを使用して直接相互に検出し、接続できるようにします。
MAC ランダム化の強化
Android 10 以降、 MAC ランダム化はクライアント モード、SoftAp、Wi-Fi Direct に対してデフォルトで有効になっています。デバイスは、システム UI で SSID ごとに MAC ランダム化を有効または無効にするオプションを提供する必要があります。
パスポイント R2
Android 10 では、 Passpoint R2 機能のサポートが導入されています。 Passpoint R2 は、新しい Passpoint プロファイルをプロビジョニングする標準方法であるオンライン サインアップ (OSU) を実装しています。 Android 10 は、SOAP-XML を使用した EAP-TTLS プロファイルのプロビジョニングをサポートしています。
NFC
セキュアNFC
セキュア NFC を使用すると、デバイスの画面がロック解除されている場合にのみ、オフホスト NFC カード エミュレーションを有効にすることができます。この機能を実装すると、セキュリティを向上させるために Secure NFC を有効にするオプションがユーザーに提供されます。
Android ビームは非推奨になりました
Android 10 では、Android Beam は必要なくなり、次のインターフェイスとメソッドは非推奨になりました。
インターフェース:
-
NfcAdapter.CreateBeamUrisCallback
-
NfcAdapter.CreateNdefMessageCallback
-
NfcAdapter.OnNdefPushCompleteCallback
方法:
-
createBeamUris
-
invokeBeam
-
isNdefPushEnabled
-
setBeamPushUris
-
setBeamPushUrisCallback
-
setNdefPushMessage
-
setNdefPushMessageCallback
-
setOnNdefPushCompleteCallback
-
createNdefMessageCallback
-
onNdefPushCompleteCallback
Android ビームを使用するには、 android.sofware.nfc.beam
機能定数を報告します。
グラフィックス
A表面制御
Android 10 では、 SurfaceFlinger
バッファを受け入れるための新しい方法であるASurfaceControl
が追加されています。
グラフィックスの実装
OpenGL ES レイヤー
Android 10 では、GLES の階層化システムが導入されています。
EGL1.5
Android 10 はEGL 1.5 インターフェイスを実装します。 EGL 1.5 の新機能については、 「Khronos Releases EGL 1.5 仕様」を参照してください。
バルカン
Android 10 には、Vulkan 1.1 グラフィックスのサポートが含まれています。このプラットフォームはVK_KHR_swapchain
v70 もサポートしているため、Vulkan アプリはスワップチェーン メモリを基盤としたVkImage
を作成できます。
パフォーマンスのリフレッシュレート
Android 10 では、パフォーマンス リフレッシュ レートのサポートが追加されています。この機能はデフォルトではオフになっています。
交流
自動車
車載オーディオ
Android 10 では、オーディオ HAL コンテキストはAudioAttributes.usage
にマップされてサウンドを識別します。 Android は、コンテキストごとに 1 つのAUDIO_DEVICE_OUT_BUS
インスタンスをサポートします。 IAudioControl
HAL は、Audio HAL に車両固有の拡張機能を提供します。
ジェスチャーナビゲーション
Android 10 では、完全なジェスチャーによるシステム ナビゲーションのオプションが導入されています。この機能を使用するようにアプリを準備する方法については、Android デベロッパー サイトの「ジェスチャ ナビゲーション」ページを参照してください。
ニューラルネットワーク
Android 10 では、ニューラル ネットワーク API とニューラル ネットワーク HAL のアップデートが導入されています。変更の概要については、 「ニューラル ネットワーク」を参照してください。
Android 10 用の新規および更新されたニューラル ネットワーク ドキュメント:
センサー
センサー HAL 2.0
センサー HAL 2.0 は、センサー イベントを HAL から Android センサー フレームワークに送信するための高速メッセージ キュー (FMQ)の使用をサポートしています。
センサーがオフになっています
Android 10 には、デバイス上のすべてのセンサーをオフにする開発者設定が含まれています。この機能は、開発者がセンサーが使用できなくなった状況でアプリの機能をテストするのに役立ち、またユーザーがデバイスのセンサーを制御する方法も提供します。
デバイスがSensorService
、 CameraService
、およびAudioPolicyService
のデフォルト実装を使用している場合、リファレンス デザインを追加でカスタマイズする必要はありません。他のセンサーをお持ちの場合、この機能のサポートの詳細については「カスタマイズ」を参照してください。
メディア
更新可能なメディアコンポーネント
Android 10 は、Google Play ストア インフラストラクチャまたはパートナーが提供する無線 (OTA) メカニズムを通じて、メディア関連のモジュラー システム コンポーネントを更新できる更新可能なメディア コンポーネントを提供します。
メディア DRM
Android 10 では、 MediaDrm
Java および NDK API のユーティリティと使いやすさが向上しています。
デコード
Android 10 は AV1 SW デコードをサポートしています。
権限
Android 10 では、透明性とユーザーのプライバシーを確保するための追加の権限構成が提供されています。
連絡先プロバイダーとアフィニティ情報
Android 10 以降、連絡先プロバイダー コンポーネントによって管理される連絡先アフィニティ関連データは、Android 9 以前とは異なる方法でアクセスされます。データ アクセシビリティに関するこれらの変更により、連絡先プロバイダー コンポーネントを使用するすべての Android 10 デバイスにおけるユーザーのプライバシーが向上します。基礎となるデータベースには連絡先アフィニティ データが含まれなくなりました。したがって、アプリはそれに書き込みまたは読み取りを行うことができません。
Android 10 の変更は API に大きな影響を与えることが予想されます。連絡先プロバイダーとアフィニティ情報に記載されている非推奨の機能にアプリが依存している場合は、変更を補うためにアプリを更新することが必要になる場合があります。さらに、フォークされたバージョンの連絡先プロバイダーを使用する場合は、連絡先プロバイダーを更新する必要があります。
トライステートの位置情報の許可
Android 10 のトライステート位置情報権限により、アプリがデバイスの位置情報にアクセスする方法をユーザーがより詳細に制御できるようになります。
バックグラウンドでの位置情報アクセスリマインダー
Android 10には、バックグラウンド アクセス位置リマインダーが搭載されています。これにより、アプリがデバイスの位置情報にどれだけアクセスできるかについての透明性が向上し、ユーザーがそのようなアクセスの制御を維持できるようになります。
日和見的な場所を制限する
アプリがデバイスの位置情報をリクエストすると、アプリはリクエストの応答を待つか、アクティブな位置リスナーを使用して日和見的な位置情報の更新を取得することができます。 Android 10 以降、日和見的な位置情報更新を取得するには、開発者はFusedLocationProviderClient
クラスからの受動的な位置情報更新が必要であることを指定する必要があります。
バックグラウンドでアプリが起動中
Android 10 では、ウィンドウが表示されていない非特権アプリは、自動的にフォアグラウンドで起動できません。この変更により、広告ポップアップと悪意のある乗っ取りが抑制されます。これを有効にするために何もする必要はありません。
アプリのサンドボックス化
Android 10 では、アプリはファイル システムの生のビューが制限されており、 /sdcard/DCIM
のようなパスに直接アクセスできません。ただし、アプリは、 Context.getExternalFilesDir()
などの該当するメソッドによって返される、パッケージ固有のパスへの完全な生のアクセスを保持します。アプリは引き続き、パッケージ固有のパスに完全に生でアクセスできます。
ファイルを共有するためのアプリ サンドボックス ガイドラインを使用して、適切なデータ共有の粒度を提供します。
アプリのクリップボードへのアクセスを制限する
Android 10 では、クリップボード アクセスが変更され、クリップボードが変更されたときにClipboardManager.getPrimaryClip
を呼び出したり、通知用のonPrimaryClipChangedListener
リスナーを追加したりしてクリップボードのコンテンツを監視できなくなりました。これにより、ユーザーのプライバシーが強化され、マルバタイジングアプリによるクリップボードの変更が無効になります。
Android 10 では、読み取りアクセスは、入力フォーカスのある現在のアプリ、または現在のキーボードのいずれかにのみ許可されます。 ClipboardManager.onPrimaryClipChanged()
リスナー呼び出しは、そのような制限を満たすアプリに対してのみ起動されるようになりました。 ClipboardManager.getPrimaryClip
およびClipboardManager.getPrimaryClipDescription
、要求元のアプリがデフォルトのインプット メソッド エディター (IME) でない場合、または入力フォーカスがない場合にnull
を返します。
実行時の権限にはアクティビティ認識が含まれます
アプリがバックグラウンドでデバイスの位置情報にアクセスすると、ユーザーにアクティビティ認識ダイアログが表示されるようになりました。 Android 10 では、ハード制限されたランタイム権限を適切にホワイトリストに登録する必要があります。
MANAGE_DEVICE_ADMINS 権限
Android 10 では、 MANAGE_DEVICE_ADMINS
権限が署名または特権から署名のみに変更されます。これは、プラットフォーム署名されたアプリのみが他のアプリをデバイス管理者として設定できることを意味します。
共有 API の改善
Android 10では、共有に関連する多数の新しい Android プラットフォーム API 機能が提供されます。実装で共有シートのコードを変更した場合は、実装がこれらの新機能をサポートしていることを確認してください。実装で共有シートのコードを変更していない場合は、これらの新機能をサポートするために何もする必要はありません。
Android ランタイム (ART)
署名付き構成
署名付き構成機能を使用すると、APK に非 SDK インターフェイス制限の構成を埋め込むことができます。これにより、特定の非 SDK インターフェイスをブラックリストから削除できるため、AndroidX はそれらを安全に使用できるようになります。この変更により、AndroidX は古い Android バージョンの新機能のサポートを追加できるようになります。
パフォーマンス
Cgroup 抽象化レイヤー
Android 10 には、 cgroup 抽象化レイヤーとタスク プロファイルが含まれており、開発者はこれらを使用して、スレッドまたはプロセスに適用する一連の制限を記述することができます。
ローメモリキラーデーモン (lmkd)
Android 10 では、メモリ プレッシャーの検出にカーネル プレッシャー ストール情報 (PSI) モニターを使用する新しいlmkd
モードがサポートされています。
力
プラットフォームの電源管理
Android 10 では、常時オンのデバイスだけでなくバッテリー駆動のデバイスでもDoze モードを有効にすることができます。
日常的なバッテリーセーバー
Android 10は、ルーチンに基づいて呼び出される新しいバッテリーセーバースケジュールオプションを導入します。ルーチンバッテリーセーバーを使用すると、OEMが選択したアプリがシステムに信号を提供して、よりインテリジェントなバッテリーセーバーのスケジューリングを提供できます。このオプションには構成が必要であり、実装するためのオプションです。
Power Stats HAL
Android 10では、 IPowerStats.hal
IPower.hal
のPower Stats Collection APIを置き換えます。 Power Halは依然としてAPIをサポートしていますが、将来のPower Stats Halにのみ移行されます。
Power Stats HALには、サポートされているデバイス用のデバイス電源測定からのデータの収集をサポートする新しいAPIが含まれています。既存のPower Stats Collection APIも更新され、柔軟性が向上します。パワーヒントAPIはPower Halのままであり、変化していません。
熱緩和
Android 10のサーマルフレームワークは、CPU、GPU、バッテリー、スキン、冷却装置など、サーマルサブシステム温度センサー用のデバイスインターフェイスを要約します。このフレームワークでは、スロットリングを開始するための熱ステータスをクエリするためのポーリングインターフェイスと、しきい値を超えたときにユーザーにメッセージを送信するコールバックインターフェイスを導入します。
Android 10は、これら3つの新しい方法を使用して、 IThermalService
インターフェイスを通じて新しいデータ型を提供します。
-
getCurrentThermalStatus()
デバイスがスロットリングを行っていない限り、デバイスの現在の熱ステータスを整数として返します。 -
addThermalStatusListener()
リスナーを追加します。 -
removeThermalStatusListener()
以前に追加されたリスナーを削除します。
アプリは、リスナーを追加および削除し、 PowerManager
クラスの温度ステータスにアクセスします。 Android APIやデバイスメーカーAPIなどの信頼できるシステムサービスのみが、関連する因果イベントに関する情報にアクセスできます。デバイスメーカーまたはSOCメーカーは、新しいサーマルフレームワークの完全な機能を有効にするためにthermal HAL 2.0
を実装する必要があります。
熱軽減の実装の例については、参照実装を参照してください。
アップデート
頂点ファイル形式
Android Pony Express(APEX)は、モジュラーシステムコンポーネントのインストールフローで使用される新しいコンテナ形式です。
動的パーティション
ダイナミックパーティションでは、ユーザースペースパーティションシステムをAndroidに導入し、OTAの更新中にパーティションを作成、サイズ変更、または破棄します。デバイスメーカーは、 system
、 vendor
、 product
などのパーティションの個々のサイズを心配する必要はありません。代わりに、1つの大きなsuper
パーティションが割り当てられ、サブパルティションは動的にサイズを組み合わせることができます。
動的システムの更新
Dynamic System Updates(DSU)を使用すると、ユーザーがインターネットからダウンロードして、現在のシステムイメージを破壊するリスクなしに試してみるAndroidシステムイメージを作成できます。
マルチユーザーのバックアップと復元
Android 10は、デバイス上のすべてのユーザーのバックアップと復元機能をサポートし、復元します。以前は、バックアップと復元はシステムユーザーのみが利用できました。非システムユーザーのバックアップと復元は、設定、壁紙、およびシステムコンポーネントの部分的なカバレッジのみがあるため、デフォルトでオフになります。
オーバーレイフ
userdebug
またはeng
ビルドを使用して作業するユーザーは、システムパーティションを読み取りワイトとして効率的に再構成し、システムイメージを再加工することなく任意の数のファイルを追加または変更できることを期待しています。 Overlayfs
を使用できます。これにより、手数料のファイルシステムのバッキングストレージを上部参照として自動的にセットアップし、下部にマウントできます。これらのアクションは、 adb disable-verity
およびadb remount
リクエストで発生します。詳細については、AOSPのOverlayfs readmeを参照してください。
リカバリモードでの共有ライブラリサポート
Android 10では、リカバリパーティションで共有ライブラリが利用可能であるため、すべてのリカバリモード実行可能ファイルが静的である必要がなくなります。共有ライブラリは、パーティション内の/system/lib
(or /system/lib64
for 64ビットデバイス用)ディレクトリの下にあります。
リカバリパーティションに新しい共有ライブラリを追加するには、 recovery_available: true
またはrecovery: true
Android.bp
の共有ライブラリの追加。前者はライブラリをシステムと回復パーティションの両方にインストールし、後者は回復パーティションにのみインストールします。
共有ライブラリサポートは、Androidのメイクベースのビルドシステムで構築することはできません。リカバリモードの既存の静的実行可能ファイルをダイナミックモードに変換するには、 LOCAL_FORCE_STATIC_EXECUTABLE := true
in Android.mk
またはstatic_executable: true
(in Android.bp
)。
ユーザーデータチェックポイント(UDC)
Android 10は、Android Over-Air(OTA)の更新が失敗したときにAndroidが以前の状態にロールバックできるようにするため、ユーザーデータチェックポイント(UDC)機能を導入します。