Android 12 にアプリを移行する

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

Google は、Android のリリースごとに、Android の有用性、安全性、パフォーマンスを向上させるため、新機能や動作変更を導入しています。多くの場合、アプリはそのままでも想定どおりに動作しますが、プラットフォームの変更に対応するためにアプリの更新が必要になる場合もあります。

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

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

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

Android 12 との互換性を確認する

既存のアプリの機能を Android 12 でテストすることは、Android の最新版にアップデートするユーザーに優れたエクスペリエンスを提供するために重要です。プラットフォームの変更の一部はアプリの動作に影響する可能性があるため、早い段階で徹底的にテストし、必要な調整をアプリに加えることが重要です。

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

テストを開始する前に、すべてのアプリの動作変更についてよく理解しておいてください。これらの変更は、targetSdkVersion を変更しない場合もアプリに影響する可能性があります。

Android 12 を入手する

Android 12 システム イメージをデバイスにフラッシュするか、Android Emulator 用のシステム イメージをダウンロードします。

変更を確認する

システムの動作変更を確認して、アプリが影響を受ける可能性がある領域を特定します。

テスト

デバイスまたはエミュレータにアプリをインストールして、テストを実施します。システムの動作変更に重点を置き、すべてのアプリフローを実行します。

更新

動作変更への対応または問題の解決に必要なコード変更のみを行います。アプリが元来ターゲットとしていた API レベルで再コンパイルします。Android 12 をターゲットに設定する必要はありません。

公開する

Android App Bundle または APK に署名し、アップロードし、公開します。

互換性テストを実施する

Android 12 の互換性テストのほとんどの部分は、通常のアプリテストと同様です。この段階で、アプリの中核品質ガイドラインテストに関するベスト プラクティスを確認することをおすすめします。

テストするには、Android 12 を搭載したデバイスに現在公開中のアプリをインストールし、すべてのフローと機能を実行して問題を探します。テストの対象を絞り込めるように、Android 12 で導入されたすべてのアプリの動作変更のうち、アプリの機能に影響するものや、アプリのクラッシュを引き起こすものを確認します。

また、制限対象の非 SDK インターフェースを使用しているかどうかを確認し、テストします。アプリで使用している制限付きインターフェースは、公開されている SDK または NDK の同等のインターフェースに置き換える必要があります。こうしたアクセスを示す logcat 警告に注意し、StrictMode メソッド detectNonSdkApiUsage() を使用して、プログラムでそうしたアクセスを特定します。

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

テストが完了し、必要な更新を加えたら、互換性のあるアプリを直ちに公開することをおすすめします。これにより、ユーザーはアプリを早期にテストでき、Android 12 にアップデートする際にスムーズに移行できます。

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

互換性のあるバージョンのアプリを公開したら、次のステップとして、targetSdkVersion を更新して Android 12 の新しい API と機能を利用することにより、Android 12 の完全なサポートを追加します。新しいプラットフォームをターゲットにするための Google Play の要件に留意し、準備ができ次第、この更新を行うことができます。

Android 12 の完全なサポートに向けた作業を計画するにあたっては、Android 12 をターゲットとするアプリに影響する動作変更を確認します。これらのターゲット固有の動作変更によって機能的な問題が発生し、対処が必要になる場合があります。これらの変更には大規模な開発が必要になる場合があるため、できるだけ早く学習して対処することをおすすめします。アプリに影響する特定の動作変更を特定するには、互換性トグルを使用して、選択した変更を有効にしてアプリをテストします。

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

Android 12 SDK を入手する

Android 12 でビルドするため、Android Studio プレビューの最新バージョンをインストールします。Android 12 のデバイスまたはエミュレータを用意します。
targetSdkVersion およびその他のビルド構成を更新します。

動作変更を確認する

Android 12 をターゲットとするアプリに適用される動作変更を確認します。アプリが影響を受ける領域を特定し、それに対応する方法を計画します。

プライバシーに関する新しい変更をチェックする

Android 12 のユーザー プライバシーに関する変更に対応するために必要な変更をコードとアーキテクチャに加えます。

Android 12 の機能を導入する

Android 12 の API を利用して、アプリに新しい機能を組み込みます。Android 12 に向けて再コンパイルします。

テスト

Android 12 のデバイスまたはエミュレータでテストします。動作変更がアプリに影響する可能性がある領域に集中して、新しい API を使用する機能を試します。プラットフォームと API に関するフィードバックを送信します。プラットフォーム、API、サードパーティの SDK に関する問題を報告します。

最終更新を行う

Android 12 の API 最終版が提供された時点で、targetSdkVersion およびその他のビルド構成をもう一度更新し、追加の更新を行って、アプリをテストします。

公開する

Android App Bundle または APK に署名し、アップロードし、公開します。

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

Android 12 の完全なサポートのテストを開始するには、Android Studio の最新プレビュー版を使用して、Android 12 SDK とその他の必要なツールをダウンロードします。次に、アプリの targetSdkVersioncompileSdkVersion を更新して、アプリを再コンパイルします。詳しくは、SDK 設定ガイドをご覧ください。

Android 12 アプリをテストする

アプリをコンパイルして Android 12 を搭載したデバイスにインストールしたら、Android 12 をターゲットに設定したときにアプリが正しく動作することを確認します。一部の動作変更は、アプリが新しいプラットフォームをターゲットとする場合にのみ適用されるため、開始する前にそれらの変更を確認してください。

基本的な互換性テストを行う場合と同様に、すべてのフローと機能を実行して問題を探します。Android 12 をターゲットとするアプリに影響する動作変更に重点を置いてテストを行います。また、この段階で、アプリの中核品質ガイドラインテストに関するベスト プラクティスに対するアプリの対応状況をチェックすることをおすすめします。

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

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

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

Android 12 は互換性の切り替えに対応しており、ターゲット固有の動作変更についてアプリを簡単にテストできます。デバッグ可能なアプリでは、この切り替えによって次のことが可能になります。

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

アプリのターゲット設定を変更する場合や、Android 12 のサポートに向けて開発を行っているときは、この切り替え機能が役立ちます。詳しくは、互換性フレームワークの変更(Android 12)をご覧ください。