サイトの更新

このページでは、source.android.com の重要な更新について説明します。

2020 年 3 月

2020 年 1 月

  • Android Flash Tool - Android Flash Tool を使用すると、開発やテスト用に Android ビルドをデバイスにフラッシュできます。

2019 年 12 月

  • ソースコード検索で AOSP をすばやく検索 - ソースコード検索は、ソースコードをチェックアウトせずにブラウザ内で閲覧できるツールです。ブランチを横断して簡単に参照を移動することができます。
  • 長期サポート カーネルの更新 - 新しい長期サポート(LTS)カーネルを使用して定期的にデバイスを更新すると、認識されない潜在的なセキュリティ脆弱性に対処することができます。これは複雑なプロセスになる場合があるため、導入時に役立つ基本的な手順を説明しています。
  • Android Test Station - デベロッパーやテスト エンジニアは、Android Test Station を使用することで、CTS などの標準 Android テストスイートを実行できます。

2019 年 11 月

2019 年 9 月

Android 10 がリリースされました。詳細については、Android 10 リリースノートをご覧ください。

Android 10 の互換性定義ドキュメント(CDD)については、こちらをご覧ください。

2019 年 8 月

  • Soong ビルドシステムの概要 - GNU Make に代わるものとして Soong ビルドシステムが導入されました。Android ビルドに必要な柔軟性は備えていますが、使用の際には若干の調整が必要です。詳細については、新しい概要をご覧ください。
  • Trade Federation 自動テスト再試行 - Tradefed を設定して、自動的にテストを再試行させることができます。自動再試行機能では、失敗したテストだけが再実行されるため、時間を大幅に節約できます。
  • Android Protected Confirmation - Android Protected Confirmation の実装と設計に関するガイドラインが公開されました。Android Protected Confirmation は、ハードウェアで保護されたユーザー インターフェースである Trusted UI を活用して、重大なトランザクションに対する高度な保証を促進します。

2019 年 7 月

  • Trade Federation インストゥルメンテーション テスト - インストゥルメンテーション テストの APK のインストール方法、テストの実行方法、実行中のテストの表示方法に関する手順が公開されました。
  • Trade Federation のダウンロード - Trade Federation(TF)のテストハーネスのバイナリをダウンロードする際の手順を確認できるようになり、フレームワークを自身でビルドする必要がなくなりました。

2019 年 6 月

  • Soong ビルドシステムの手順 - ビルド セクションが拡張され、Soong に関する手順と参照ファイルが追加されました。また、後で必要になるソース管理の詳細を分離するよう再編成されました。

2019 年 5 月

  • サイトの再編成 - 以前の「ART」 セクションの名前を「ランタイム」に変更し、内容が明確に伝わるようにしました。サイト全体を通じて、ページタイトルの簡素化と標準化を行いました。また、リンクされているタブとセクションに次のように概要を付けました。
  • Trade Federation の手順 - Trade Federation テストハーネスの開発とテストに関する詳細な手順、基盤ハーネス アーキテクチャの詳細な説明を確認できるようになりました。また、自動ロギングと、マルチデバイスのテスト実行に関する情報を追加しました。

2019 年 3 月

  • Security Year in Review - Android セキュリティ チームが 2018 年版の Year In Review を公開しました。この包括的なレポートは、Android と Google のユーザーの安全を守るための対策について説明しています。
  • 新しいカーネルビルド - 最新のカーネルソースは repo を使用して取得することが可能で、ソース チェックアウトのルートから build/build.sh を実行することにより、追加設定を行うことなくビルドできます。

2019 年 2 月

  • 要件を簡素化 - Android を開発するためのソフトウェア要件が大幅に簡素化されました。インストールが容易になるように、以前のバージョンの手順を別のページに移動し、Docker へのリンクも用意しています。
  • Simpleperf - ネイティブ プロセスをプロファイリングするための基本的な Simpleperf ツールとアプリの CPU 使用率を調べるための CPU Profiler に関するドキュメントへのリンクを、パフォーマンスの評価の説明に含めました。

2018 年 8 月

Android オープンソース プロジェクト(AOSP)のウェブサイトを改訂しました。サイトの発展に伴い、新しい情報や更新情報に対応するため、プラットフォーム ドキュメント ナビゲーションを再編成しました。

主な変更点については、下記のサブセクションをご覧ください。機能の概要、更新、追加については、リリースノートをご覧ください。g.co/androidsourceissue に登録されているバグのスレッドを利用するか、サイトの各ページのフッターにあるサイト フィードバック リンクをクリックして、フィードバックをお送りください。

