Android Concepts (למפתחי אתרים)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

אם אתם מפתחי אתרים חדשים ב-Android וב-Google Play, יש כמה פרטים שכדאי לכם להיות מודעים להם. כבר קיימים משאבים ותיעוד רבים בנושא (תודה ל-Android) אך כאן נדגיש כמה מושגים חשובים ואת האופן שבו הם משתלבים ב-בועת בועות.

העלאה לעומת מפתח חתימה

אם אתם מתכננים להשתמש ב-בועה כדי ליצור קובץ Android App Bundle (AAB) (הערה: החל מאוגוסט) 2021, כל האפליקציות החדשות ב-Google Play יידרשו להשתמש בפורמט קובץ Android App Bundle) או APK כדי להעלות ולפרסם אותם ב-Google Play, יהיה עליך לחתום את האפליקציה שלך באמצעות מפתח חתימה. Google ב-Play אפשר לפתור את הבעיה בשתי דרכים:

  • חתימת אפליקציה ב-Play (מומלץ מאוד): Google תנהל את חתימת האפליקציה ותגן עליה עבורך. השירות הזה משמש לחתימה על חבילות ה-APK שלך להפצה. התכונה 'חתימת אפליקציה ב-Play' משתמשת בשני מפתחות. האפליקציה מפתח החתימה" ש-Google תנהל עבורכם ואת 'מפתח ההעלאה' ששומרים וצריך להישאר פרטי רק לך. משתמשים במפתח ההעלאה כדי לחתום את האפליקציה לצורך העלאה ל-Play Console. הזה מאפשרת לכם לאפס את מפתח ההעלאה אם הוא אבד או נחשף, ליצור קשר עם צוות התמיכה של Play. כרגע, Google Play מאפשר להעלות את האפליקציה כ-AAB או APK:
    • Android App Bundle (AAB): כאשר כשאתה מעלה AAB ל-Play Console, אתה מעכב את הבנייה והיצירה של חבילות APK חנות Google Play. כשמשתמש מוריד ומתקין את האפליקציה שלך, מערכת Google Play תפיץ אותה אליהם כ-APK חתום. לכן, צריך לבצע גם את החתימה על חבילות ה-APK עד Google Play. לכן, כברירת מחדל, אם תעלו את האפליקציה כ-AAB ל-Play Console, יידרשו להשתמש בחתימת אפליקציה ב-Play.
    • APK: בחבילות APK, אפשר להביע הסכמה לחתימת אפליקציה ב-Play. הבעת הסכמה לשימוש באפליקציית Play מומלץ מאוד לחתום על חשבון כי היא מגבירה את האבטחה של מפתח החתימה. כפי שצוין בעבר, בקרוב יהיה צורך להעלות את כל האפליקציות החדשות ל-Google Play בפורמט AAB, כך מומלץ לעשות זאת במקום להעלות חבילות APK.
  • ניהול מפתח החתימה בעצמך: אם בחרת לנהל את המפתח שלך ולא להביע הסכמה לשימוש באפליקציית Play בחתימה, השימוש במפתח החתימה של האפליקציה שלך הוא באחריותך המלאה. בניגוד ל'חתימת אפליקציה ב-Play', שלא תהיה אפשרות לאפס אותו אם המפתח ילך לאיבוד. לכן, אם מאבדים את חתימת האפליקציה, גם לא את האפשרות לעדכן את האפליקציה.

במהלך ההגדרה של bubblewrap init, כשמגיעים לסעיף פרטי המפתח לחתימה (5 מתוך 5), תתבקשו להזין "מיקום של חנות מפתחות" ו"שם מפתח", או להשתמש בהגדרות ברירת המחדל. מיקום ברירת המחדל של מאגר המפתחות הוא הקובץ android.keystore בספריית הפרויקט שלך וברירת המחדל שם המפתח הוא android. אם wrapwrap לא מוצא מאגר מפתחות קיים עם שם המפתח הזה את המיקום, הוא ייצור עבורך חשבון וגם יבקש ממך סיסמאות. רישום הסיסמאות שהזנת כי תצטרך אותם בתהליך ה-build (bubblewrap build), שבו ייעשה שימוש ב- לחתימה על האפליקציה. אם מביעים הסכמה לשימוש ב'חתימת אפליקציה ב-Play', מפתח החתימה שמוצמד ל-בועת בועה שנוצר ומשמש לחתימה על האפליקציה, הופך ל'מפתח ההעלאה'. הבחירה להשתמש המפתח שנוצר על ידי בועת בועות בתור מפתח החתימה או ההעלאה, עליכם להגן על המפתח ולשמור על פרטיותו. לא מומלץ להקצות אותה לניהול גרסאות. במקום זאת, צריך להגביל את מספר האנשים עם לגשת אליו.

