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

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 メソッドを使用して App Bundle をアップロードします。

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

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

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

ヘッダー X-Goog-Upload-Protocol: multipart を含む 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",
      ...
    },
    ...
  ]
}

次のステップ

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