2 つ目の横向きのメニュー

最も大きな変更は、サイトのナビゲーション内のタブに 2 つ目の横向きのメニューを追加して、階層の深いページをわかりやすく表示できるようにしたことです。数十ものエントリを掲載した左ナビゲーション メニューの代わりに、エントリの少ないセクション リストがそれぞれのサブタブに表示されるようになりました。また、サブタブ内の関連トピックに直接関連するページも表示されます。

ただし、ブックマークや外部リンクの不具合を防ぐため、ディレクトリ パスや既存ドキュメントの URL は更新していません。今後、変更を反映していき、それに応じてリダイレクトを設定する予定です。変更が反映された際には、サイトに再度アクセスして、ブックマークを更新してください。

[セットアップ(Setup)] タブを [セットアップ(Set up)] タブに変更

これまで [セットアップ(Setup)] だったメインタブを若干変更し、他の主要なタブで使用されている動詞形に合わせて [セットアップ(Set up)] タブとしました。[ダウンロード] と [ビルド] のコンテンツを個別のサブタブに分割して、それぞれのページにアクセスしやすくしました。最上位のタブに新しく [開発] タブを設置しました。サブセクションの [開発] タブと同じ名前になるため、混乱を避けるためにサブセクションの方を [作成] タブに変更しました。

[互換性] > [お問い合わせ] ページの情報を、メインの [セットアップ] > [連絡先(コミュニティ)] リストに移しました。

[互換性] タブを [設計] タブに変更

最上位の [互換性] タブにあった情報を [設計] タブに移しました。プログラムの概要や新しい Android 互換性定義ドキュメント(CDD)へのリンクに関しては、[互換性] サブタブをご覧ください。

また、この変更に関連して、Android 互換性テストスイート(CTS)の手順と一般的なデバッグ情報が、新しい [テスト] サブタブに移動しています。なお、ディスプレイと設定メニューのガイドラインが、それぞれ [ディスプレイ] サブタブと [設定] サブタブにまとめられました。

[移植] タブを [開発] タブに変更

[移植] タブが [開発] タブに変更され、記載されている手順の内容が伝わりやすくなるようにしました。ここでは、個々のインターフェースの実装に重点を置き、デバイスを Android オペレーティング システムに接続する際に必要となるドライバの作成方法について説明しています。

それに伴い、HIDL 形式の全体像について説明している [アーキテクチャ] セクションを [設計] タブに移しました。これにより、開発サイクルの計画フェーズの段階で、アーキテクチャについて検討できます。[ブートローダー] のコンテンツは、[設計] > [アーキテクチャ] に移動しました。一方、[入力] や [センサー]、ならびに関連情報については、[インタラクション] サブタブに記載しています。

また、[接続] セクションを再編成して、[Bluetooth と NFC]、[通話とメッセージ]、[携帯通信会社]、[Wi-Fi] のサブセクションを設けました。[Wi-Fi] セクションに、以下の新しい記事を追加しました。

[調整] タブを [設定] タブに変更

[調整] タブを [設定] タブに変更し、カスタマイズや最適化の手順以外の内容も記載するようにしました。[デバイス管理] サブセクションにあったコンテンツは、[エンタープライズ] で確認できます。[ART と Dalvik] のコンテンツは [ART] に、[無線(OTA)アップデート] の情報は [アップデート] にあります。

2017 年 12 月

Android 8.1 がリリースされました。このリリースで導入された主なプラットフォーム機能については、以下の項目をご覧ください。

AAudio と MMAP

AAudio は、MMAP をサポートするドライバと HAL を併用した際のレイテンシを軽減するよう、機能が強化されたオーディオ API です。Android で AAudio の MMAP 機能をサポートするために必要なドライバの変更とハードウェア抽象化レイヤ(HAL)については、AAudio と MMAP をご覧ください。

ART 構成の変更

Android 8.1 では、Android ランタイム(ART)から WITH_DEXPREOPT_BOOT_IMG_ONLY Makefile オプションが削除され、システム サーバーの JAR ファイルとブート クラスパスを事前に最適化する WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY オプションに置き換えられました。サポート終了の通知については、ART を設定するをご覧ください。

生体認証を用いたロック解除のセキュリティの測定