הקישורים לנכסים דיגיטליים נדרשים כדי להצהיר על הקשר בין האתר שלך לבין Android אפליקציה. כדי לוודא שאפליקציה ל-Android שנוצרה על ידי רשום פועלת כאפליקציה עם פונקציית בועות פעילות באינטרנט מהימנה (במקום כרטיסייה מותאמת אישית ב-Chrome), צריך להוסיף את המפתח המתאים את קובץ assetlinks.json שלך. לאחר מכן צריך להעלות אותו לאתר שלך בכתובת .well-known/assetlinks.json (ביחס לשורש). קובץ assetlinks.json צריך להיות בפורמט הזה:

[{
 "relation": ["delegate_permission/common.handle_all_urls"],
 "target": {
   "namespace": "android_app",
   "package_name": "com.your.package_name",
   "sha256_cert_fingerprints": [
     "XX:XX:XX:..."
   ]
 }
}]

קבלת טביעת האצבע לאישור SHA256

כדי ליצור את הקובץ assetlinks.json, נדרשת טביעת אצבע לאישור SHA 256 באמצעות חתימת האפליקציה. חשוב לציין שטביעות האצבע שמשויכות מפתחות החתימה וההעלאה יהיו שונים. חשוב לשמור חשוב לזכור את ההבחנה הזאת, במיוחד אם תבחינו שהאפליקציה שלכם מושקת ככרטיסייה מותאמת ב-Chrome (עם סרגל הדפדפן שמוצג). לאחר מכן, סביר להניח שבקובץ assetlinks.json אין את עם טביעת האצבע המתאימה למפתח המתאים.

כדאי לשמור בקובץ assetlinks.json את טביעת האצבע של אישור החתימה וגם את טביעת האצבע של אישור ההעלאה כדי לנפות באגים באפליקציה באופן מקומי בקלות רבה יותר. ראו הוספת מפתחות נוספים שבהמשך. על האופן שבו יש את שני המפתחות בקובץ assetlinks.json.

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

מ-Play Console

יכול להיות שיהיה לכם מפתח אחד או שניים, תלוי אם בחרתם בחתימת אפליקציה ב-Play. כדי לאחזר טביעת האצבע המתאימה לכל מפתח ב-SHA256:

  1. עוברים אל Play Console.
  2. בחירת האפליקציה שמעניינת אותך
  3. בתפריט הניווט שמימין, בקטע גרסה, עוברים אל הגדרה -> תקינות האפליקציה.
  4. מעתיקים את האלגוריתם SHA256 של המפתח המתאים:

אחזור של טביעת האצבע לאישור SHA256 המתאימה למפתח ההעלאה או החתימה

  • מפתח חתימה: מעתיקים את טביעת האצבע SHA256 של 'אישור מפתח חתימת אפליקציה'. הזה טביעת האצבע תתאים לאפליקציה שלך אם תוריד אותה מחנות Google Play מאחר Google Play מפיצה את האפליקציה שלך שנחתמה באמצעות מפתח החתימה.

  • מפתח העלאה: מעתיקים את טביעת האצבע מסוג SHA256 של 'Upload key certificate'. הזה טביעת אצבע תתאים לאפליקציה אם תתקין אותה באופן מקומי (דרך ADB ב-USB עבור לדוגמה). חבילת ה-APK הזו (במחשב המקומי שלך) פותחה על ידי בועת רשום, ולכן נחתם על ידי המפתח שהוא יצר גם עבורך (במהלך ההגדרה של init). חשוב לזכור שייתכן שזאת מפתח החתימה של האפליקציה שהותקנה באופן מקומי, אבל הפעולה הזו הופכת ל'מפתח העלאה' פעם אחת שמפרסמים את האפליקציה דרך Play.

