インストール数、ユーザー レビュー、エンゲージメント、ユーザー維持率といった点で、アプリの長期的な成功に直接影響します。
高品質なアプリの確固たる基盤を築くには、アプリの品質に関する主要なガイドラインに準拠してください。
このガイドラインは、すべてのアプリが満たすべき最低限の品質基準を定めたものです。
アダプティブ アプリの品質
Android アプリは、コンパクトなスマートフォンからタブレット、折りたたみ式デバイス、デスクトップ、コネクテッド ディスプレイ、車載インフォテインメント システム、テレビ、XR まで、さまざまなデバイスで動作します。分割画面やデスクトップ ウィンドウなどのウィンドウ モードでは、アプリを画面のサイズ変更可能な部分で実行できます。
アダプティブ アプリの品質に関するガイドライン(アプリの中核品質に関するガイドラインと併用)に沿って、次のことを行います。
- あらゆるフォーム ファクタとディスプレイ サイズに最適化されたアプリを作成する
- Google Play の掲載情報と検索でアプリのランキングを上げる
- ユーザーの獲得数を増やし、ユーザー維持率を高める
ガイドライン
以下の基本的なガイドラインは、高品質なアプリを開発するうえで役立ちます。
ユーザー エクスペリエンス
アプリでは、一貫性のある直感的ユーザー エクスペリエンスを提供するために、標準的な Android 視覚デザインと操作パターンを指定する必要があります。
可能であれば、Android プラットフォーム コンポーネントの代わりにマテリアル デザイン コンポーネントを使用して、アプリのユーザー インターフェースを作成します。マテリアル デザインは、Android の最新のデザインを提供し、Android のバージョン間で UI の整合性を保ちます。
| ID | テスト | 説明 |
|---|---|---|
| ユーザビリティ | ||
| ユーザビリティ:UX | T-Usability:Core、 T-SD-Card |
アプリは、すべてのフォーム ファクタのすべてのアプリ ユースケースで一貫したユーザー エクスペリエンスを提供します。 |
| ユーザビリティ:Switcher | T-Usability:Switcher、 T-SD-Card |
フォーカスが別のアプリに切り替わると、アプリはバックグラウンドに移行します。最近使ったアプリのスイッチャーから再アクティブ化されると、アプリはフォアグラウンドに戻ります。 |
| Usability:Sleep | T-Usability:Sleep, T-SD-Card |
アプリがフォアグラウンド アプリの場合、デバイスがスリープ状態になると一時停止し、デバイスが復帰すると再開します。 |
| ユーザビリティ:ロック | T-Usability:Lock, T-SD-Card |
アプリがフォアグラウンド アプリの場合、デバイスがロックされると一時停止し、デバイスのロックが解除されると再開します。 |
| ユーザー インターフェース | ||
| UI:Parity | T-UI:Transitions |
ディスプレイの向きと折りたたみ状態では、機能や動作の大部分が同じになり、同等の機能が保持されます。 |
| UI:Fullscreen | T-UI:Transitions |
デバイスの折りたたみや展開など、構成の変更によってレターボックス表示が行われることなく、アプリ ウィンドウをいずれの向きでも埋める。 画面の形状について若干のばらつきを補正するための若干のレターボックス表示は認められます。 |
| UI:Transitions | T-UI:Transitions | ディスプレイの向きやデバイスの折りたたみ / 展開の急な変化に適切に対応でき、ディスプレイのレンダリングの問題が発生せず、状態が失われない。 |
| 画質 | ||
| Visual:Display | T-Visual:Display |
目立った歪み、ぼやけ、粗さを生じさせずに、グラフィックス、テキスト、画像、その他の UI 要素を表示します。
|
| Visual:Readability(ビジュアル: 読みやすさ) | T-Visual:Readability | サポートしている各言語で、行の長さを 45 ~ 75 文字(スペースを含む)に制限することで、テキストとテキスト ブロックの読みやすさを確保します。 |
| ビジュアル:テーマ | T-Visual:Themes | アプリのコンテンツ、アプリがアクセスするすべてのウェブ コンテンツは、ライトモードとダークモードの両方に対応している。 |
| ナビゲーション | ||
| Nav:BackButton | T-Nav:Back | アプリは、標準システムの戻るボタンのナビゲーションをサポートするものとし、画面上のプロンプトとしてカスタムの「戻る」ボタンは一切使用しない。 |
| Nav:BackGesture | T-Nav:Back | アプリは、前の画面 / ホーム画面に戻るためのジェスチャー ナビゲーションをサポートしている。 |
| Nav:State | T-Nav:State, T-Nav:Back |
アプリは、フォアグラウンドから離れる際にユーザーやアプリの状態を保存し、戻るボタンの使用や他の状態変化により誤ってデータが消失するのを防ぐ。 フォアグラウンドに戻る際、アプリは保存された状態と保留中のステートフル トランザクションを復元します。たとえば、編集可能なフィールドに対する変更、ゲームの進捗、メニュー、動画、アプリのその他のセクションなどです。
|
| 通知 | ||
| Notify:Info | T-Notify:Info |
通知には、アプリに関連する関連情報が表示されます。
|
| Notify:Messaging | T-Notify:Info |
メッセージ アプリ、ソーシャル アプリ、会話の場合:
|
| ユーザー補助 | ||
| Access:Targets | T-Access:Targets | タップ ターゲットが 48 dp 以上である。マテリアル デザインのレイアウトとタイポグラフィのガイドラインをご覧ください。 |
| Access:Contrast | T-Access:Contrast |
アプリのテキストとフォアグラウンドのコンテンツは、アプリの背景に対して次のコントラスト比を維持します。
詳細については、色とコントラストをご覧ください。 |
| Access:Description | T-Access:説明 | contentDescription を使用して、TextView 以外の各 UI 要素を記述する。 |
機能
アプリには、次の機能の動作を実装する必要があります。
| ID | テスト | 説明 |
|---|---|---|
| 音声 | ||
| 音声:Init | T-Audio:Init |
ユーザーが音声の再生を開始したら、アプリは 1 秒以内に次のいずれかを行う必要があります。
|
| Audio:Focus | T-Audio:Focus | アプリは、音声の再生が開始された場合は音声フォーカスをリクエストし、再生が停止した場合は音声フォーカスを破棄する。 |
| Audio:Interrupt | T-Audio:Interrupt | アプリは、他のアプリからの音声フォーカスのリクエストを処理する(例: 別のアプリで音声が再生されたときに再生音量を小さくする)。 |
| Audio:Background | T-Audio:Background | アプリはバックグラウンド再生をサポートする。 |
| 音声:通知 | T-Audio:Notification | アプリがバックグラウンドで音声を再生する場合は、MediaStyle でスタイル設定された通知を作成する必要があります。 |
| 音声:再開 | T-Audio:Resume | アプリがバックグラウンドで音声が一時停止している場合、アプリがフォアグラウンドに戻ったら音声を再開するか、再生が一時停止状態であることをユーザーに示します。 |
| 動画 | ||
| 動画:PiP | T-Video:PiP | アプリが動画を再生する場合、ピクチャー イン ピクチャーの再生をサポートする。 |
| 動画:エンコード | T-Video:Encoding | アプリが動画をエンコードする場合は、HEVC 動画圧縮規格を使用する。 |
| 共有 | ||
| Sharing:Sheet | T-Sharing:Sheet | コンテンツを共有するときは、Android Sharesheet を使用する必要があります。Android Sharesheet は、カスタム ソリューションでは利用できないターゲットを提案できます。 |
| バックグラウンド サービス | ||
| 背景:サービス | T-Background:Services |
バックグラウンドで必要以上に長時間にわたってサービスが実行されない。お客様のデバイスがスムーズに動作するようにするため。 注: システムによってバックグラウンド サービスに関するさまざまな制限が適用されている。 バックグラウンド サービスの不適切な使用方法を以下に示します。
詳細については、バックグラウンド タスクの概要をご覧ください。 |
パフォーマンスと安定性
アプリは、最適なパフォーマンス、安定性、互換性、応答性を提供する必要があります。
| ID | テスト | 説明 |
|---|---|---|
| パフォーマンス | ||
| パフォーマンス:スタートアップ | T- Performance:Startup | アプリは、すぐに読み込まれるようにする。または、読み込みにかかる時間が 2 秒を超える場合は、画面上でユーザーに対するフィードバック(進行状況を示すインジケーターや、同様のシグナル)を提供する。 |
| パフォーマンス:FPS | T-Performance:FPS | アプリは、16 ミリ秒(またはそれ以下)ごとにフレームをレンダリングし、1 秒あたり 60 フレーム以上を表示する。レンダリングの問題については、レンダリングが遅いをご覧ください。 |
| パフォーマンス:厳格 | T-Performance:Strict | StrictMode を有効にしている場合(StrictMode によるテストのセクションを参照)、アプリのテスト時に赤の点滅(StrictMode からのパフォーマンスの警告)が表示されない。 |
| 安定性 | ||
| 安定性:ANR | T-Stability:ANR | アプリは、クラッシュせず、ANR(Android 応答なし)エラーを引き起こす UI スレッドをブロックしない。Google Play のリリース前レポートを使用して、安定性に関する潜在的な問題を特定します。デプロイ後は、Google Play Console の Android Vitals のページをモニタリングしてください。 |
| SDK | ||
| SDK:Platform | T-SDK:Platform | アプリは、クラッシュしたり、コア機能に大きな影響を与えたりすることなく、最新公開版の Android プラットフォームで動作する。 |
| SDK:Target | T-SDK:Latest | アプリのモジュール build.gradle ファイルで targetSdk 値を設定して、Google Play 要件を満たすために必要な最新の Android SDK をターゲットに設定する。 |
| SDK:Compile | T-SDK:Latest | アプリは、アプリのモジュール build.gradle ファイルで compileSdk 値を設定して、最新の Android SDK で構築されている。 |
| SDK:3P | T-SDK:3P、 T-SDK:Non |
使用されている Google またはサードパーティの SDK がすべて最新である。これらの SDK の安定性、互換性、セキュリティに関する改善は、適切なタイミングでユーザーに提供される必要があります。 Google SDK では、利用できる場合には Google Play 開発者サービスの SDK を使用する。これらの SDK には下位互換性があり、自動更新を受け取れ、アプリのパッケージ サイズを削減して、オンデバイスのリソースを効率的に使用できる。 |
| SDK:Non | T-SDK:Non | アプリは非 SDK インターフェースを使用していない。 |
| SDK:Debug | T-SDK:Debug | 製品版アプリにはデバッグ ライブラリが含まれていない。アプリに含まれているデバッグ ライブラリは、パフォーマンスやセキュリティの問題を引き起こす可能性がある。 |
| 電池 | ||
| Battery:Manage | T-Battery:Manage |
アプリは、電源管理機能の Doze とアプリ スタンバイを適切にサポートする。 アプリは、電力メンテナンスの免除をリクエストできます。Doze とアプリ スタンバイ用に最適化するのその他のユースケースのサポートをご覧ください。 |
プライバシーとセキュリティ
アプリは、ユーザーデータと個人情報を安全に処理し、適切なレベルの権限を提供します。
Google Play ストアで公開するアプリは、ユーザーのプライバシーを保護するよう Google Play のユーザーデータに関するポリシーにも準拠する必要があります。
| ID | テスト | 説明 |
|---|---|---|
| 権限 | ||
| Permissions:Min | T-Permissions:Min | 現在のユースケースのサポートに必要な最小限の権限のみをリクエストします。位置情報などの一部の権限については、可能であれば、精細な仕様ではなく、おおよその仕様を使用します。権限リクエストを最小限に抑えるをご覧ください。 |
| Permissions:Sensitive | T-Permissions:Sensitive |
アプリは、アプリの主要なユースケースに直接関係がある場合にのみ、センシティブ データ(SMS や通話履歴の権限グループ、位置情報など)や料金がかかるサービス(電話アプリや SMS など)へのアクセス権限をリクエストする。これらの権限に伴う影響について、ユーザーに明確に開示する必要があります。 アプリでの権限の使用方法によっては、機密情報にアクセスせずにアプリのユースケースに対応できる別の方法を使用できる場合があります。(ユーザーの連絡先に関連する権限をリクエストする代わりに、暗黙的インテントを使用してアクセスをリクエストするなど)。 |
| Permissions:Runtime | T-Permissions:Runtime | アプリは、実行時の権限を、アプリの起動時ではなく、機能がリクエストされたときにリクエストします。 |
| Permissions:Explain | T-Permissions:Explain | アプリが権限が必要な理由を明確に説明している。 |
| 権限:Degrade | T-Permissions:Degrade | ユーザーが権限を拒否または取り消すと、アプリはグレースフル デグラデーションを実行する。ユーザーがアプリにまったくアクセスできないようにしてはなりません。 |
| データとファイル | ||
| Data:Sensitive | T-Data:Sensitive、 T-Data:Handling |
機密データがすべてアプリの内部ストレージに保存される。 |
| Data:Log | T-Data:Log | ユーザーの個人データやセンシティブ データが、システムログまたはアプリ固有のログに記録されない。 |
| Data:IDs | T-Data:IDs | アプリでは、識別目的で IMEI などの再設定不可能なハードウェア ID を使用しない。 |
| ID | ||
| Identity:Hints | T-Identity:Hints | アカウント認証情報やその他の機密情報(クレジット カード情報、住所、電話番号など)を自動入力するためのヒントを提供する。 |
| Identity:CredMan | T-Identity:CredMan | アプリは Android 用認証情報マネージャーを統合し、パスキー、フェデレーション ID、パスワードのサポートを統合したシームレスなログイン エクスペリエンスを実現します。 |
| Identity:Bio | T-Identity:Bio | 生体認証に対応し、支払いや機密情報(重要なユーザー ドキュメントなど)を保護する。 |
| アプリ コンポーネント | ||
| コンポーネント:エクスポート | T-Components:Export |
すべてのアクティビティ、サービス、ブロードキャスト レシーバ、特にコンテンツ プロバイダ用に明示的に 他のアプリとデータを共有するアプリケーション コンポーネント、他のアプリから呼び出されるコンポーネントのみがエクスポートされる。 |
| コンポーネント:Permissions | T-Components:Permissions |
すべてのインテントとブロードキャストを、次のベスト プラクティスに沿って設定する。
|
| コンポーネント:保護 | T-Components:Protection |
アプリ間でコンテンツを共有するすべてのコンポーネントは、カスタム権限に アプリはインストール済みパッケージのリストにアクセスする必要がないようにする。 |
| ネットワーキング | ||
| Network:Traffic | T-Network:Traffic | すべてのネットワーク トラフィックが SSL 経由で送信される。 |
| Network:Config | T-Network:Config | アプリがネットワーク セキュリティ構成を宣言している。 |
| Network:Play | T-Network:Play | アプリが Google Play 開発者サービスを使用する場合、アプリの起動時にセキュリティ プロバイダが初期化される。 |
| WebView | ||
| WebViews:Config | T-WebViews:Config, T-WebViews:Nav |
ローカル コンテンツへのアクセスに setAllowUniversalAccessFromFileURLs() を使用しないでください。代わりに、WebViewAssetLoader を使用してください。 |
| WebView:JavaScript | T-WebViews:JavaScript、 T-WebViews:Nav |
ウェブビューでは、信頼できないコンテンツに対して Android 6.0(API レベル 23 以降)では、代わりに HTML メッセージ チャネルを使用します。 |
| 実行 | ||
| 実行:バンドル | T-Execution:Bundles |
アプリの APK の外部からコードを動的にロードしない。Android App Bundle(Play Feature Delivery と Play Asset Delivery を含む)を使用する。 2021 年 8 月から、Google Play ストアのすべての新しいアプリにおいて、Android App Bundle の使用が必須となっています。 |
| 暗号化 | ||
| Crypto:Algorithms | T-Crypto:Algorithms | アプリが、文字列、プラットフォームで提供される暗号アルゴリズムと乱数生成ツールを使用する。また、アプリがカスタム アルゴリズムを実装していない。 |
Google Play
Google Play でアプリを公開できるようにします。
| ID | テスト | 説明 | |
|---|---|---|---|
| ポリシー | |||
| Play:Policies | T-Play:Policies | アプリが Google Play デベロッパー コンテンツ ポリシーの各条項を遵守している。不適切なコンテンツを提供したり、他者の知的財産やブランドを使用したりしていない。 | |
| Play:Maturity | T-Play:Policies | アプリの対象年齢が、コンテンツのレーティングに関するガイドラインに基づいて適切に設定されている。 | |
| アプリの詳細ページ | |||
| Play:Graphics | T-Play:Graphics、 T-Play:Assets |
アプリのフィーチャー グラフィックが、こちらのサポート記事で概説されているガイドラインを遵守している。次の点をご確認ください。
|
|
| Play:NonAndroid | T-Play:Assets | アプリのスクリーンショットや動画で、Android 以外のデバイスを表示したり、そうしたデバイスに言及したりしません。 | |
| Play:Misleading | T-Play:Assets | アプリのスクリーンショットや動画で、アプリのコンテンツとエクスペリエンスについて誤解を招くような表現をしないようにします。 | |
| ユーザー サポート | |||
| Play:Bugs | T-Play:Policies | Google Play ページの [レビュー] タブでユーザーから報告された一般的なバグについては、再現性がありさまざまなデバイスで発生する場合、対処します。バグがごく一部のデバイスでしか発生しない場合でも、特に人気のあるデバイスや新しいデバイスであれば、対処する必要があります。 | |
テスト環境
次のようにして、テスト環境をセットアップします。
エミュレータのテスト: Android Emulator は、さまざまな Android バージョンと画面解像度でのアプリのテストに最適なツールです。ターゲット ユーザーの最も一般的なフォーム ファクタとハードウェア/ソフトウェアの組み合わせを代表する、エミュレートされたデバイス(AVD)を設定します。少なくとも次のエミュレータを使用して、さまざまなフォーム ファクタをテストします。
- 折りたたみ式デバイス: 7.6 インチ、ディスプレイが外側を向くデバイス(AVD Manager のスマートフォンに掲載されています)
- タブレット: Google Pixel C 9.94 インチ(2,560 px x 1,800 px)
- モバイルアプリの通知をテストする: モバイル デバイス / エミュレータを Wear OS エミュレータとペア設定する: Wear OS Round 1.84 インチ
ハードウェア デバイス: テスト環境では、主要なフォーム ファクタと、現在ユーザーが利用できるハードウェアとソフトウェアの典型的な組み合わせとして、実際のハードウェア デバイスをいくつか用意します。市販されているあらゆるデバイスでテストを実施する必要はありません。1 つのフォーム ファクタにつき 1 ~ 2 台のデバイスを使い、代表的ないくつかのデバイスでのみテストを行います。
デバイスのテストラボ: Firebase Test Lab などのサードパーティのサービスを使用して、さまざまなデバイスでアプリをテストすることもできます。
最新バージョンの Android でテストする: ターゲット ユーザーの典型的な Android バージョンをテストするだけでなく、最新バージョンの Android についてもテストする必要があります。これにより、最新の動作変更によってアプリのユーザー エクスペリエンスが低下しないようにすることができます。
単体テスト、統合テスト、UI テストなど、テストに関する詳しいガイダンスについては、Android アプリのテストの基礎をご覧ください。
StrictMode
パフォーマンス テストでは、アプリで StrictMode を有効にします。StrictMode を使用して、パフォーマンス、ネットワーク アクセス、ファイルの読み取り / 書き込みに影響を及ぼす可能性のある操作をキャッチします。メインスレッドと他のスレッドの両方で、問題のある可能性がある操作を探します。
StrictMode.ThreadPolicy.Builder を使用してスレッドごとのモニタリング ポリシーを設定し、detectAll() を使用して ThreadPolicy でサポートされているすべてのモニタリングを有効にします。
penaltyFlashScreen() を使用して、ThreadPolicy のポリシー違反のビジュアル通知を有効にします。
テスト
アプリの中核品質テストは、アプリの基本的な品質を評価する際に役立ちます。複数のテストを組み合わせることも、テストのグループをテスト計画に統合することもできます。
ユーザー エクスペリエンス
| ID | 機能 | 説明 |
|---|---|---|
| ユーザビリティ | ||
| T-Usability:Core | ユーザビリティ:UX |
すべての画面、ダイアログ、設定、ユーザーフローといった、アプリのあらゆる部分について、ナビゲーションを確認します。 次の操作を行います。
|
| T-Usability:Switcher | Usability:Switcher | アプリの各画面から、実行中の別のアプリに切り替えた後、最近使ったアプリのスイッチャーを使ってテスト対象のアプリに戻ります。 |
| T-Usability:Sleep | ユーザビリティ:睡眠 | 電源ボタンを押してデバイスをスリープ状態にしてから、電源ボタンをもう一度押して画面を復帰させます。 |
| T-Usability:Lock | ユーザビリティ:ロック | デバイスで画面ロックを設定します。電源ボタンを押してデバイスをスリープ状態にします(デバイスがロックされます)。電源ボタンをもう一度押して画面を復帰させ、デバイスのロックを解除します。 |
| SD カード | ||
| T-SD-Card | ユーザビリティ:UX |
デバイスの SD カードにインストールしたアプリについて、コア機能のテストを実施します(アプリがこのインストール方法をサポートしている場合)。 アプリを SD カードに移動するには、アプリの設定をご覧ください。 |
| ユーザー インターフェース | ||
| T-UI:Transitions | UI:Parity、 UI:Fullscreen、 UI:Transitions |
アプリの各画面で、少なくとも 3 回、デバイスを横向きと縦向きに回転させ、折りたたみ状態と展開状態を切り替える。 アプリが次のことを行っていることを確認します。
|
| 画質 | ||
| T-Visual:Display | ビジュアル:ディスプレイ | アプリのすべての機能を使用します。グラフィックス、テキスト、画像、その他の UI 要素を含むすべてのビジュアルに、歪み、ぼやけ、粗さがないことを確認します。 |
| T-Visual:Readability | ビジュアル:読みやすさ |
アプリ内のすべてのテキスト ブロックを確認します。テキストとテキスト ブロックの行の長さが、読みやすさを考慮して 45 ~ 75 文字(スペースを含む)に制限されていることを確認します。 以下を確認します。
|
| T-Visual:Themes | ビジュアル:テーマ | ライトテーマとダークテーマの両方でテキストが読みやすいことを確認します。ライトテーマとダークテーマで、すべてのビジュアルが明確に識別可能で、美観を損なわないことを確認します。 |
| ナビゲーション | ||
| T-Nav:Back | Nav:BackButton、 Nav:BackGesture |
すべての画面、ダイアログ、設定、ユーザーフローといった、アプリのあらゆる部分について、ナビゲーションを確認します。 アプリの各画面で、[戻る] ボタンを押すか、スワイプ操作で戻ります。アプリが前の画面またはホーム画面に移動します。 |
| T-Nav:State | Nav:State | アプリの各画面で、デバイスのホームボタンを押すか、ジェスチャー ナビゲーションで上にスワイプした後、[すべてのアプリ] 画面からアプリを再起動します。 |
| 通知 | ||
| T-Notify:Info | Notify:Info、 Notify:Messaging |
通知ドロワーで、アプリが表示できるあらゆるタイプの通知を表示させて確認します。展開できる通知については展開し(Android 4.1 以降)、利用可能なすべてのアクションをタップします。 |
| ユーザー補助 | ||
| T-Access:Targets | アクセス:ターゲット | すべてのディスプレイのサイズと設定で、タップ ターゲットが一貫性を持ってアクセス可能なサイズと位置を保持していることを確認する。ユーザー補助に関する情報は、ユーザー補助検証ツールをご覧ください。 |
| T-Access:Contrast | アクセス:コントラスト | すべての視覚要素のコントラストを確認します。 |
| T-Access:Description | Access:Description | TextView 以外のすべての UI 要素にコンテンツの説明があることを確認します。 |
機能
| ID | 機能 | 説明 |
|---|---|---|
| 音声 | ||
| T-Audio:Init | 音声:Init | 音声の再生を開始します。1 秒以内にアプリが音声を再生するか、音声データの再生準備中であることを示すインジケーターを表示することを確認します。 |
| T-Audio:Focus | 音声:フォーカス | 音声の再生を開始します。アプリは音声フォーカスをリクエストする必要があります。音声の再生が停止したら、アプリは音声フォーカスを解放する必要があります(Android 12(API レベル 31)以上をターゲットとするアプリでは自動的に行われます)。 |
| T-Audio:Interrupt | 音声:割り込み | 音声の再生を開始します。別のアプリで音声再生を開始します。アプリは音声フォーカスの変更に対応し、音声再生を停止するか、再生音量を下げる必要があります。 |
| T-Audio:Background | 音声:背景 | 音声の再生を開始します。別の音声以外のアプリをフォアグラウンド アプリとして操作します。アプリはバックグラウンドで音声を再生し続ける必要があります。 |
| T-Audio:Notification | 音声:通知 | 音声の再生を開始します。別の音声以外のアプリをフォアグラウンド アプリとして操作します。アプリがバックグラウンドで音声を再生し続け、MediaStyle でスタイル設定された通知を作成したことを確認します。メディア コントロールとの連携をご覧ください。 |
| T-Audio:Resume | 音声:再開 | 音声の再生を開始します。フォアグラウンド アプリとして音声以外の別のアプリを操作します。アプリを操作して、最優先のアプリにします。音声が再開されるか、音量が復元されるはずです。それ以外の場合、アプリは再生が一時停止していることをユーザーに示します。 |
| T-Video:PiP | 動画:PiP | アプリのピクチャー イン ピクチャー モードでの動画再生を有効にします。 |
| T-Video:Encoding | 動画:エンコード | アプリが HEVC 動画圧縮規格を使用して動画をエンコードしていることを確認します。 |
| 共有 | ||
| 共有:Sheet | インテントを作成し、引数としてインテントを指定して startActivity() を呼び出してアクティビティを開始します。Android Sharesheet を使用するをご覧ください。アプリで Android Sharesheet が表示されます。 |
|
| バックグラウンド サービス | ||
| CR-6 | 背景:サービス | アプリの主な機能をすべて使用します。実行時間の長いバックグラウンド サービスが起動していないことを確認します。 別のアプリに切り替えて、アプリをバックグラウンドに移行します。[設定] に移動し、アプリがバックグラウンド中に実行しているサービスがあるかどうかをチェックします。Android 4.0 以降では、[アプリ] 画面に移動して、[実行中] タブで該当のアプリを見つけます。 |
パフォーマンスと安定性
| ID | 機能 | 説明 |
|---|---|---|
| パフォーマンス | ||
| T- Performance:Startup | パフォーマンス:スタートアップ | アプリを起動します。アプリが迅速に読み込まれること、または読み込み時間が 2 秒を超える場合は進行状況インジケーターや同様の合図が表示されることを確認します。 |
| T-Performance:FPS | パフォーマンス:FPS | アプリの主要な機能をすべて使用します。アプリが 1 秒あたり 60 フレーム以上でレンダリングされることを確認します。[HWUI レンダリングのプロファイル作成] オプションを使用すると、アプリのテストに役立ちます。 |
| T-Performance:Strict | パフォーマンス:厳格 |
アプリで ガベージ コレクションや、ガベージ コレクションがユーザー エクスペリエンスに及ぼす影響に細心の注意を払います。 |
| 安定性 | ||
| T-Stability:ANR | 安定性:ANR | アプリの主な機能をすべて使用します。アプリがクラッシュしたり、UI スレッドをブロックして ANR(Android 応答なし)エラーを引き起こしたりしないことを確認します。Google Play のリリース前レポートを確認して、安定性に関する潜在的な問題を特定します。 |
| SDK | ||
| T-SDK:Platform | SDK:Platform | アプリを最新公開版の Android プラットフォームで実行する。すべての主要機能を使用します。アプリがクラッシュせず、コア機能が損なわれることなく動作することを確認します。 |
| T-SDK:Latest | SDK:Target, SDK:Compile |
Android マニフェスト ファイルとビルド構成を見直し、アプリが最新の利用可能な SDK(targetSdk と compileSdk)に基づいてビルドされていることを確認します。 |
| T-SDK:3P | SDK:3P | アプリの build.gradle ファイルに古い依存関係がないか確認します。 |
| T-SDK:Non | SDK:Non | Android Studio の lint ツールを使用して、非 SDK インターフェースの使用を検出します。代替テスト方法については、非 SDK インターフェースの制限をご覧ください。 |
| T-SDK:Debug | SDK:Debug | アプリの build.gradle ファイルで、含まれているデバッグ ライブラリを確認します。 |
| 電池 | ||
| T-Battery:Manage | バッテリー:管理 |
Doze モードとアプリ スタンバイ モードですべての主要なアプリ機能を使用します。Doze メンテナンスの時間枠内と、アプリがアプリ スタンバイ モードを終了したときに、アラーム、タイマー、通知、同期が適切に機能することを確認します。 ADB コマンドを使用して Doze とアプリ スタンバイの動作をテストします(要件とガイドラインについては、Doze モードとアプリ スタンバイ モードでテストするを参照)。 想定外のバッテリー消耗を診断するには、Android Studio Power Profiler または Battery Historian ツールと、計画済みのバックグラウンド作業を組み合わせて使用します。 |
プライバシーとセキュリティ
| ID | 機能 | 説明 |
|---|---|---|
| 権限 | ||
| T-Permissions:Min | 権限:Min | アプリが必要とするすべての権限を、マニフェスト ファイル、実行時、およびデバイス上のアプリ設定([設定] > [アプリ情報])で確認します。 |
| T-Permissions:Sensitive | 権限:センシティブ | 権限をリクエストするアプリの機能を使用します。アプリがセンシティブ データやサービスへのアクセス権限をリクエストするのは、アプリの主要なユースケースのみであることを確認します。機密データとサービスへの権限付与の影響がユーザーに明確に伝えられていることを確認します。 |
| T-Permissions:Runtime | 権限:ランタイム | 権限を必要とするアプリのすべての機能を使用します。権限が遅延でリクエストされていること、つまり、アプリの起動時ではなく、機能がアクセスされたときにのみリクエストされていることを確認します。 |
| T-Permissions:Explain | 権限:説明 | 権限を必要とするアプリのすべての機能を使用します。アプリがユーザーに権限が必要な理由を説明していることを確認します。 |
| T-Permissions:Degrade | 権限:Degrade | 権限を必要とするアプリのすべての機能を使用します。権限を拒否または取り消します。アプリが代替ユースケースを提供し、引き続き機能することを確認します。 |
| データとファイル | ||
| T-Data:Sensitive | Data:Sensitive | 内部ストレージに保存されているデータをすべて確認します。外部に保存されたデータが機密データでないことを確認します。 |
| T-Data:Handling | Data:Sensitive | 外部ストレージから読み込まれたデータがどのように処理されているかを確認します。 |
| T-Data:Log | データ:Log | デバイスログを監視しながら、アプリの主要な機能をすべて使用します。ユーザーの個人情報が記録されていないことを確認します。 |
| T-Data:IDs | データ:ID | アプリの主な機能をすべて使用します。アプリが識別目的で IMEI などのハードウェア ID を使用していないことを確認します。 |
| ID | ||
| T-Identity:Hints | Identity:Hints | ユーザー入力が必要なアプリの機能をすべて使用します。アカウントの認証情報やその他の機密情報などのデータを入力するための入力フィールドを自動入力するためのヒントを提供していることを確認します。 |
| T-Identity:CredMan | Identity:CredMan | アプリにログインします。パスキー、フェデレーション ID、パスワードのサポートを統合したログイン エクスペリエンスを実現するために、アプリが Android 用認証情報マネージャーを統合していることを確認します。 |
| T-Identity:Bio | Identity:Bio | 認証が必要なアプリのすべての機能を使用する。生体認証で、支払い取引や機密情報(重要なユーザー ドキュメントなど)を保護していることを確認します。 |
| アプリ コンポーネント | ||
| T-Components:Export | コンポーネント:エクスポート | Android マニフェスト ファイルで定義されているすべてのアプリ コンポーネントが適切なエクスポート状態になっていることを確認します。エクスポートされたプロパティは、すべてのコンポーネントに対して明示的に設定する必要があります。 |
| T-Components:Permissions | コンポーネント:Permissions | アプリが必要とするすべての権限を、マニフェスト ファイル、実行時、およびデバイス上のアプリ設定([設定] > [アプリ情報])で確認します。 |
| T-Components:Protection | コンポーネント:Protection | Android マニフェスト ファイルで定義されているすべてのコンテンツ プロバイダを確認します。各プロバイダに適切な protectionLevel が指定されていることを確認します。 |
| ネットワーキング | ||
| T-Network:Traffic | ネットワーク:トラフィック | クリアテキスト トラフィックを無効にするネットワーク セキュリティ構成を宣言してから、アプリをテストします。 |
| T-Network:Config | ネットワーク:Config | アプリのネットワーク セキュリティ構成を見直します。構成に対する lint チェックが失敗しないことを確認します。 |
| T-Network:Play | ネットワーク:Play | Google Play 開発者サービスでアプリの起動時にセキュリティ プロバイダが初期化されることを確認します。 |
| WebView | ||
| T-WebViews:Config | WebViews:Config | アプリのネットワーク セキュリティ構成を見直します。構成に対する lint チェックが失敗しないことを確認します。 |
| T-WebViews:JavaScript | WebViews:JavaScript | 各 WebView で、JavaScript が必要なページに移動します。 |
| T-WebViews:Nav | WebViews:Config、 WebViews:JavaScript |
各 WebView で、アプリによって直接読み込まれていないサイトとコンテンツに移動してみます。 |
| 実行 | ||
| T-Execution:Bundles | 実行:バンドル | アプリが Android App Bundle を使用しており、アプリの APK の外部からコードを動的に読み込まないことを確認します。 |
| 暗号化 | ||
| T-Crypto:Algorithms | Crypto:Algorithms | アプリが、プラットフォームで提供される強力な暗号アルゴリズムと乱数生成ツールを使用していることを確認します。また、アプリがカスタム アルゴリズムを実装していないことも確認します。 |
Google Play
| ID | 機能 | 説明 |
|---|---|---|
| ポリシー | ||
| T-Play:Policies | Play:Policies、 Play:Maturity、 Play:Bugs |
Google Play Console にログインして、デベロッパー プロフィール、アプリの説明、スクリーンショット、フィーチャー グラフィック、コンテンツのレーティング、ユーザーのフィードバックを確認します。 |
| アプリの詳細ページ | ||
| T-Play:Graphics | Play:Graphics | フィーチャー グラフィックとスクリーンショットをダウンロードし、対象とするフォーム ファクタやデバイスのディスプレイ サイズに合わせて縮小します。 |
| T-Play:Assets | Play:Graphics, Play:NonAndroid, Play:Misleading |
すべての画像および映像、メディア、テキスト、コード ライブラリ、アプリや拡張ファイルのダウンロードに含まれるその他のパッケージ コンテンツを確認します。 |
アーカイブ
アプリの中核品質に関するガイドラインの以前のバージョン: