분석을 위해 앱 업로드

Checks API는 출시 전에 Android 및 iOS 앱을 분석하여 앱을 공개적으로 출시하기 전에 앱의 데이터 수집 및 공유 동작과 잠재적인 규정 준수 문제를 파악할 수 있도록 지원합니다.

이 빠른 시작에서는 gcloud CLI와 cURL 명령어를 사용하여 앱을 업로드하는 방법을 보여줍니다.

기본 요건

시작하기 전에 Google의 승인 가이드를 사용하여 승인된 요청을 보낼 수 있는지 확인하세요.

App Bundle 준비

Android

  1. 앱의 APK 또는 AAB 파일을 생성합니다.

    안내는 Android 문서의 앱 빌드 및 실행을 참고하세요.

iOS

  1. Xcode에서 대상 앱의 프로비저닝 프로필을 선택합니다.

  2. 표시되는 드롭다운 메뉴에서 제품 > 보관처리를 클릭합니다. 가장 최근의 보관 파일을 선택한 다음 앱 배포를 클릭합니다.

  3. 표시되는 창에서 개발 > 다음을 클릭합니다.

  4. (선택사항) 더 빨리 빌드하려면 비트코드에서 다시 빌드 옵션을 선택 해제하고 다음을 클릭합니다.

    Checks를 사용하면 테스트를 실행하기 위해 앱을 축소하거나 다시 빌드할 필요가 없으므로 이 옵션을 사용 중지해도 아무 문제가 없습니다.

  5. 내보내기를 클릭한 다음 앱의 IPA 파일을 다운로드할 디렉터리를 지정합니다.

앱 번들 업로드

media.upload 메서드를 사용하여 App Bundle을 업로드합니다.

앱을 업로드하는 방법에는 두 가지가 있습니다.

메타데이터가 있는 바이너리

분석을 코드 저장소의 특정 커밋에 연결하는 codeReferenceId과 같은 메타데이터를 포함할 수 있습니다.

첫 번째 본문 부분에 메타데이터가 JSON으로 포함되고 두 번째 본문 부분에 바이너리 업로드가 포함된 X-Goog-Upload-Protocol: multipart 헤더를 사용하여 멀티파트 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: 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만 반환됩니다.

더 많은 데이터를 확인하려면 요청에 필드 마스크를 포함하세요. 예를 들어 checks 필드를 포함하려면 URL 쿼리 매개변수 fields=name,resultsUri,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",
      ...
    },
    ...
  ]
}

다음 단계

분석 결과를 가져오는 방법은 쿼리 보고서를 참고하세요.