この記事は Dave Burke による Android Developers Blog の記事 "Android 11 Beta 2 and Platform Stability" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。




数週間前、人、管理、安全性にフォーカスした Android 11 Beta 1 をリリースしました#Android11Beta Launch でも取り上げましたが、この OS の開発では、スマートフォンで会話する方法を新たな発想で見直し、皆さんの生活に最も重要な「人」を優先しています。Beta 1 ではより人間中心になり、表現力が豊かになりました。スマート端末は操作しやすくなり、機密性の高いアクセス許可も細かく制御できるようになりました。また、会話通知バブルクイック アクセス デバイス コントロールメディア コントロールなどの API を使用して、「人」を優先したエクスペリエンスをアプリに組み込むことができるようになりました。

そして 2020 年 7 月 8 日(日本時間 7 月 9 日)、Android 11 Beta 2 をリリースしました。今回のリリースで Platform Stability に到達し、Android 11 の API と動作がこれで確定しました。デベロッパーの皆さんは早急にご自分のアプリの互換性アップデートに着手し、2020 年第 3 四半期に予定している Android 11 公式リリースまでに完了、公開していただけるようお願いします。

#11 Weeks of Android の第 4 週目のテーマは、Android 11 の互換性です。この週を通して、役立つコンテンツや資料を公開します。#11 Weeks of Android のページにアクセスするか、TwitterYoutube で Android Developers をフォローしてください。

Pixel 2、3、3a、4 の各端末は、こちらから登録してすぐに無線(OTA)アップデートで Beta 2 を入手でき、ダウンロードも可能です。既に Beta 1 をインストールしている端末は、自動的に無線アップデートが行われます。ぜひ感想をお聞かせください。これまでにフィードバックをお寄せくださった皆様、ありがとうございました!

Platform Stability


今回公開した Beta 2 で、Android 11 は Platform Stability となりました。このマイルストーンは、フィードバックに基づいて、デベロッパーの皆さんのために今年新たに追加されました。

Platform Stability は、Android 11 のアプリに関わる部分とその動作がすべて確定版になったことを意味します。SDK と NDK API が確定するだけでなく、アプリに影響する可能性がある非 SDK インターフェースについてのシステム動作や制限も確定します。Beta 2 以降はプラットフォームが変わることはないので、安心して互換性アップデートを公開できます。スケジュールの詳細はこちらをご覧ください。




プラットフォームが安定版になったのですべてのアプリやゲームのデベロッパーの皆さんは、最終の互換性テストを開始し、最終リリース前にアップデート版のアプリを公開することをおすすめします。

すべての SDK、ライブラリ、ツール、ゲームエンジン デベロッパーの皆さんは、今すぐテストを開始し、できる限り早く互換性アップデートを公開することが非常に重要です。皆さんのライブラリなどを利用しているデベロッパーの方は、皆さんからのアップデートを受け取るまで作業できないかもしれません。互換性アップデートを公開したら、関係するデベロッパーに向けてアナウンスをお願いします。




アプリの互換性が重要である理由


Android におけるアプリの互換性 とは、特定のバージョンのプラットフォーム(通常は最新版)でアプリが問題なく動作することを意味します。互換性は、Android 11 を実行している端末またはエミュレータに本番向けのアプリをインストールすれば、すぐにチェックできます。すべてのユーザーフローや機能をテストして、アプリの見栄えと動作が問題ないことを確認できれば、互換性を確保できたことになります。

こう聞くと簡単そうですが、それだけでは不十分かもしれません。リリースのたびにプライバシーとセキュリティの改善に必要な変更が行われ、OS 全体のユーザー エクスペリエンスを進化させる変更も実装されています。場合によっては、アプリに影響が生じる可能性もあります。そのため、動作の変更点を確認してテストし、ユーザーに互換性アップデートを公開することが必要です。これは基本的なことですが、品質基準としてなくてはならない工程です。

アプリの互換性は、ユーザーが最新バージョンの Android にアップデートする際に重要になります。この点は、新しい端末を購入した場合でも現在の端末にアップデートをインストールした場合でも変わりません。ユーザーは最新バージョンの Android OS を使うことを楽しみにしており、そこでお気に入りのアプリを使いたいと考えています。アプリがきちんと動作しなければ、ユーザーにとっても、私たち全員にとっても大問題になります。

Android 11 Beta 2 で利用できる新しい API や機能はたくさんあり、アプリのターゲットを変更する際に考慮すべき変更点も多くありますが、まずは現在のアプリをテストし、互換性アップデートをリリースするところから始めましょう。

Pixel などの端末では、Android 11 が Android オープンソース プロジェクト(AOSP)に最終リリースされ次第、アップデートが始まります。このタイミングは、2020年第 3 四半期を予定しています。複数のパートナーの端末でも、互換性テストをサポートするために積極的なパブリック プレビューを実施中です。


アプリの互換性を確保しやすくなった Android 11


私たちはリリースのたびに、アプリの準備に必要な作業を減らすよう努めています。Android 11 では、プラットフォームのアップデートによる影響を最低限にとどめ、簡単にアプリの互換性を維持できるようにするため、新しいプロセスやデベロッパー ツール、リリース マイルストーンを追加しました。



  • 動作の変更による影響を最低限に - 私たちは、アプリに影響する可能性があるプラットフォームの変更を最低限に抑えるよう、意識的に取り組んでいます。そのために、アプリの targetSdkVersion を Android 11 に設定するまで、可能な限り変更をオプトインできるようにしています。また、Google Play を通して配信している場合は、これらの変更をオプトインするまでに 1 年以上の猶予があります。
  • テストとデバッグを簡単に - 互換性のテストに役立ててもらうため、多くの互換性を伴わない変更を切り替え可能にしています。つまり、開発者向けオプションや adb から、個々の変更を強制的に有効化または無効化できます。この変更により、基本的なテストのために targetSdkVersion を変更したり、アプリを再コンパイルする必要はなくなりました。詳細はこちらをご覧ください

    開発者向けオプションのアプリの互換性切り替え
  • 非 SDK インターフェースの制限 - デベロッパーの皆さんが徐々に非 SDK API から移行できるようにする継続的な作業の一環として、制限されている非 SDK インターフェースの一覧をアップデートしました。いつものように、皆さんのフィードバックや同等のパブリック API についてのリクエストを歓迎します。
  • ダイナミック リソース ローダー - デベロッパーの皆さんから、非 SDK インターフェースからの移行の一部として、実行時にリソースやアセットを動的に読み込むパブリック API についての要望が寄せられていました。そこで、Android 11 にリソース ローダー フレームワークを追加しました。
  • Platform Stability リリーススケジュール - 既にお知らせしたように、これはリリース プロセスに追加した新しいマイルストーンで、最終的な変更の日程をデベロッパーの皆さんに明示することが目的です。SDK/NDK API が最終版になるだけでなく、アプリに影響する可能性がある内部 API とシステム動作も最終版となります。



Android 11 リリースに向けたアプリの準備



Android 11 が安定版になったので、できるだけ早くアプリの互換性を確保してください。そのための方法を以下に示します。






現在のアプリのテストは、すべてのアプリが対象となる動作の変更点から始めましょう。ここから、影響がありそうな変更点を確認できます。次に示すのは、特に重要な変更点です(これらはアプリの targetSdkVersion に関係なく適用されます)。



  • 1 回だけのアクセス許可 - 位置情報と端末のマイクやカメラに対する 1 回限りのアクセス許可を付与できるようになります。詳細については、こちらをご覧ください。
  • 外部ストレージ アクセス - 外部ストレージにある他のアプリのファイルにアクセスできなくなりました。詳細については、こちらをご覧ください。
  • Scudo 強化アロケータ - アプリのネイティブ コード用ヒープメモリ アロケータです。詳細については、こちらをご覧ください。
  • ファイル記述子サニタイザー - この機能がデフォルトで有効化されるようになりました。アプリのネイティブ コードでファイル ディスクリプタ処理の問題を検出します。詳細については、こちらをご覧ください。


アプリのライブラリや SDK の互換性テストも忘れずに行ってください。問題を見つけた場合は、最新バージョンの SDK にアップデートするか、デベロッパーに連絡してサポートを求めます。


