Android 11 にアプリを移行する

Google では Android をリリースするたびに、Android の利便性、安全性、パフォーマンスを高めることを目的とした新機能や動作変更を導入しています。多くの場合、アプリはそのままでも想定どおり動作しますが、プラットフォームの変更に合わせるために、アプリの変更が必要になる場合もあります。

AOSP(Android オープンソース プロジェクト)にソースコードがリリースされると、ユーザーはすぐに新しいプラットフォームを受け取れるため、アプリを準備しておくことが重要です。アプリがユーザーの期待どおりに動作し、理想的には新しい機能と API を活用して新しいプラットフォームを最大限に活用します。

このドキュメントでは、一般的な開発フェーズとテストフェーズの概要を説明します。プラットフォームのリリース スケジュールに合わせて準備計画を作成し、Android 11 で優れたユーザー エクスペリエンスを実現するのに役立ちます。

一般的な移行には、同時に進行できる次の 2 つの段階があります。

  • アプリの互換性を確保する(Android 11 の最終リリースまでに)
  • 新しいプラットフォームの機能と API をターゲットに設定する(最終リリース後、できるだけ早く完了)

このページでは、各段階の一般的な手順について概説します。準備ができたら、Android 11 を入手してください。

Android 11 との互換性を確保する

既存のアプリの機能を Android 11 でテストすることで、Android の最新版に更新したユーザーに快適な利用を保証することが重要です。プラットフォームの変更の一部が、アプリの動作に影響を及ぼすことがあるので、早期に十分にテストして、アプリに必要な調整を行うことが重要です。

通常は、アプリの targetSdkVersion は変更せずに、アプリを調整して、アップデートを公開できます。同様に、新しい API の使用や、アプリの compileSdkVersion の変更は通常必須ではありません。ただし、それは、アプリのビルド方法や使用しているプラットフォームの機能によって異なります。以降のセクションでは、手順の概要を説明します。

この手順を開始する前に、targetSdkVersion を変更しない場合も含めて、アプリが影響を受ける可能性のある動作の変更点について、十分に把握してください。

互換性テストを実施する

Android 11 との互換性テストのほとんどは、アプリのリリースに備えて行うテストの種類とほぼ同じです。この機会に、アプリの中核品質ガイドラインテストのおすすめの方法をもう一度確認することをおすすめします。

Android 11 を実行しているデバイスに、現在公開しているアプリをインストールして、すべてのフローと機能に問題がないか確認します。テストの対象を絞り込めるように、Android 11 で導入された動作変更のうち、アプリの機能に影響するものや、アプリのクラッシュを引き起こすものを確認します。特に、プライバシーに関する重要な変更点を確認し、変更に対応するように修正する場合はその実装をテストすることが重要になります。

また、制限対象となる非 SDK インターフェースを使用しているかどうかをテストし、使用している場合は、それに代わる同等の公開 SDK または NDK に移行します。こうしたアクセスを示す logcat 警告に注意し、StrictMode メソッド detectNonSdkApiUsage() を使用して、プログラムによって特定します。

最後に、アプリ内のライブラリと SDK の完全なテストを行い、Android 11 で想定どおりに動作することを確認します。また、プライバシー、パフォーマンス、UX、データ処理、権限に関するベスト プラクティスを適用します。問題が見つかった場合は、SDK を最新バージョンにアップデートするか、SDK のデベロッパーに対処方法を問い合わせます。

テストが完了し、必要な更新を加えた後は、互換性のあるアプリを速やかに公開することをおすすめします。そうすることで、ユーザーによってすぐにアプリがテストされるため、一般のユーザーが Android 11 に更新する際にスムーズな移行を提供できます。

アプリのターゲティングを更新し、新しい API でビルドする

前述のように互換性のあるアプリのバージョンを公開したら、targetSdkVersion を更新して Android 11 の新しい API と機能を活用して、Android 11 を完全にサポートするようにします。これらの処理は、新しいプラットフォームをターゲットとした Google Play の要件を念頭に置きながら、すぐに行うことができます。

Android 11 の完全なサポートに向けて作業を進める場合は、最初に Android 11 をターゲットとするアプリに適用される動作の変更を確認することをおすすめします。こうしたターゲット固有の動作変更は、機能上の問題を引き起こすことがあり、その場合は対処が必要です。場合によっては大規模な開発が必要になることがあるため、早めに確認することをおすすめします。影響の評価に役立つ方法として、選択した変更を有効にした現在のアプリを、互換性の切り替えによってテストすることもできます。

Android 11 を完全にサポートする手順は次のとおりです。

SDK を入手し、ターゲット設定を変更し、新しい API を使ってビルドする

Android 11 を完全にサポートするには、まず Android 11 SDK(およびその他必要なツール)を Android Studio にダウンロードします。 次にアプリの targetSdkVersioncompileSdkVersion"30" に変更してアプリを再コンパイルします。詳しくはセットアップ ガイドをご覧ください。

Android 11 アプリをテストする

アプリをコンパイルし、Android 11 を実行しているデバイスにインストールしたら、Android 11 をターゲットとしたときにアプリが正しく動作することを確認します。動作変更の中には、アプリが新しいプラットフォームをターゲットとする場合にのみ適用されるものがあります。テストを開始する前に、そのような変更を確認してください。

基本的な互換性テストを行う場合と同様に、すべてのフローと機能を実行して問題を探します。テストは、Android 11 をターゲットとするアプリでの動作の変更に集中させます。特に、プライバシー関連の変更を確認し、変更に対応するために実装した修正をテストするようにしてください。この段階で、アプリの中核品質ガイドラインテストに関するベスト プラクティスに対するアプリの対応状況をチェックすることをおすすめします。

制限対象となる非 SDK インターフェースを使用しているかどうかをテストして確認してください。こうしたアクセスを示す logcat 警告に注意し、StrictMode メソッド detectNonSdkApiUsage() を使用して、プログラムによって特定します。

最後に、アプリ内のライブラリと SDK を完全にテストして、Android 11 で想定どおりに動作することを確認します。また、プライバシー、パフォーマンス、UX、データ処理、権限に関するベスト プラクティスに従ってください。問題が見つかった場合は、SDK を最新バージョンにアップデートするか、SDK のデベロッパーに対処方法を問い合わせます。

アプリの互換性切り替えを使用してテストする

Android 11 では、ターゲット固有の動作の変更についてアプリを簡単にテストできる、デベロッパー向けの新機能が導入されています。デバッグ可能なアプリでは、この切り替えによって次のことが可能になります。

  • アプリの targetSdkVersion を実際には変更せずに、ターゲット固有の変更をテストする。切り替えを使用して、特定のターゲット固有の動作変更を強制的に有効にし、既存のアプリに対する影響を評価できます。
  • 特定の変更にテストを集中させる。切り替えを使用することで、テスト対象以外のターゲット固有の変更をすべて無効にできます。これにより、一度にすべてのターゲット固有の変更に対処する必要がなくなります。
  • adb を介して切り替えを管理する。adb コマンドを使用すると、切り替え可能な変更を自動テスト環境で有効または無効にできます。
  • 標準の変更 ID を使用して迅速にデバッグする。切り替え可能な変更にはそれぞれ一意の ID と名前があり、ログ出力から根本原因を迅速にデバッグできます。

アプリのターゲット設定を変更する場合や、Android 11 のサポートに向けて開発を行っているときは、この切り替え機能が役立ちます。詳しくは、対応するドキュメントをご覧ください。