Android 6.0 を利用すると、次期バージョンのプラットフォームでアプリが動作するか確認できます。このプレビューには、API の概要と動作の変更点に記載されているように、アプリに影響を与える可能性のある多くの API 変更と動作変更が含まれています。このプレビューでアプリをテストするときには、アプリの良好な使用感を維持するために、特に注意すべきシステムの変更点がいくつかあります。
このガイドでは、アプリでプレビューの機能の何をどのようにテストすればよいか説明します。以下のプレビュー機能は、アプリの動作に大きな影響を与える可能性があるので、優先してテストする必要があります。
パーミッションをテストする
パーミッションモデルの変更により、ユーザーがアプリにパーミッションを付与する方法が変わりました。アプリでは、インストール時にすべてのパーミッションを要求するのではなく、実行時に個々のパーミッションをユーザーに要求する必要があります。これにより、ユーザーは、各アプリのアクティビティをより細かく制御できるようになるだけではなく、アプリが各パーミッションを要求する理由をこれまでよりもよく理解できるようになります。ユーザーは、いつでもアプリに個別にパーミッションを付与したり、付与したパーミッションを個別に取り消したりできます。プレビューのこの機能は、アプリの動作に大きな影響を与える可能性があり、アプリの一部の機能が動作しなくなったり、限定された機能しか使えなくなったりする可能性もあります。
この変更は、アプリがこの新しいバージョンを対象にしているかどうかにかかわらず、この新しいプラットフォーム上で実行されるすべてのアプリに影響します。このプラットフォームでは以前のアプリ向けに限定的な互換動作をサポートしますが、公式版のプラットフォームのリリースに合わせてアップデート版のアプリを公開できるように、新しいパーミッション モデルに対応させるためのアプリの移行を今から計画することを強くお勧めします。
テストのポイント
以下のテストのポイントを参考にして、アプリでの新しいパーミッション動作のテストを計画し、実行してください。
- アプリの現在のパーミッションと関連するコードパスを確認します。
- パーミッションで保護されている種々のサービスやデータに対してユーザーフローをテストします。
- 付与されたパーミッションと取り消されたパーミッションのさまざまな組み合わせをテストします。
adb
ツールを使用して、コマンドラインからパーミッションを管理します。- パーミッションとステータスをグループ化して表示します。
adb shell pm list permissions -d -g
- 以下の構文を使用して 1 つまたは複数のパーミッションを付与または取り消します。
adb shell pm [grant|revoke] <permission.name> ...
- パーミッションとステータスをグループ化して表示します。
- アプリでパーミッションを使用しているサービスを分析します。
テスト方針
パーミッションの変更は、アプリの構造や設計、ユーザー エクスペリエンスやフローにも影響を与えます。アプリの現在のパーミッションの利用状況を調査し、新しいフローの検討を開始してください。このプラットフォームの公式リリースは互換動作をサポートしますが、互換動作に頼ることなくアプリのアップデートを計画することを強くお勧めします。
まずアプリが実際に必要とし使用しているパーミッションを特定してから、パーミッションで保護されたサービスを使用している各コードパスを探してください。そのためには、新しいプラットフォーム上でのテストと、コードの解析が必要です。テストでは、アプリの targetSdkVersion
をこのプレビュー バージョンに変えて、ランタイム パーミッションのオプトインを重点的に確認する必要があります。詳細については、Android N SDK のセットアップをご覧ください。
パーミッションの取り消しと付与のさまざまな組み合わせをテストし、パーミッションに依存するユーザーフローを集中的に確認します。パーミッションへの依存性が明白でない、または論理的ではない箇所については、依存性を取り除くため、またはパーミッションが必要な理由を明白にするために、フローのリファクタリングまたはコンパートメント化を検討する必要があります。
ランタイム パーミッションの動作、テスト、ベスト プラクティスについては、Developer Preview ページのパーミッションをご覧ください。
Doze とアプリ スタンバイをテストする
省電力機能である Doze とアプリ スタンバイにより、端末がアイドル状態のときやそのアプリにフォーカスがないときに、アプリが実行できるバックグラウンド処理の量が制限されます。システムによってアプリに課せられる可能性のある制限には、ネットワーク アクセスの制限や停止、バックグラウンド タスクの停止、通知の停止、ウェイク リクエストの無視、アラームなどがあります。これらの省電力のための最適化が行われた状態でも確実にアプリが適切に動作するように、これらの省電力状態をシミュレートしてアプリをテストする必要があります。
Doze モードでアプリをテストする
アプリで Doze モードをテストするには:
- Android N のシステム イメージを使用して、ハードウェア端末または仮想端末を設定します。
- 端末を開発マシンに接続し、アプリをインストールします。
- アプリを実行し、アクティブ状態のままにします。
- 以下のコマンドを実行して、端末の Doze モードへの移行をシミュレートします。
$ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step $ adb shell dumpsys deviceidle -h
- 端末がアクティブ状態に戻ったときのアプリの動作を観察します。端末が Doze モードから抜けるときに、アプリがスムーズに復帰することを確認します。
アプリ スタンバイモードでアプリをテストする
アプリでアプリ スタンバイ モードをテストするには:
- Android N のシステム イメージを使用して、ハードウェア端末または仮想端末を設定します。
- 端末を開発マシンに接続し、アプリをインストールします。
- アプリを実行し、アクティブ状態のままにします。
- 以下のコマンドを実行して、アプリのスタンバイ モードへの移行をシミュレートします。
$ adb shell am broadcast -a android.os.action.DISCHARGING $ adb shell am set-idle <packageName> true
- 以下のコマンドを使用して、アプリの復帰をシミュレートします。
$ adb shell am set-idle <packageName> false
- アプリがウェイク状態に戻ったときのアプリの動作を観察します。アプリがスタンバイ モードからスムーズに復帰することを確認します。特に、アプリの通知とバックグラウンド ジョブが想定通りの動作を続けているかを確認する必要があります。
アプリの自動バックアップと端末固有識別子
アプリが、Google Cloud Messaging の登録 ID などの何らかの端末固有の識別子を内部ストレージに保持している場合、アプリの自動バックアップの説明に従って、そのストレージのロケーションを自動バックアップの対象から除外してください。