Importer votre application pour analyse

L'API Checks peut analyser les applications Android et iOS avant leur publication. Vous pouvez ainsi obtenir des informations sur les comportements de collecte et de partage de données de votre application, ainsi que sur les éventuels problèmes de conformité avant de la lancer publiquement.

Ce guide de démarrage rapide vous explique comment importer une application à l'aide de gcloud CLI et de la commande cURL.

Prérequis

Avant de commencer, assurez-vous de pouvoir envoyer des requêtes autorisées à l'aide de notre guide sur l'autorisation.

Préparer votre app bundle

Android

  1. Générez un fichier APK ou AAB pour votre application.

    Pour obtenir des instructions, consultez Créer et exécuter votre application dans la documentation Android.

iOS

  1. Dans Xcode, sélectionnez un profil de provisionnement pour l'application cible.

  2. Dans le menu déroulant qui s'affiche, cliquez sur Produit > Archiver. Sélectionnez l'archive la plus récente, puis cliquez sur Distribute App (Distribuer l'application).

  3. Dans la fenêtre qui s'affiche, cliquez sur Développement > Suivant.

  4. (Facultatif) Pour accélérer la compilation, désélectionnez l'option Rebuild from Bitcode (Recompiler à partir du bitcode), puis cliquez sur Next (Suivant).

    Checks n'exige pas que vous réduisiez ou reconstruisiez votre application pour exécuter un test. Vous pouvez donc désactiver cette option sans risque.

  5. Cliquez sur Exporter, puis spécifiez le répertoire dans lequel vous souhaitez télécharger le fichier IPA de votre application.

Importer votre app bundle

Importez votre app bundle à l'aide de la méthode media.upload.

Il existe deux façons d'importer votre application :

Binaire avec métadonnées

Vous pouvez inclure des métadonnées telles que codeReferenceId, qui associe l'analyse à un commit spécifique dans votre dépôt de code.

Envoyez une requête POST en plusieurs parties avec l'en-tête X-Goog-Upload-Protocol: multipart, où la première partie du corps contient les métadonnées au format JSON et la deuxième partie du corps contient l'importation binaire :

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"

Binaire uniquement

Envoyez une requête POST standard avec l'en-tête X-Goog-Upload-Protocol: raw pour importer votre application sans métadonnées :

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"

Une fois l'importation de votre application terminée, un google.longrunning.Operation "En attente" est renvoyé :

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

Vérifier l'état de votre analyse

Vous pouvez vérifier l'état de votre analyse en appelant la méthode 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"

La réponse suivante est renvoyée en fonction de l'état :

En attente

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

Terminé

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

Erreur

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

Afficher votre analyse

Affichez votre analyse en appelant la méthode 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"

Par défaut, cette méthode ne renvoie que le nom de la ressource du rapport et une URL permettant d'afficher le rapport dans la console Checks.

Pour afficher plus de données, incluez un masque de champ dans la requête. Par exemple, ajoutez le paramètre de requête d'URL fields=name,resultsUri,checks pour inclure le champ 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",
      ...
    },
    ...
  ]
}

Étape suivante

Consultez Rapports sur les requêtes pour savoir comment récupérer les résultats de votre analyse.