העלאת האפליקציה לצורך ניתוח

ה-API של Checks יכול לנתח אפליקציות ל-Android ול-iOS לפני ההפצה שלהן, כדי שתוכלו לקבל תובנות לגבי התנהגויות של איסוף ושיתוף נתונים באפליקציה ובעיות פוטנציאליות בתאימות לפני השקת האפליקציה לציבור.

במדריך למתחילים הזה נסביר איך להעלות אפליקציה באמצעות gcloud CLI והפקודה cURL.

דרישות מוקדמות

לפני שמתחילים, חשוב לוודא שאפשר לשלוח בקשות מורשות באמצעות המדריך שלנו בנושא הרשאה.

הכנת קובץ App Bundle

Android

  1. יוצרים קובץ APK או AAB לאפליקציה.

    הוראות מפורטות מופיעות במאמר Build and run your app (בנייה והפעלה של האפליקציה) במסמכי התיעוד של Android.

iOS

  1. ב-Xcode, בוחרים פרופיל הקצאת הרשאות לאפליקציית היעד.

  2. בתפריט הנפתח שמופיע, לוחצים על מוצר > העברה לארכיון. בוחרים את הארכיון האחרון ולוחצים על הפצת האפליקציה.

  3. בחלון שמופיע, לוחצים על פיתוח > הבא.

  4. (אופציונלי) כדי ליצור את האפליקציה מהר יותר, מבטלים את הסימון של האפשרות Rebuild from Bitcode (בנייה מחדש מ-Bitcode) ואז לוחצים על Next (הבא).

    הבדיקות לא דורשות דילול או בנייה מחדש של האפליקציה כדי להריץ בדיקה, ולכן אפשר להשבית את האפשרות הזו בבטחה.

  5. לוחצים על ייצוא ומציינים את התיקייה שבה רוצים להוריד את קובץ ה-IPA של האפליקציה.

העלאת קובץ App Bundle

מעלים את קובץ ה-App Bundle באמצעות ה-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",
      ...
    },
    ...
  ]
}

מה השלב הבא?

במאמר דוחות שאילתות מוסבר איך לאחזר את תוצאות הניתוח.