Android 8.1 では、生体認証を用いたロック解除に関して、Imposter Accept Rate(IAR)と Spoof Accept Rate(SAR)という 2 つの指標が追加されました。これにより、デバイス メーカーは安全性を正確に評価できるようになります。攻撃サンプルとテスト方法については、生体認証を用いたロック解除のセキュリティを測定するをご覧ください。

起動時間の最適化

Android 8.1 以降では、UFS や CPU ガバナーなどのコンポーネントの省電力設定を無効にすることで、デバイスの起動時間を改善できます。init.*.rc の設定については、起動時間を最適化するをご覧ください。

カラー マネジメント

Android 8.1 では、ディスプレイに採用されているテクノロジーが異なる場合でも一貫したカラーを実現するカラー マネジメント機能が追加されています。Android 8.1 上で稼働するアプリは、色域の広い WCG ディスプレイのすべての機能を利用できるため、ディスプレイ デバイスを最大限に活用することができます。この機能の実装、カスタマイズ、テストの手順については、カラー マネジメントをご覧ください。

OpenGLRenderer 構成の簡素化

Android 8.1 以降では、OpenGLRenderer 構成に適用されるプロパティは ro.zygote.disable_gl_preload プロパティだけになりました。他のプロパティはすべて削除されます。この点に関する通知と、これまでサポートされていたプロパティについては、OpenGLRenderer 構成をご覧ください。

販売店デモモードが簡単になるよう改善

Android 8.1 では、販売店でデバイス機能のデモを行う際に、Device Policy Manager を通じて demo-type ユーザーロールを利用できるようになりました。実装手順については、販売店デモモードをご覧ください。

TextClassfier

Android 8.1 では、機械学習技術を活用してテキスト分類を支援する TextClassfier API が導入されました。手順については、テキスト分類を実装するをご覧ください。

タイムゾーン ルール

Android 8.1 では、デバイス メーカー(OEM)が、タイムゾーン ルールの更新データをデバイスにプッシュする際に、システム アップデートを行うことなく実施できるメカニズムが用意されました。このメカニズムにより、OEM は、システム イメージのアップデートとは別にタイムゾーンの更新をテストできるようになり、ユーザーもタイムリーに更新を受けられるようになります。更新の適用手順については、タイムゾーン ルールをご覧ください。

Wi-Fi Aware

Android 8.1 の Wi-Fi Aware 機能では、インターネットやモバイル ネットワークにアクセスすることなく、Wi-Fi 経由でデバイス間を直接接続することができます。この機能を使用すると、ネットワークに接続していなくても、信頼されたデバイスやアプリ間でハイスループットのデータを簡単に共有できます。サンプル、ソースファイル、追加ドキュメントへのリンクについては、Wi-Fi Aware をご覧ください。

2017 年 11 月

[ソース] セクションの名前が [セットアップ] に変更されました。これまでの URL が引き続き機能するよう、リダイレクトが設定されています。

2017 年 9 月

このサイトの中国語版が公開されました(source.android.google.cn)。利用しやすいように、参考資料以外はすべて簡体字中国語に翻訳されています。

2017 年 8 月

Android 8.0 がリリースされました。このセクションでは、Android 8.0 プラットフォームの主な新機能について説明します。

アーキテクチャ

Treble

Android 8.0 では、Android OS フレームワークのアーキテクチャを大きく変更する Treble がサポートされています。Treble により、各メーカーは、低コストで迅速かつ容易に、デバイスを新しい Android バージョンに更新できるようになります。詳細については、HAL インターフェース定義言語(HIDL)、新しい ConfigStore HALデバイスツリー(DT)オーバーレイベンダー ネイティブ開発キット(VNDK)ベンダー インターフェース(VINTF)オブジェクトモジュール式カーネル要件ベンダー テストスイート(VTS)とインフラストラクチャをご覧ください。

FunctionFS のサポート

FunctionFS(FFS)は、ユーザー空間経由で設計と制御が可能な USB ガジェット関数です。FFS をサポートすることで、関数やプロトコル固有のコードをすべてユーザー空間に配置しつつ、USB トランスポート コードをすべてカーネル内に配置できるようになります。FFS を使用すると、メディア転送プロトコル(MTP)実装がユーザー空間に移動します。

フレームワーク側の主な変更点は、MtpServer クラスです。USB ドライバ インターフェースが、従来のカーネル ドライバを使用するクラスと FFS を使用するクラスの 2 つにリファクタリングされました。これにより、詳細な実装を行うことなく、MtpServer がドライバ インターフェースが使用できるようになりました。FFS ドライバは、サーバーの起動時に USB 記述子をファイルに書き込みます。その後、カーネル ドライバの使用と同様にエンドポイント ファイルにデータを書き込みます。

カーネル拡張による LLDB / C++ デバッグのサポート

Android 8.0 リリースでは、デベロッパーのデバッグ環境を改善することで、優れたアプリを開発できるように、カーネルの機能が拡張されています。詳細については、カーネル拡張による LLDB / C++ デバッグをご覧ください。

カーネルのハードニング

Android 8.0 では、カーネル ドライバ内のバグを検出するためのカーネル ハードニング用の機能とツールが導入されました。詳細については、カーネルのハードニングをご覧ください。

カーネルレベルで SquashFS を最適化する

SquashFS は、Linux 用の読み取り専用圧縮ファイル システムで、システム パーティションで使用するのに適しています。このサイトで説明している最適化により、SquashFS のパフォーマンスを改善できます。詳細については、カーネルレベルで SquashFS を最適化するをご覧ください。

ART と Dalvik

ファズテスト

AOSP では、Android ランタイム(ART)インフラストラクチャのテストを行うための新しいファジング テストスイートが用意されています。新しいツールセットの JFuzz と改良版の DexFuzz は、付属ドキュメントとともに AOSP から入手できます。

新しいツールを実装して使用する際、必要なものはありません。ランタイムやコンパイラに変更を加える場合と同様、必要に応じてツールに変更を加えることもできます。

VDEX ファイル: システム アップデートのパフォーマンス向上

VDEX ファイルにより、ソフトウェア アップデートの際のパフォーマンスが向上し、ユーザー エクスペリエンスが改善されます。VDEX ファイルには、事前検証済みの DEX ファイルと検証用の依存関係が格納されているため、システム アップデートの際に ART が DEX ファイルを抽出して検証する必要がありません。この機能は、デフォルトで有効になっています。この機能を無効にする場合は、ART_ENABLE_VDEX 環境変数を false に設定します。

ART のパフォーマンス向上

Android 8.0 リリースでは、Android ランタイム(ART)のパフォーマンスが大幅に改善されています。このサイトでは、デバイス メーカーが利用できる ART の機能強化についてまとめています。詳細については、Android 8.0 における ART の改善をご覧ください。

Android の A/B OTA アップデート

このアップデートでは、Android の A/B(シームレス)システム アップデートについて、デバイス メーカーから寄せられる質問への回答が用意されています。詳細については、A/B アップデートに関するよくある質問をご覧ください。

Automotive

Bluetooth 接続の管理

Android 8.0 では、シームレスな Bluetooth ユーザー エクスペリエンスを実現するために、車載インフォテイメント システム(IVI)向けの Bluetooth 接続管理機能が用意されています。詳細については、Bluetooth 接続の管理をご覧ください。

Bluetooth マルチデバイス HFP

Bluetooth マルチデバイス接続機能により、Android Automotive 搭載 IVI の Bluetooth 機能を通じて、電話通信プロファイルに複数のデバイスを接続できるようになります。詳細については、Bluetooth マルチデバイス接続をご覧ください。

車載カメラ HAL

車外表示システム(EVS)スタックの設計について説明し、車載カメラデータの取得と表示をサポートする HAL 仕様を示します。詳細については、車載カメラ HAL をご覧ください。

Bluetooth

Bluetooth の概要が更新されています。詳細については、こちらをご覧ください。

Bluetooth の検証とデバッグを行う

Bluetooth のネイティブ スタックの検証方法とデバッグ方法については、検証とデバッグを行うをご覧ください。

Bluetooth サービス

Bluetooth は、オーディオ ストリーミング、通話、メッセージングなど、デバイス間のコアサービスを可能にするさまざまな機能を実現します。詳細については、Bluetooth サービスをご覧ください。

BLE のアドバタイズ

Bluetooth 5 では、高速帯域幅の対応や対象範囲の拡大など、Bluetooth Low Energy(BLE)のデータ アドバタイズに関する複数のモードがサポートされています。詳細については、Bluetooth Low Energy のアドバタイズをご覧ください。

オーディオ コーデックの Bluetooth サポート

Android 8.0 リリースには、Bluetooth HD オーディオ コーデックのサポートが含まれています。詳細については、高度なオーディオ コーデックをご覧ください。

カメラ

重要なカメラ機能

Android 8.0 リリースでは、複数のサーフェスで同じ OutputConfiguration を共有できる共有サーフェスや、カスタム カメラモード用のシステム API、onCaptureQueueEmpty など、カメラサービスの主要な機能が強化されています。詳細については、バージョンごとのカメラ機能のサポートをご覧ください。

