ה-API של הבדיקות יכול לנתח אפליקציות ל-Android ול-iOS לפני ההפצה, כדי שתוכלו לקבל תובנות לגבי התנהגויות של איסוף ושיתוף נתונים באפליקציה ובעיות פוטנציאליות בתאימות לפני השקת האפליקציה לציבור.
במדריך למתחילים הזה נסביר איך להעלות אפליקציה באמצעות ה-CLI של gcloud והפקודה cURL.
דרישות מוקדמות
לפני שמתחילים, חשוב לוודא שאפשר לשלוח בקשות מורשות באמצעות המדריך שלנו בנושא הרשאות.
הכנת קובץ AAB
Android
יוצרים קובץ APK או AAB לאפליקציה.
הוראות מפורטות מופיעות במאמר Build and run your app (בנייה והפעלה של האפליקציה) במסמכי התיעוד של Android.
iOS
ב-Xcode, בוחרים פרופיל הקצאת הרשאות לאפליקציית היעד.
בתפריט הנפתח שמופיע, לוחצים על מוצר > העברה לארכיון. בוחרים את הארכיון האחרון ולוחצים על הפצת האפליקציה.
בחלון שמופיע, לוחצים על פיתוח > הבא.
(אופציונלי) כדי ליצור את האפליקציה מהר יותר, מבטלים את הסימון של האפשרות Rebuild from Bitcode (בנייה מחדש מ-Bitcode) ואז לוחצים על Next (הבא).
כדי להריץ בדיקה, לא צריך להקטין את האפליקציה או לבנות אותה מחדש, ולכן אפשר להשבית את האפשרות הזו בבטחה.
לוחצים על Export (ייצוא) ומציינים את התיקייה שבה רוצים להוריד את קובץ ה-IPA של האפליקציה.
העלאת קובץ AAB
מעלים את קובץ ה-AAB באמצעות ה-method 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 לצפייה בדוח ב-Checks Console.
כדי לראות נתונים נוספים, צריך לכלול מסכת שדות בבקשה. לדוגמה, מוסיפים את הפרמטר של השאילתה לגבי כתובת ה-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",
...
},
...
]
}
מה השלב הבא?
במאמר דוחות שאילתות מוסבר איך לאחזר את תוצאות הניתוח.