分析用にアプリをアップロードする

Checks API を使用すると、リリース前に Android アプリと iOS アプリを分析して、アプリのデータ収集と共有の動作、およびコンプライアンス上の潜在的な問題をアプリを一般公開する前に把握できます。

このクイックスタートでは、gcloud CLI と cURL コマンドを使用してアプリをアップロードする方法について説明します。

前提条件

始める前に、承認ガイドを使用して承認済みリクエストを送信できることを確認してください。

App Bundle を準備する

Android

  1. アプリの APK または AAB ファイルを生成します。

    手順については、Android ドキュメントのアプリをビルドして実行するをご覧ください。

iOS

  1. Xcode で、ターゲット アプリのプロビジョニング プロファイルを選択します。

  2. 表示されたプルダウン メニューで、[Product] > [Archive] の順にクリックします。最新のアーカイブを選択して [Distribute App] をクリックします。

  3. 表示されたウィンドウで、[Development] > [Next] の順にクリックします。

  4. (省略可)ビルドを高速化するには、[Rebuild from Bitcode] オプションをオフにして [Next] をクリックします。

    Checks では、テストを実行するためにアプリのスリム化や再ビルドを行う必要がないため、このオプションを無効にしても問題はありません。

  5. [Export] をクリックして、アプリの IPA ファイルをダウンロードするディレクトリを指定します。

App Bundle をアップロードする

media.upload メソッドを使用して、アプリバンドルをアップロードします。

アプリをアップロードする方法は 2 つあります。

メタデータを含むバイナリ

メタデータには、コード リポジトリ内の特定の commit に分析をリンクする codeReferenceId などを含めることができます。

ヘッダー X-Goog-Upload-Protocol: multipart を含むマルチパート POST リクエストを送信します。最初の本文部分にはメタデータが JSON として含まれ、2 番目の本文部分にはバイナリ アップロードが含まれます。

curl -X POST \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/checks)" \
    -H "X-Goog-Upload-Protocol: multipart" \
    -F "metadata={\"codeReferenceId\":\"COMMIT_SHA\"}" \
    -F "binary=@BINARY_PATH" \
    "https://checks.googleapis.com/upload/v1alpha/accounts/ACCOUNT_ID/apps/APP_ID/reports:analyzeUpload"

バイナリのみ

ヘッダー X-Goog-Upload-Protocol: raw を使用して通常の POST リクエストを送信し、メタデータなしでアプリをアップロードします。

curl -X POST \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/checks)" \
    -H "X-Goog-Upload-Protocol: raw" \
    -H "Content-Type: application/octet-stream" \
    --data-binary @BINARY_PATH \
    "https://checks.googleapis.com/upload/v1alpha/accounts/ACCOUNT_ID/apps/APP_ID/reports:analyzeUpload"

アプリのアップロードが完了すると、保留中の google.longrunning.Operation が返されます。

{
  "name": "accounts/ACCOUNT_ID/apps/APP_ID/operations/OPERATION_ID"
}

分析の状態を確認する

分析の状態を確認するには、accounts.apps.operations.get メソッドを呼び出します。

curl -X GET \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/checks)" \
    "https://checks.googleapis.com/v1alpha/accounts/ACCOUNT_ID/apps/APP_ID/operations/OPERATION_ID"

状態に応じて、次のレスポンスが返されます。

保留

{
  "name": "accounts/ACCOUNT_ID/apps/APP_ID/operations/OPERATION_ID"
}

完了

{
  "name": "accounts/ACCOUNT_ID/apps/APP_ID/operations/OPERATION_ID",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.checks.report.v1alpha.Report",
    "name": "accounts/ACCOUNT_ID/apps/APP_ID/reports/REPORT_ID",
    "resultsUri": "https://checks.google.com/console/dashboard/REPORT_ID?a=APP_ID"
  }
}

エラー

{
  "name": "accounts/ACCOUNT_ID/apps/APP_ID/operations/OPERATION_ID",
  "done": true,
  "error": {
    "code": 500,
    "message": "Deadline exceeded.",
    "status": "INTERNAL",
    "details": [
      ...
    ]
  }
}

分析結果を表示する

accounts.apps.reports.get メソッドを呼び出して分析を表示します。

curl -X GET \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/checks)" \
    "https://checks.googleapis.com/v1alpha/accounts/ACCOUNT_ID/apps/APP_ID/reports/REPORT_ID"

デフォルトでは、レポート リソース名と、Checks Console でレポートを表示するための URL のみが返されます。

より多くのデータを表示するには、リクエストにフィールド マスクを含めます。たとえば、URL クエリ パラメータ fields=name,resultsUri,checks を追加して、checks フィールドを含めます。

{
  "name": "accounts/ACCOUNT_ID/apps/APP_ID/reports/REPORT_ID",
  "resultsUri": "https://checks.area120.google.com/console/dashboard/REPORT_ID?a=APP_ID",
  "checks": [
    {
      "type": "DATA_MONITORING_NEW_ENDPOINT",
      "severity": "POTENTIAL",
      "state": "FAILED",
      ...
    },
    ...
  ]
}

次のステップ

分析結果を取得する方法については、レポートをクエリするをご覧ください。