構成

アンビエント機能

この機能を使用すると、Linux プロセスにおいて、関数の実行に必要な特権のサブセットを保持しつつ、root 権限と同等の特権の大半をドロップできるようになります。アンビエント機能により、システム サービスは、.rc ファイル内で機能を設定できるようになるため、構成全体を単一のファイルにまとめることができます。詳細については、アンビエント機能をご覧ください。

特権パーミッションに関するホワイトリスト要件

Android 8.0 以降では、特権アプリは必ず、/etc/permissions ディレクトリにあるシステム構成 XML ファイル内で明示的にホワイトリスト登録する必要があります。ホワイトリストに登録されていない場合、デバイスは起動しますが、デバイス実装は CTS の検証にパスできません。詳細については、特権パーミッションのホワイトリスト登録をご覧ください。

USB HAL を実装する

Android 8.0 リリースでは、USB コマンドの処理を init スクリプトからネイティブ USB デーモンに移行し、構成やコードの信頼性を向上させています。詳細については、USB HAL を実装するをご覧ください。

接続

ユーザーが残量を使い果たした際のデバイス動作のカスタマイズ

データ通信量の残量がなくなった場合、Android デバイスは、ネットワーク トラフィックの通過を許可しつつ、携帯通信会社に対応用プロトコルの実施を求めます。この機能により、デバイスのデータ通信量の残量がなくなったときに携帯通信会社が通知できる汎用ソリューションを実装できます。詳細については、データ通信量の残量がなくなったときのデバイス動作をカスタマイズするをご覧ください。

デバッグ

Android ビルドシステムでのサニタイズを有効にする

サニタイザーは、開発中やテスト中にバグを検出し、Android を改善するために使用するコンパイラ ベースのインストゥルメンテーション コンポーネントです。Android の現在のサニタイザー セットは、メモリの不適切な使用によるバグや、危険性のある未定義動作を検出し、診断することができます。詳細については、LLVM サニタイザーをご覧ください。

再起動を繰り返すデバイスを復旧させる

Android 8.0 に搭載された Rescue Party 機能は、中核的なシステム コンポーネントがクラッシュ ループの状態に陥ると、それを検出し、復旧用のヘルプを送信します。Rescue Party は、デバイスを復旧させるための処理を段階的に実施します。詳細については、Rescue Party をご覧ください。

storaged

Android 8.0 では、Android のネイティブ デーモンである storaged のサポートが追加されています。storaged を使用すると、Android デバイスのストレージ指標を収集し公開することができます。詳細については、storaged を実装するをご覧ください。

ディスプレイ

フローティング ウィンドウ用の Air Traffic Control

Android 8.0 では、フローティング ウィンドウ用の Air Traffic Control(ATC)が導入され、アプリを他のアプリの上に重ねて表示する方法が簡素化され、一元化されました。この機能を使用するために必要なものは、すべて AOSP に含まれています。

ATC により、デベロッパーは、新しい管理対象フローティング レイヤ / ウィンドウ タイプを作成し、アプリのウィンドウを他のアプリの上に重ねて表示できるようになります。この機能は、フローティング レイヤを使用して、すべてのアプリを対象に継続的通知を表示します。このフローティング レイヤで、ユーザーは、アラート ウィンドウを管理することができます。

Android 互換性テストスイート(CTS)では、以下の点について確認されます。

  • 現在のアラート ウィンドウ タイプは TYPE_PHONETYPE_PRIORITY_PHONETYPE_SYSTEM_ALERTTYPE_SYSTEM_OVERLAYTYPE_SYSTEM_ERROR です。
  • Android 8.0 SDK をターゲットとするアプリの場合、上記のウィンドウ タイプを使用して、他のアプリの上に重ねてウィンドウを表示することはできません。代わりに、TYPE_APPLICATION_OVERLAY ウィンドウ タイプを使用する必要があります。
  • それよりも古い SDK をターゲットとするアプリの場合、現在のウィンドウ タイプを使用できますが、ウィンドウは新しい TYPE_APPLICATION_OVERLAY ウィンドウの下に Z オーダーの順に配置されます。
  • システムは、新しいレイヤ内でウィンドウの移動やサイズ変更を行うことにより、混雑を軽減できます。
  • デバイス メーカーは、他のアプリの上に重ねて表示する内容をユーザーが管理できるように、通知を維持する必要があります。

