API Checks позволяет анализировать приложения для Android и iOS до их выпуска, предоставляя вам информацию о методах сбора и обмена данными, а также о потенциальных проблемах с соответствием нормативным требованиям до публичного запуска приложения .
В этом кратком руководстве показано, как загрузить приложение с помощью интерфейса командной строки gcloud и команды cURL.
Предварительные требования
Прежде чем начать, убедитесь, что вы можете отправлять авторизованные запросы, используя наше руководство по авторизации .
Подготовьте пакет вашего приложения.
Android
Сгенерируйте APK или AAB файл для вашего приложения.
Инструкции по сборке и запуску приложения см. в документации Android.
iOS
В Xcode выберите профиль подготовки для целевого приложения.
В появившемся выпадающем меню выберите Продукт > Архив . Выберите самый последний архив, затем нажмите Распространить приложение .
В появившемся окне нажмите «Разработка» > «Далее» .
(Необязательно) Для ускорения сборки снимите флажок с опции «Пересобрать из Bitcode» , затем нажмите «Далее» .
Для запуска тестов не требуется перестраивать или упрощать приложение, поэтому вы можете смело отключить эту опцию.
Нажмите «Экспорт» , затем укажите каталог, куда вы хотите загрузить IPA-файл вашего приложения.
Загрузите свой пакет приложения.
Загрузите пакет вашего приложения, используя метод media.upload .
Существует два способа загрузки вашего приложения:
Двоичный файл с метаданными
Вы можете включить метаданные, такие как codeReferenceId , которые связывают анализ с конкретным коммитом в вашем репозитории кода.
Отправьте многокомпонентный POST-запрос с заголовком X-Goog-Upload-Protocol: multipart где первая часть тела содержит метаданные в формате 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"Только двоичный код
Отправьте обычный POST-запрос с заголовком X-Goog-Upload-Protocol: raw чтобы загрузить ваше приложение без каких-либо метаданных:
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"По умолчанию возвращается только имя ресурса отчета и URL-адрес для просмотра отчета в консоли проверок.
Чтобы увидеть больше данных, добавьте маску поля в запрос. Например, добавьте параметр запроса URL 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",
...
},
...
]
}
Что дальше?
См. раздел «Запросы к отчетам» , чтобы узнать, как получить результаты анализа.