Przesyłanie aplikacji do analizy

Interfejs Checks API może analizować aplikacje na Androida i iOS przed ich opublikowaniem, dzięki czemu przed udostępnieniem aplikacji publicznie możesz sprawdzić, jak zbiera i udostępnia ona dane oraz czy nie występują w niej potencjalne problemy z zgodnością.

Z tego przewodnika dowiesz się, jak przesłać aplikację za pomocą gcloud CLI i polecenia cURL.

Wymagania wstępne

Zanim zaczniesz, upewnij się, że możesz wysyłać autoryzowane żądania zgodnie z naszym przewodnikiem Autoryzacja.

Przygotowywanie pakietu aplikacji

Android

  1. Wygeneruj plik APK lub AAB aplikacji.

    Instrukcje znajdziesz w artykule Tworzenie i uruchamianie aplikacji w dokumentacji Androida.

iOS

  1. W Xcode wybierz profil administracyjny dla aplikacji docelowej.

  2. W wyświetlonym menu kliknij Produkt > Archiwizuj. Wybierz najnowsze archiwum, a potem kliknij Distribute App (Rozpowszechnij aplikację).

  3. W wyświetlonym oknie kliknij Development (Rozwój) > Next (Dalej).

  4. (Opcjonalnie) Aby przyspieszyć kompilację, odznacz opcję Rebuild from Bitcode (Ponownie skompiluj z kodu pośredniego), a następnie kliknij Next (Dalej).

    Sprawdzanie nie wymaga zmniejszania rozmiaru ani ponownego kompilowania aplikacji, aby przeprowadzić test, więc możesz bezpiecznie wyłączyć tę opcję.

  5. Kliknij Eksportuj, a następnie określ katalog, do którego chcesz pobrać plik IPA aplikacji.

Przesyłanie pakietu aplikacji

Prześlij pakiet aplikacji, korzystając z metody media.upload.

Aplikację możesz przesłać na 2 sposoby:

Plik binarny z metadanymi

Możesz uwzględnić metadane, takie jak codeReferenceId, które łączą analizę z określonym zatwierdzeniem w repozytorium kodu.

Wyślij żądanie POST w formacie multipart z nagłówkiem X-Goog-Upload-Protocol: multipart, w którym pierwsza część treści zawiera metadane w formacie JSON, a druga część treści zawiera przesyłany plik binarny:

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"

Tylko binarne

Wyślij zwykłe żądanie POST z nagłówkiem X-Goog-Upload-Protocol: raw, aby przesłać aplikację bez metadanych:

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"

Po zakończeniu przesyłania aplikacji zwracany jest stan oczekiwania google.longrunning.Operation:

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

Sprawdzanie stanu analizy

Stan analizy możesz sprawdzić, wywołując metodę 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"

W zależności od stanu zwracana jest ta odpowiedź:

Oczekuje

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

Zakończone

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

Błąd

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

Wyświetlanie analizy

Aby wyświetlić analizę, wywołaj metodę 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"

Domyślnie zwraca tylko nazwę zasobu raportu i adres URL, pod którym można wyświetlić raport w Konsoli weryfikacji.

Aby wyświetlić więcej danych, w żądaniu uwzględnij maskę pola. Na przykład dodaj parametr zapytania w adresie URL fields=name,resultsUri,checks, aby uwzględnić pole 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",
      ...
    },
    ...
  ]
}

Co dalej?

Więcej informacji o pobieraniu wyników analizy znajdziesz w sekcji Raporty z zapytaniami.