セカンダリ ディスプレイ上でアクティビティを起動する

バーチャル ディスプレイは誰もが利用でき、特別なハードウェアも必要ありません。どのアプリでも仮想ディスプレイのインスタンスを作成できます。Android 8.0 リリースでは、関連機能が有効になっていれば、仮想ディスプレイ上でアクティビティを起動できます。

マルチディスプレイ機能をサポートするには、次のいずれかを行います。

  • サポートされている既存の方法でセカンダリ デバイスを接続します。
    Nexus デバイスおよび Pixel デバイスの場合、Google Cast とアプリ内仮想ディスプレイがサポートされています。他の方法のサポート状況は、MHL や USB-C 経由 DisplayPort 機能など、それぞれのケースにおけるカーネル ドライバのサポート状況や、HardwareComposer HAL(IComposerCallback.hal および IComposerClient.hal)におけるディスプレイ関連のインターフェース定義の実装状況に依存します。
  • 新しいハードウェアを作成します。

各選択肢を実施する際には、SoC や OEM のサポートが必要となる場合があります。たとえば、USB-C 経由 DisplayPort 機能を有効にするには、ハードウェア(SOC)とソフトウェア(ドライバ)の両方のサポートが必要です。また、外部ディスプレイの接続をサポートするには、ハードウェア用のドライバの実装が必要となる場合があります。

デフォルト実装により、セカンダリ ディスプレイ上でアクティビティの全画面表示スタックを起動できます。セカンダリ ディスプレイ上のスタック、システム UI、動作は、カスタマイズ可能です。

汎用ツールチップのサポート

Android 8.0 では、デベロッパーは、ボタンやアイコンにカーソルを合わせたときにアクションを説明する名前や各種情報を表示させることができます。デバイス メーカーは、ツールチップ ポップアップのスタイルを設定できます。レイアウトは android/frameworks/base/core/res/res/layout/tooltip.xml 内で定義されます。

OEM は、レイアウトを置き換えたり、サイズやスタイル パラメータを変更したりすることができます。テキストだけを使用して、サイズを適度に小さくすることも可能です。この機能は、View クラス内ですべて実装され、ツールチップ動作のさまざまな側面をチェックする包括的な CTS テストも用意されています。

拡張アスペクト比のサポート

Android 8.0 には、maxAspectRatio マニフェスト属性が追加されています。この属性を使用することで、アクティビティやアプリは、サポートする最大アスペクト比を指定できます。maxAspectRatio を使用すると、以前のメタデータタグがファースト クラス API に置き換えられ、デバイスは、16:9 よりも大きなアスペクト比をサポートできるようになります。

  • アクティビティやアプリのサイズが変更できる場合は、アクティビティを画面一杯に表示できます。
  • アクティビティやアプリのサイズが変更できない場合や、プラットフォームがアクティビティのサイズを強制的に変更している場合は、maxAspectRatio 値に応じた最大のアスペクト比で、アプリ ウィンドウを表示できます。
    • Android 8.0 を搭載しているデバイスのアプリの場合、デフォルト値は現在のデバイスのアスペクト比になります。
    • Android 8.0 以前のバージョンを搭載しているデバイスのアプリの場合、デフォルト値は 16:9 です。

アダプティブ アイコン

アダプティブ アイコン機能を使用すると、デベロッパーは、単一のアイコン アセットを提供するだけで、1 つのデバイス内ではアイコンの形状を一貫したものにしつつ、複数のデバイス間ではデバイスに応じてアイコンの形状を変化させることができます。また、アダプティブ アイコンは、2 つのレイヤ(フォアグラウンドとバックグラウンド)をサポートしており、ビジュアル効果に優れたモーションを設定することができます。詳細については、アダプティブ アイコンを実装するをご覧ください。

夜間モード

Android 7.0.1 で導入された夜間モードを使用すると、ユーザーは画面から放出されるブルーライトの量を減らすことができます。Android 8.0 では、この機能の効果を詳細に調整できるようになりました。詳細については、夜間モードを実装するをご覧ください。

ピクチャー イン ピクチャー

Android 8.0 では、Android モバイル デバイス上でのピクチャー イン ピクチャー(PIP)がサポートされています。PIP によって、ユーザーは、動画などのアクティビティを継続したまま、そのアプリのウィンドウを小さなサイズに変更することができます。詳細については、ピクチャー イン ピクチャーをご覧ください。

分割画面の操作性を改善

