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 のサポートを踏まえた開発中には、この切り替え機能が役立ちます。 詳しくはこちらをご覧ください