דרך keytool

keytool הוא מפתח וכלי לניהול אישורים. אפשר להשתמש ב-Keytool כדי לחלץ את טביעת האצבע מסוג SHA 256 המשויכת ה-APK או בועת ה-AAB בועות שנוצרו. חשוב לשים לב שטביעת האצבע הזו מיועדת למפתח החתימה המקומי, ואם שאתם מעלים את האפליקציה ל-Play ותביעו הסכמה לשימוש ב'חתימת אפליקציה ב-Play', המפתח הזה הופך ל'מפתח ההעלאה'.

keytool -printcert -jarfile [path to APK or AAB] | grep SHA256

עוד דרך למצוא את הקובץ המתאים של Digital Asset Links לאפליקציה היא להשתמש בכלי לקישור נכסים:

  1. מתקינים את הכלי לקישור נכסים מחנות Play.
  2. באותו מכשיר, אפשר להוריד את האפליקציה מחנות Google Play או להתקין אותה באופן מקומי.
  3. פתחו את יישום הכלי לקישור נכסים. שם תופיע רשימה של כל האפליקציות המותקנות מכשיר לפי שם החבילה. סינון הרשימה לפי מזהה האפליקציה שבחרתם קודם לכן bubblewrap init ולוחצים על הרשומה הזו.
  4. יוצג דף שבו מפורטים חתימת האפליקציה וקישור לנכס דיגיטלי שנוצר. לוחצים על לחצנים 'העתקה' או 'שיתוף' בתחתית המסך כדי לייצא אותם בכל דרך שרוצים (למשל, שמירה ב-Google Keep, לשלוח אותו לעצמכם באימייל).

אותו רעיון רלוונטי כמו קודם לגבי חתימה או העלאה של מפתחות. אם התקנתם את האפליקציה חנות Google Play, הכלי ל'קישור נכסים' יקבל את טביעת האצבע של מפתח החתימה של האפליקציה. אם המיקום התקנתם את האפליקציה ישירות מהמכשיר המקומי, אז טביעת האצבע היא של המפתח נוצרה בועת בועות.

אחרי שהעליתם אותו, אתם צריכים לוודא שיש לכם גישה לקובץ הקישור לנכס בדפדפן. מוודאים שהשגיאה https://example.com/.well-known/assetlinks.json מובילה לקובץ שהעלית עכשיו.

אתרים המבוססים על Jekyll

אם האתר שלכם נוצר על ידי Jekyll (כמו דפי GitHub), תצטרכו להוסיף שורה כדי שהספרייה .well-known תיכלל בפלט. במרכז העזרה של GitHub יש מידע נוסף בנושא הזה. יוצרים קובץ בשם _config.yml ברמה הבסיסית (root) של האתר (או מוסיפים אליו קובץ אם הוא כבר קיים) מזינים:

# Folders with dotfiles are ignored by default.
include: [.well-known]

הוספת מפתחות

קובץ Digital Asset Link יכול להכיל יותר מאפליקציה אחת, ולכל אפליקציה הוא יכול להכיל יותר מקש אחד. לדוגמה, כדי להוסיף מפתח שני, פשוט משתמשים הכלי לקישור נכסים כדי לקבוע את המפתח ולהוסיף אותו כרשומה שנייה. הקוד ב-Chrome שמנתח את ה-JSON הזה הוא די מחמיר, אז כדאי לוודא שלא מוסיפים בטעות קוד אימות פסיק מיותר בסוף הרשימה.

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
},{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
}]

פתרון בעיות

מערכת Chrome רושמת את הסיבה לכך שהאימות של Digital Asset Links נכשל, ואפשר לצפות ביומנים מכשיר Android עם adb logcat. אם אתם מפתחים את האפליקציה ל-Linux/Mac, תוכלו לראות את היומנים הרלוונטיים ממכשיר מחובר. עם:

> adb logcat -v brief | grep -e OriginVerifier -e digital_asset_links

לדוגמה, אם מופיעה ההודעה Statement failure matching fingerprint., צריך להשתמש ב- הכלי לקישור נכסים כדי לראות את החתימה של האפליקציה ולוודא שהיא תואמת לזו בassetlinks.json חדש.