マルチウィンドウ機能を使用すると、ユーザーのデバイスの画面に複数のアプリを同時に表示できます。Android 8.0 では、分割画面のデフォルト モードが改善され、ユーザーが分割画面を開始した後にホームボタンをタップすると、ランチャーのサイズが変更され、上側の画面が小さくなるようになりました。詳細については、分割画面の操作をご覧ください。

ウィジェット / ショートカットを追加する

Android 8.0 の新しい API を使用すると、アプリ デベロッパーは、ウィジェット トレイを使用せずに、アプリ内からショートカットやウィジェットを追加できます。ブロードキャストを送信してショートカットを追加する従来の方法は、セキュリティ上の理由で非推奨になっています。詳細については、ウィジェット / ショートカットをご覧ください。

ダウンロードとビルド

Android LLVM ツールチェーンの改善

最新のツールチェーンやツールを使用しようとする OEM は、独自の非公開コードが、更新版のツールチェーンで正常にコンパイルできるか確認する必要があります。その際、コード内に未定義動作があった場合、そのような既存の問題の解決が必要となることがあります(もちろん、独自のコードをコンパイルする際は、どのようなツールを使用しても構いません)。

OEM は、UBSan などのツールを使用して、独自のコードの中に未定義動作がないことを確認する必要があります。そうすることで、新しいツールチェーンによって問題が発生する可能性を抑えることができます。すべてのツールチェーンは、常に AOSP 内で直接更新されます。OC のリリース前にすべて利用可能になるため、OEM の対応は事前に完了します。

一般的な手順については、Clang / LLVM の公開ドキュメントをご覧ください。Android に固有のガイドについては、AOSP 内の Android Clang / LLVM ドキュメントをご覧ください。また、サポートが必要な場合や開発に協力したい場合は、android-llvm 公開グループにご参加ください。

DRM / KMS

Linux カーネル バージョン 4.9 における DRM / KMS

Android が使用するダイレクト レンダリング マネージャー(DRM) / カーネルモード設定(KMS)フレームワークは、Linux カーネル デベロッパーにより開発、管理されています。Android は、Linux カーネルにマージされています。デバイス メーカーは、Android 共通カーネルにマージすることで、DRM / KMS フレームワークを自動的に取得できます。

DRM / KMS は Linux カーネル バージョン 4.9 で安定利用が可能となっており、OEM パートナーが DRM / KMS を使用する際は、このカーネル バージョン以降のものを使うことを強くおすすめします。Android によって現在公式にサポートされているディスプレイ フレームワークである Atomic Display Framework(ADF)は、バージョン 4.9 以降の Android 共通カーネルでサポートされています。他方、Android は、このバージョン以降から DRM / KMS をサポートしています。OEM は引き続き ADF(および他のフレームワーク)を使用できますが、そのようなフレームワークは Android 共通カーネル内ではサポートされていません。

DRM / KMS を実装するには、DRM / KMS を使用するドライバを独自に作成し、Android 共通カーネルから DRM / KMS フレームワークをマージする必要があります。

キーストア

Keymaster 3

Android 8.0 では、Android デバイスのハードウェア格納型キーストレージ機能が拡張され、Keymaster(キーストア HAL)が更新されています。この拡張機能は、Android 7.1.2 で導入された Keymaster 2 への更新をベースにしています。詳細については、ハードウェア格納型キーストアをご覧ください。

セキュリティの機能強化

HttpsURLConnection から安全でない TLS バージョンのフォールバックを削除

クライアントとのネゴシエーションにおいて TLS プロトコル バージョンのダウングレードが行われる実装になっている場合、一部のサーバーでは TLS/SSL プロトコルのバージョンをフォールバックさせて対応することがありますが、これは安全ではありません。この対応は、POODLE 攻撃に対して脆弱です。2015 年 9 月に、安全でないフォールバックを Chrome 45 が廃止した時点で、このようなフォールバックに依存するサーバーは 0.01% 未満になりました。Android 8.0 では、セキュリティを強化するため、安全でない TLS バージョンのフォールバックを HttpsURLConnection から削除しています。詳細については、こちらのブログ記事をご覧ください。

Android 8.0 を搭載しているデバイスでこの機能をテストするには、次の CTS テストケースを実行してください。

cts-tradefed run cts -m CtsLibcoreOkHttpTestCases

パフォーマンス

フラッシュ ウェアの管理

Android Automotive におけるフラッシュ ウェアの管理では、eMMC の動作と、OEM が自動車環境内で eMMC 障害のリスクを低減できるようにする新機能について説明します。

