Caricare l'app per l'analisi

L'API Checks può analizzare le app per Android e iOS prima del rilascio, in modo da avere visibilità sui comportamenti di raccolta e condivisione dei dati della tua app e sui potenziali problemi di conformità prima di lanciare l'app pubblicamente.

Questa guida rapida mostra come caricare un'app utilizzando gcloud CLI e il comando cURL.

Prerequisiti

Prima di iniziare, assicurati di poter inviare richieste autorizzate utilizzando la nostra guida Autorizzazione.

Preparare l'app bundle

Android

  1. Genera un file APK o AAB per la tua app.

    Per istruzioni, consulta la sezione Crea ed esegui la tua app nella documentazione di Android.

iOS

  1. In Xcode, seleziona un profilo di provisioning per l'app di destinazione.

  2. Nel menu a discesa visualizzato, fai clic su Prodotto > Archivia. Seleziona l'archivio più recente, poi fai clic su Distribuisci app.

  3. Nella finestra visualizzata, fai clic su Sviluppo > Avanti.

  4. (Facoltativo) Per una compilazione più rapida, deseleziona l'opzione Ricompila da Bitcode, quindi fai clic su Avanti.

    Controlli non richiede la riduzione o la ricompilazione dell'app per eseguire un test, quindi puoi disattivare questa opzione in tutta sicurezza.

  5. Fai clic su Esporta, quindi specifica una directory in cui scaricare il file IPA dell'app.

Caricare l'app bundle

Carica l'app bundle utilizzando il metodo media.upload.

Esistono due modi per caricare l'app:

Binario con metadati

Puoi includere metadati come codeReferenceId, che collega l'analisi a un commit specifico nel repository di codice.

Invia una richiesta POST multipart con l'intestazione X-Goog-Upload-Protocol: multipart in cui la prima parte del corpo contiene i metadati in formato JSON e la seconda parte del corpo contiene il caricamento binario:

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"

Solo binario

Invia una normale richiesta POST con l'intestazione X-Goog-Upload-Protocol: raw per caricare la tua app senza metadati:

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"

Al termine del caricamento dell'app, viene restituito un intent google.longrunning.Operation in attesa:

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

Controllare lo stato dell'analisi

Puoi controllare lo stato dell'analisi chiamando il metodo 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"

A seconda dello stato, viene restituita la seguente risposta:

In attesa

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

Completa

{
  "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"
  }
}

Errore

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

Visualizzare l'analisi

Visualizza l'analisi chiamando il metodo 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"

Per impostazione predefinita, questo comando restituisce solo il nome della risorsa del report e un URL per visualizzare il report nella console Controlli.

Per visualizzare più dati, includi una maschera di campo nella richiesta. Ad esempio, aggiungi il parametro di query URL fields=name,resultsUri,checks per includere il campo 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",
      ...
    },
    ...
  ]
}

Passaggi successivi

Consulta Report sulle query per scoprire come recuperare i risultati dell'analisi.