互換性を確認したアプリを公開した後は、アプリの targetSdkVersion をアップデートする作業に着手します。Android 11 アプリに関する動作の変更点を確認し、互換性フレームワークを試して影響を確認します。次に示すのは、テストする際に特に重要な変更点です(targetSdkVersion 30 以上にのみ適用されます)。



  • 対象範囲別ストレージ - ファイルを読み書きするアプリについて、ストレージの制限、動作、API が新しくなります。詳細については、こちらをご覧ください。
  • バックグラウンド位置情報 - アプリがバックグラウンド位置情報をリクエストする方法と、ユーザーがアクセスを許可する方法が変更されます。詳細については、こちらをご覧ください。
  • パッケージの公開設定 - インストールされている別のアプリに対してアプリがクエリまたは操作を行う方法が変更されます。詳細については、こちらをご覧ください。
  • 圧縮されたリソース ファイル - 圧縮された resources.arsc ファイルが含まれている場合、またはこのファイルが 4 バイト境界に揃えられていない場合、アプリのインストールやアップデートができなくなります。詳細については、こちらをご覧ください。
  • APK 署名スキーム v2 - APK 署名スキーム v2 以上でのアプリの署名が必要になります。詳細については、こちらをご覧ください。
  • ヒープポインタのタグ付け - 64 ビットプロセスでは、ネイティブ ヒープ割り当てによってポインタの最上位バイトにタグが設定されます。これをアプリで変更してはいけません。詳細については、こちらをご覧ください。



テストでは、制限されている非 SDK インターフェースが使用されていないかを確認し、存在する場合は同等のパブリック SDK に移行します。制限されている API については、こちらをご覧ください。


新しい機能と API を試してみる



準備ができたら、早速 Android 11 を試して、構築できる新しいエクスペリエンスについて学びましょう。#Android11 ベータ版についてのブログ記事に、デベロッパー向けの新機能がまとめられています。また、Beta Launch ページにアクセスして、Android チームのトークや各分野の新機能を確認することもできます。


Android Studio にも Android 11 向けに、大きな APK のインストールを高速化する ADB Incremental(adb 増分 APK インストール)、プラットフォーム API への追加の NULL 可能性アノテーションなど、生産性やワークフローを改善するための新機能が搭載されました。最新の Android Studio ベータ版または Canary 版をダウンロードすると、これらの機能を試してみることができます。Android Studio を Android 11 用に設定する手順はこちらです。

Android 11 向けの機能や API の詳細については、Android 11 デベロッパー サイトをご覧ください。


Android 11 Beta 2 の入手方法



簡単です!こちらから登録すると、Pixel 2、3、3a、4 の各端末で Android 11 ベータ版の無線アップデートを受け取ることができます。または、簡単にオンデマンドでアップデートしたい方は、Android Flash Tool をお試しください。ダウンロード可能なシステム イメージも公開されています。Pixel 端末をお持ちでない方は、Android Studio で Android Emulator を使うか、サポートされている Treble 対応端末で GSI イメージを使うと、Android 11 を実行できます。

皆さんからのフィードバックを活用して、さらに改善を続けていきます。ぜひお気づきの点はぜひこちらからフィードバックをお寄せくださいプラットフォームの問題(プライバシーや動作の変更点も含む)、アプリの互換性の問題サードパーティ SDK の問題の送信には、ホットリストを使うことができます。これまですばらしいフィードバックを共有してくださった皆さん、どうもありがとうございました。


Android 11 互換性の関連情報



#11 Weeks of Android の第 4 週のテーマは、Android 11 の互換性です。プラットフォームが安定版になった今、すべてのデベロッパーにとって重要な内容が含まれています。

互換性テストに便利な情報をこちらで共有しています。また、TwitterYoutube で Android Developers をフォローすると、この 1 週間を通してこの分野に役立つコンテンツや資料を入手できます。

太平洋夏時間の 7 月 9 日午後 12 時(日本時間 7 月 10 日午前 4 時)に、Android エンジニアチームが r/androiddev で Reddit AMA を開催し、Android 11 についての技術的な質問にお答えしました。詳細は Reddit のスレッドをご覧ください。


Reviewed by Yuichi Araki - Developer Relations Team and Nori Fujii - Google Play Developer Marketing APAC