上傳應用程式進行分析

Checks API 可在發布前分析 Android 和 iOS 應用程式,讓您在公開發布應用程式前,瞭解應用程式的資料收集和分享行為,以及潛在的法規遵循問題。

本快速入門導覽課程說明如何使用 gcloud CLI 和 cURL 指令上傳應用程式。

必要條件

開始操作前,請務必先參閱授權指南,確認您能傳送授權要求。

準備應用程式套件

Android

  1. 為應用程式產生 APK 或 AAB 檔案。

    如需操作說明,請參閱 Android 說明文件中的「建構並執行應用程式」。

iOS

  1. 在 Xcode 中,選取目標應用程式的佈建設定檔。

  2. 在隨即顯示的下拉式選單中,依序點選「產品」>「封存」。選取最新的封存檔,然後按一下「發布應用程式」

  3. 在隨即顯示的視窗中,依序點選「開發」>「下一步」

  4. (選用) 如要加快建構速度,請取消選取「從 Bitcode 重建」選項,然後按一下「下一步」

    檢查功能不需要縮減或重建應用程式即可執行測試,因此您可以放心停用這個選項。

  5. 按一下「匯出」,然後指定要下載應用程式 IPA 檔案的目錄。

上傳應用程式套件

使用 media.upload 方法上傳應用程式套件。

上傳應用程式的方式有兩種:

含有中繼資料的二進位檔

您可以加入中繼資料,例如 codeReferenceId,將分析結果連結至程式碼存放區中的特定提交。

傳送含有 X-Goog-Upload-Protocol: multipart 標頭的多部分 POST 要求,其中第一個主體部分包含 JSON 格式的中繼資料,第二個主體部分則包含二進位上傳內容:

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"

根據預設,這只會傳回報告資源名稱和在檢查控制台中查看報告的網址。

如要查看更多資料,請在要求中加入欄位遮罩。舉例來說,加入網址查詢參數 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",
      ...
    },
    ...
  ]
}

後續步驟

請參閱「查詢報表」,瞭解如何擷取分析結果。