11 にバージョン アップ: デベロッパーのための Android 11
Android 11 が公開されました!日本時間 9 月 9 日に、ソースを Android オープンソース プロジェクト(AOSP)にプッシュし、Android の最新バージョンを正式にリリースしました。Android 11 は、3 つのテーマ、すなわち人、管理、安全性にフォーカスして開発されています。人中心のコミュニケーションへのアプローチ、ユーザーがすべてのスマート デバイスにすばやくアクセスしてコントロールできる管理、端末のデータの共有方法をより細かく制御できる安全性の 3 つです。詳しくは、こちらのブログ記事をご覧ください。
デベロッパーにとって、Android 11 は新機能の宝庫です。会話通知、デバイスとメディアのコントロール、「今回のみ」のアクセス許可、強化された 5G サポート、IME の切り替えなどを確認しておきましょう。皆さんの開発作業を高速化するため、互換性の切り替え、ADB の増分インストール、アプリ終了理由 API、データアクセス監査 API、Kotlin NULL 可能性アノテーションなど、たくさんの新しいツールも追加しました。多くのデベロッパーの皆さんがAndroid 11 に対応したアプリを開発されることが楽しみです!
9 月 9 日より、正式版の Android 11 が Pixel 2、3、3a、4、4a 端末から順次配信が開始されていますので、ご期待ください。配信前にダウンロードする方は、Android 11 デベロッパー サイトをご覧ください。
人、管理、安全性
「人」
Android 11 は「人」を中心とした、高い表現力を持っています。スマートフォンで会話する方法を新たな発想で見直し、皆さんの生活に最も重要な「人」を認識して優先できる OS です。デベロッパーは、Android 11 を使ってさらに深い会話や個人間のやり取りを行うアプリを構築できます。
- 会話通知がシェード上部の専用のセクションに表示されます。これは人を前面に出したデザインになっており、会話をバブルとして開く、ホーム画面に会話のショートカットを作成する、リマインダーを設定するなどの会話専用アクションも実行できます。
- バブルを使って会話を表示したままにできるので、端末でマルチタスク作業を行っていても会話にアクセスできます。Android 11 のメッセージ アプリやチャットアプリでこの機能を有効化するには、通知で Bubbles API を使う必要があります。
- 統合キーボード サジェスチョンを利用すると、自動入力アプリやインプット メソッド エディタ(IME)から、状況に特有なエンティティや文字列を IME のサジェスチョン ストリップ(このような内容を表示するには最も便利な場所です)に直接かつ安全に表示できます。
バブルと会話通知
管理
Android 11 では、ユーザーが端末につながっているすべてのスマート デバイスにすばやくアクセスして、1 か所からコントロールできます。デベロッパーは新しい API を使い、ユーザーによるスマート デバイスの表示やメディアの制御を実現できます。
- デバイス コントロールを使うと、ネットワークに接続されたスマート端末に今までになく迅速かつ簡単にアクセスして制御できます。電源ボタンを長押しするだけで、すべてのデバイスが即座にデバイス コントロールに表示されるようになりました。新しい API を使うと、アプリを「コントロール」に表示できます。詳しくはこちらをご覧ください。
- メディア コントロールは、オーディオ コンテンツや動画コンテンツの出力先デバイス(ヘッドフォン、スピーカー、TV など)を即座に切り替えたいときに便利です。詳しくはこちらをご覧ください。
デバイス コントロールとメディア コントロール
安全性
Android 11 では、機密性の高いアクセス許可をユーザーが細かく制御できるようにして透明性を向上させ、アップデートを高速化することで端末の安全を保てるようにしています。
- 「1 k」のアクセス許可 - ユーザーはアプリに対して、端末のマイクやカメラ、位置情報に対する 1 回限りのアクセス許可を付与できるようになります。アプリは、次に使われたときに再度アクセス許可をリクエストできます。詳しくはこちらをご覧ください。
Android 11 の「今回のみ」アクセス許可ダイアログ
- バックグラウンド位置情報 - バックグラウンド位置情報を使うには、実行時アクセス許可に加えて、ユーザーから追加の承認を得る必要があります。バックグラウンド位置情報を必要とするアプリでは、システムはまずアプリがフォアグラウンド位置情報を要求することを確認します。その後、個別のアクセス許可リクエストによって、アクセス権をバックグラウンド位置情報に広げます。その際、ユーザーがアクセス許可を付与できるように、システムは [管理] を開きます。
なお、不正利用を防ぐため、アプリがバックグラウンドで位置情報にアクセスする場合は承認を得なければならなくなります。デベロッパーの皆さんの対応が間に合うよう、2021 年まで既存アプリへのポリシーの適用を行わないません。詳しくはこちらをご覧ください。
- アクセス許可の自動リセット - ユーザーが長期間アプリを使わなかった場合、Android 11 はアプリに関連付けられたすべての 1 回だけのアクセス許可を「自動リセット」し、ユーザーに通知します。アプリは、次に使われたときに再度アクセス許可をリクエストできます。詳しくはこちらをご覧ください。
- 対象範囲別ストレージ - 外部ストレージにあるアプリのデータとユーザーのデータの保護を強化し、さらにデベロッパーが簡単に移行できるように改善しています。詳しくはこちらをご覧ください。
- Google Play システム アップデート - 昨年リリースされた Google Play システム アップデートは、Android エコシステムの端末に対するコア OS コンポーネントのアップデートを促進する仕組みです。Android 11 では、アップデート可能なモジュールの数が倍以上になっています。この 12 の新しいモジュールは、ユーザーやデベロッパーのプライバシーやセキュリティ、整合性の改善に役立ちます。
- BiometricPrompt API - BiometricPrompt API を使うと、アプリがロック解除や機密部分へのアクセスを行う際に必要とするバイオメトリック認証強度を指定できます。下位互換性を確保するため、この機能は Jetpack Biometric ライブラリにも追加されています。この件については、作業の進捗に応じて最新情報をお知らせします。
- Identity Credential API - これにより、モバイル運転免許証、国民識別番号、デジタル ID などの新しいユースケースが実現します。Android 11 でデジタルファーストな身分証明を提供できるように、さまざまな政府機関や業界パートナーと連携して作業を進めています。
こちらから、Android 11 のすべてのプライバシー機能について確認いただけます。
イノベーション
品質の向上
- OS の耐障害性 - Android 11 では、RSS HWM しきい値に基づいてユーザーが気づかないようにプロセスの再起動を強制するなど、メモリ再利用プロセスを微調整することで、OS 全体のダイナミックさと耐障害性を向上させています。 さらに、パフォーマンスとメモリを改善するために、Android 11 に Binder のキャッシュを追加しています。これにより、静的に近いデータを取得する際にキャッシュが活用されるようになり、利用頻度の高いシステム サービス IPC コールが最適化されます。Binder のキャッシュは、電池寿命の向上や CPU 時間の削減にも効果があります。
- 同期的な IME の切り替え - 新しい API を使うと、アプリのコンテンツと、アニメーションしながら画面に出入りする IME(インプット メソッド エディタ、すなわち画面キーボード)やシステムバーを同期させることができます。これにより、自然で直感的でスムーズな IME の切り替えを簡単に実現できるようになります。新しいWindowInsetsAnimation.Callback API を使うと、フレーム単位の完璧な切り替えが行えます。この API を使うとシステムバーや IME がアニメーションしている間、アプリはインセットに対するフレーム単位の変化について通知を受けることができます。さらに、新しい WindowInsetsAnimationController API を使うと、システムバー、IME、没入モードなどのシステム UI タイプを制御することもできます。詳しくはこちらをご覧ください。
- HEIF アニメーション ドローアブル - ImageDecoder API を使うと、HEIF ファイルに格納されたイメージ シーケンス アニメーションのデコードとレンダリングを行うことができます。そのため、ネットワーク データや APK サイズへの影響を最低限にとどめつつ、高品質アセットを利用することができます。HEIF イメージ シーケンスを使うと、アニメーション GIF に比べてイメージ シーケンスのファイルサイズを大幅に削減できます。
- ネイティブ イメージ デコーダー - 新しい NDK API を使うと、グラフィックや後処理用にネイティブ コードからイメージ(JPEG、PNG、WebP など)のデコードとエンコードを行うことができ、しかも外部ライブラリをバンドルする必要がなくなるため、APK サイズを小さく保つことができます。ネイティブ デコーダーには、継続的にプラットフォームのセキュリティがアップデートがされる Android の処理を活用できるというメリットもあります。この API の使い方の例については、NDK サンプルコードをご覧ください。
- MediaCodec の低遅延動画デコード - Stadia など、リアルタイムに動画ストリーミングを行うアプリやサービスには、低遅延動画が不可欠です。低遅延再生をサポートする動画コーデックは、デコードの開始後、できるだけ早くストリームの最初のフレームを返します。アプリで新しい API を使うと、特定のコーデックの低遅延再生について確認と設定を行えます。
- 可変リフレッシュ レート - アプリやゲームで新しい API を使うと、ウィンドウに好みのフレームレートを設定できるようになります。ほとんどの Android 端末は、60Hz のリフレッシュ レートで画面を更新します。しかし、60Hz に加えて 90Hz をサポートしているなど、複数のリフレッシュ レートに対応し、実行時に切り替えることができるものもあります。このような端末では、システムがアプリに最適なリフレッシュ レートを選択する際に、アプリが設定したフレームレートを使用します。この API は、SDK と NDK の両方で利用できます。詳細については、こちらをご覧ください。
- ダイナミック リソース ローダー - Android 11 には、アプリが実行時に動的にリソースやアセットを読み込む新しいパブリック API が含まれています。リソース ローダー フレームワークを使うと、アプリやゲームにリソースの基本セットを含めておき、実行時に必要に応じて追加リソースを読み込んだり、読み込んだリソースを変更したりすることができます。
- Neural Networks API(NNAPI)1.3 - Android 端末で機械学習をサポートするため、命令や制御の追加を続けています。一般的なユースケースを最適化するため、NNAPI 1.3 には優先順位とタイムアウト、メモリドメイン、非同期コマンドキューに関する API が追加されています。高度なモデル用の新しい命令には、符号付き整数の非対称量子化、分岐とループ、MobileNetV3 などの次世代オンデバイス ビジョンモデルの高速化に役立つ hard-swish 命令などが含まれています。
デベロッパーに優しく
- アプリ互換性ツール - Android 11 の大半の動作の変更点をオプトインできるようにし、アプリの targetSdkVersion を 30 にするまで反映されないようにすることで、アプリに対する互換性の影響を最低限にとどめています。また、Google Play を通して配信している場合は、これらの変更をオプトインするまでに 1 年以上の期間があります。ただし、早めにテストを始めることを推奨します。Android 11 では、テストに役立ててもらうため、多くのオプトイン可能な変更点の有効、無効を切り替えることができるようにしています。詳しくはこちらをご覧ください。
- アプリの終了理由 - アプリが実行される端末の種類、メモリ構成、ユーザーが行った動作は多岐にわたり、アプリが終了した場合、その理由とその状況を分析することが何より重要となります。Android 11 では、その分析が簡単にできます。搭載された終了理由 API を使うと、アプリの直近の終了について詳細をリクエストできます。
- データアクセス監査 - データアクセス監査はアプリの診断を行う機能で、アプリがユーザーデータにどのようにアクセスするか、どのユーザーフローからアクセスするかについて知ることができます。たとえば、皆さんのコードや使用する SDK で、機密データへの意図しないアクセスを見つける際に役立ちます。詳しくはこちらをご覧ください。
- ADB Incremental - 開発時に ADB(Android Debug Bridge)で巨大な APK をインストールすると、非常に時間がかかって生産性に影響が出る可能性があります。特に、Android ゲーム関連のデベロッパーではそれが顕著です。Android 11 の ADB Incremental を利用すると、開発用の PC から大きな APK(2GB 以上)を Android 11 端末にインストールする時間が最大で 10 分の 1 になります。詳しくはこちらをご覧ください。
- Kotlin NULL 可能性アノテーション - Android 11 では、パブリック API のさらに多くのメソッドに NULL 可能性アノテーションが追加されています。また、たくさんの既存のアノテーションが警告からエラーにアップグレードされています。これにより、NULL 可能性の問題を実行時ではなくビルド時に発見できるようになります。詳しくはこちらをご覧ください。
Android 11 リリースに向けたアプリの準備
Android 11 はまもなくユーザーに公開されます。ぜひ、互換性テストを終えてアップデートを早めに公開していただくようお願いします。
注意すべき大きな動作の変更点のいくつかを紹介します(これらは、アプリの targetSdkVersion によらず適用されます)。
- 「1 回だけ」のアクセス許可 - 位置情報と端末のマイクやカメラに対する 1 回限りのアクセス許可を付与できるようになります。詳しくはこちらをご覧ください。
- 外部ストレージ アクセス - 外部ストレージにある他のアプリのファイルにアクセスできなくなりました。詳しくはこちらをご覧ください。
- Scudo 強化アロケータ - Scudo がアプリのネイティブ コード用ヒープメモリ アロケータになりました。詳しくはこちらをご覧ください。
- ファイル記述子サニタイザー - Fdsan がデフォルトで有効化されるようになりました。アプリのネイティブ コードでファイル ディスクリプタ処理の問題を検出します。詳しくはこちらをご覧ください。
Android 11 には、オプトイン可能な動作の変更点も含まれています。これらは、アプリのターゲットを新しいプラットフォームにした時点で反映されます。互換性のあるバージョンのアプリを公開した後、これらの変更点をできる限り早く評価することをお勧めします。互換性テストやツールの詳細については、Android 11 の互換性の週にお伝えしたドキュメントをご覧ください。詳しい技術解説は Android 11 デベロッパー サイトをご覧ください。
新機能や新 API でアプリを強化する
準備ができたら、Android 11 に移行し、使用できる新しい機能や API について各種ドキュメントでご確認ください。こちらでは最初に着手すべき重要な機能をまとめています。以下の機能はすべてのアプリで対応することをお勧めします。
- ダークテーマ(Android 10 以降)- ダークテーマを追加するか Force Dark を有効にして、システム全体でダークテーマを有効にしているユーザーに一貫性のある体験を提供します。
- ジェスチャー ナビゲーション(Android 10 以降)- アプリを全画面に対応させてジェスチャー ナビゲーションをサポートし、カスタム ジェスチャーがうまく動作するようにしましょう。詳しくはこちらをご覧ください。
- ショートカットの共有(Android 10 以降)- 共有データを受け取りたいアプリは、ショートカット共有 API を使って共有ターゲットを作成する必要があります。共有データを送りたいアプリは、システム共有シートを使う必要があります。
- 同期的な IME の切り替え - 新しい WindowInsets API やその関連 API を使うと、ユーザーにシームレスな画面遷移を提供できます。詳しくはこちらをご覧ください。
- 新しい画面タイプ - 必要に応じて、ホールパンチ スクリーンやウォーターフォール スクリーンを搭載した端末用にコンテンツをテストし、調整してください。詳しくはこちらをご覧ください。
該当するアプリでは、以下の項目にも対応することをお勧めします。
- 会話 - メッセージングやコミュニケーションを行うアプリは、ショートカット共有を作成して通知に会話を表示することで、会話エクスペリエンスに参加できます。詳しくはこちらをご覧ください。
- バブル - バブルは、会話を表示したままにしてマルチタスク作業中に会話にアクセスできるようにする方法です。これを実現するには、通知で Bubbles API を利用します。
- 5G - アプリやコンテンツで高速かつ低遅延な 5G を活用できる場合は、何ができるかを確認するため、デベロッパー リソースをご覧ください。
- デバイス コントロール - アプリで外部スマート デバイスをサポートする場合は、Android 11 の新しいデバイス コントロール エリアからアクセスできるようにしましょう。詳しくはこちらをご覧ください。
- メディア コントロール - メディアアプリは、Android 11 メディア コントロールをサポートすることが推奨されます。ユーザーがクイック設定シェードから再生や再開を制御できるようになります。詳しくはこちらをご覧ください。
Android 11 のすべての機能については、developer.android.com/11 をご覧ください。
Android 11 をインストールする
Android 11 は、9 月 9 日より、一部の Pixel、OnePlus、Xiaomi、OPPO、realme スマートフォンにロールアウトされます。今後数か月で、さらに多くのパートナーが端末のリリースやアップグレードを行う予定です。今年のベータ版プログラムに登録されている端末も含め、Pixel 2、3、3a、4、4a スマートフォンをお持ちの方には、まもなく OTA(無線)アップデートが届きますので、ご期待ください。
Pixel 端末向けの Android 11 のファクトリー システム イメージも Android Flash Tool から利用できます。または、こちらからダウンロードできます。いつものように、最新の Android Emulator システム イメージは Android Studio の SDK Manager から取得できます。Treble 対応の端末で幅広くテストしたい場合は、こちらから Generic System Image(GSI)を入手できます。
Android 11 のソースコードは、Android オープンソース プロジェクト リポジトリの Android 11 ブランチの下にあります。こちらをご覧ください。
今後の予定について
プレビュー版の Issue Tracker はまもなくクローズし、Developer Preview やベータ版ビルドに対して記録されたオープン状態のバグの管理も終了します。しかし、フィードバックは引き続きお待ちしています。Preview の Issue Tracker に記録した問題がまだ解消されていないという方は、AOSP Issue Tracker で Android 11 に対してフィードバックをお寄せください。
今年のプレビュー プログラムに参加してくださった、たくさんのデベロッパーと先行ユーザーの皆さん、本当にどうもありがとうございました。お寄せくださったフィードバックのおかげで、Android 11 はあらゆる人にとってよりよいプラットフォームになっています。
Android 11 に対応した皆さんのアプリを拝見できることを楽しみにしています。
Reviewed by
Yuichi Araki - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing APAC