起動時間を最適化する

起動時間を最適化するでは、個々の Android デバイスの起動時間を改善する方法について説明しています。

タスク スナップショット

タスクのスナップショットは Android 8.0 で導入されたインフラストラクチャであり、直近のサムネイルのスクリーンショットと、ウィンドウ マネージャーから保存されたサーフェスを組み合わせることで、メモリを節約します。詳細については、タスク スナップショットをご覧ください。

周辺機器

デフォルト印刷サービス

プリント サービスは、プリンタを検出してデバイスのプリント フレームワークに提供するアプリです。これまでの Android バージョンの場合、ユーザーは、サードパーティ プリント サービスを検索してインストールし、プリントできるようにする必要がありました。

Android 8.0 では、platform/packages/services/BuiltInPrintService/ 内にデフォルト プリント サービスが組み込まれており、ユーザーは、追加アプリをインストールすることなく最新のプリンタでプリントすることができます。この実装では、Internet Printing Protocol(IPP)を使用してプリンタと通信し、PCLm や、PWG-Raster、PDF を使用してプリント可能コンテンツを送信します。古いプリンタの場合、ユーザーは、PrintRecommendationService パッケージによって推奨されるアプリをインストールする必要があります。詳細については、こちらの Google I/O プレゼンテーションをご覧ください。

リファレンスの更新

[リファレンス] セクションが最上位のナビゲーションに追加されました。Treble リリースの一環として、HIDL リファレンスが追加されています。Trade Federationレガシー HAL のリファレンス ドキュメントも更新されています。

設定メニュー

設定: パターンとコンポーネント

Android 8.0 では、設定メニューに、一般的な用途に対応するコンポーネントとウィジェットが追加されています。詳細については、パターンとコンポーネントをご覧ください。

設定: 情報アーキテクチャの更新

Android 8.0 では、設定アプリに対して、新しい情報アーキテクチャが導入されています。設定メニューの分類をシンプルにし、Android デバイスをカスタマイズする際に必要となる設定をユーザーがすぐに見つけられるようにしています。詳細については、情報アーキテクチャをご覧ください。

パーソナライズド設定

設定アプリは、操作のヒントリストをユーザーに提示します。ヒントの内容は、ユーザーが過去にヒントを見て行った操作やコンテキスト シグナルに基づいて、ランク付けされています。詳細については、パーソナライズド設定をご覧ください。

Android 8.0 では、設定メニュー用の拡張検索機能が追加されています。このサイトでは、設定を追加して適切にインデックスに登録する方法について説明しています。詳細については、ユニバーサル検索をご覧ください。

ストレージ

ストレージ統計情報の高速化

Android 8.0 では、ext4 ファイル システムの割り当て機能に対応することで、ディスクの使用状況に関する統計情報がほぼ即座に返されるようになりました。詳細については、ストレージ統計情報の高速化をご覧ください。

2017 年 4 月

source.android.com が新しくなりました。情報が常に増え続けているため、情報へのナビゲーションを改善し、検索や閲覧が容易になるようにサイトを改善しました。改善内容の概要は次のとおりです。

画面サイズおよび文字サイズの拡大

サイト全体の幅を広げ、一度に多くのコンテンツを表示できるようにしました。サンプルコードやコマンドが見やすくなり、テキストがすべて拡大されています。

モバイルに対応したビュー

新しいサイトでは、モバイル専用のビューが用意されており、モバイル デバイスでも適切に表示できるようになりました。

新しいモバイルビュー
図 1: サイトの新しいモバイルビュー

最上位のタブ

以前の [デバイス] タブの名前が [移植] に変更され、[コア テクノロジー] サブタブが [調整] に変更されました。また、見つけやすくなるようにサイトの上部に移動しました。

[セキュリティ] タブを前面に移動

Android のセキュリティに対する注目が高まっており、その重要度に応じて [セキュリティ] タブを前面([ソース] タブの隣)に移動しました。

参考資料の改善

HALTrade Federation に関する参考資料が、最上位の [リファレンス] タブから直接入手できるようになりました。

各ページの右上にある [コードを表示] ボタンをクリックすると、AOSP のコード リポジトリが表示されるようになりました。

フッターに包括的なリンクを追加

各ページの下に、従来の [Android について]、[コミュニティ]、[法的事項] の各フッターに加えて、関係リンクのリストが表示されるようになりました。Android の開発や、エコシステムとの連携、オペレーティング システムの使用サポートに関するリンクが用意されています。