מערכת Android דורשת שכל חבילות ה-APK ייחתמו באופן דיגיטלי עם אישור לפני כן מותקנים במכשיר או מעודכנים. כשמשיקים גרסה באמצעות אפליקציה ל-Android חבילות, עליך לחתום על ה-App Bundle באמצעות העלאה לפני שמעלים אותו ל-Play Console, והתכונה 'חתימת אפליקציה ב-Play' מטפלת את השאר. לאפליקציות שמפיצות באמצעות חבילות APK בחנות Play או במכשירים אחרים עליך לחתום על חבילות ה-APK באופן ידני להעלאה.
בדף הזה נסביר על כמה מושגים חשובים שקשורים לחתימת אפליקציה אבטחה, כיצד לחתום את האפליקציה לפרסום ב-Google Play באמצעות Android Studio, ואיך להגדיר 'חתימת אפליקציה ב-Play'.
בהמשך מוצגת סקירה כללית ברמה גבוהה של הפעולות שתצטרכו לבצע כדי לחתום על אפליקציה חדשה ולפרסם אותה ב-Google Play:
- יצירה של מפתח העלאה ומאגר מפתחות
- חתימת האפליקציה באמצעות מפתח ההעלאה
- הגדרת התכונה 'חתימת אפליקציה ב-Play'
- העלאת האפליקציה ל-Google Play
- הכנה השקה של גרסה של האפליקציה
אם במקום זאת האפליקציה כבר פורסמה בחנות Google Play עם חתימת אפליקציה קיימת, או שרוצים לבחור חתימת אפליקציה אפליקציה חדשה במקום ש-Google תיצור אותה, בצעו את השלבים הבאים:
- חותמים את האפליקציה באמצעות מפתח החתימה של האפליקציה.
- מעלים את חתימת האפליקציה אל 'חתימת אפליקציה ב-Play'.
- (מומלץ) יצירה ורישום של אישור העלאה לעדכונים עתידיים של האפליקציה
- העלאת האפליקציה ל-Google Play
- הכנה השקה של גרסה של האפליקציה
בדף הזה מוסבר גם איך לנהל את המפתחות שלכם כשאתם מעלים את האפליקציה
לחנויות אחרות של אפליקציות. אם אתם לא משתמשים ב-Android Studio או מעדיפים לחתום על
משורת הפקודה, ללמוד איך להשתמש
apksigner
חתימת אפליקציות ב-Play
באמצעות התכונה 'חתימת אפליקציה ב-Play', Google מנהלת את חתימת האפליקציה ומגינה עליה עבורך, שמשמש לחתימה על חבילות ה-APK שלך להפצה. ובגלל שהאפליקציות חבילות של Google Play מעכבות את הבנייה של חבילות ה-APK והחתימה עליהן לחנות Google Play, לכן צריך צריך להגדיר את התכונה 'חתימת אפליקציה ב-Play' לפני שמעלים את ה-App Bundle. אם עושים את זה מאפשר לכם ליהנות מהיתרונות הבאים:
- צריך להשתמש בקובץ Android App Bundle ולתמוך במצבי הצגת המודעות המתקדמים של Google Play. קובץ Android App Bundle מקטין את האפליקציה שלך באופן משמעותי, את הגרסאות שלך לפשוט יותר, ומאפשר להשתמש במודולים של תכונות ולהציע חוויות מיידיות.
- הגברת האבטחה של מפתח החתימה ומתן אפשרות להשתמש מפתח העלאה נפרד כדי לחתום על ה-App Bundle שמעלים ל-Google Play.
שדרוג האפליקציה מאפשר לך לשנות את חתימת האפליקציה למקרה שהחשבון הקיים שלכם נפרץ או אם אתם צריכים לבצע העברה מפתח קריפטוגרפי חזק יותר
התכונה 'חתימת אפליקציה ב-Play' משתמשת בשני מפתחות: מפתח חתימת אפליקציה והעלאה , שמתואר בפירוט בקטע מפתחות מאגרי מפתחות. מפתח ההעלאה נשמר ומשתמשים בו כדי לחתום את האפליקציה כדי להעלות אותה לחנות Google Play. Google משתמשת באישור ההעלאה כדי לאמת את הזהות שלך, ולחתום על חבילות ה-APK שלך באמצעות חתימת האפליקציה עבור את ההתפלגות, כפי שמוצג באיור 1. אם משתמשים במפתח העלאה נפרד, שליחת בקשה לאיפוס מפתח ההעלאה במקרה שהמפתח יאבד או ייפרץ.
לעומת זאת, באפליקציות שלא הצטרפו ל-Play חתימת אפליקציה – אם מאבדים את מפתח החתימה של האפליקציה, לא תהיה יותר אפשרות לעדכן את האפליקציה.
איור 1. חתימה על אפליקציה באמצעות התכונה 'חתימת אפליקציה ב-Play'
המפתחות שלך מאוחסנים באותה תשתית שבה Google משתמשת כדי לאחסן את מפתחות משלך, כאשר הם מוגנים על ידי שירות ניהול המפתחות של Google. אפשר לקבלת מידע נוסף על התשתית הטכנית של Google, ניתן לקרוא סקירה מפורטת בנושא אבטחה ב-Google Cloud
כשמשתמשים בחתימת אפליקציה ב-Play, אם מאבדים את מפתח ההעלאה או נפרץ, אפשר לבקש איפוס של מפתח ההעלאה ב-Play Console. חתימת האפליקציה שלך מאובטחת על ידי Google, לכן אפשר להמשיך להעלות גרסאות חדשות של האפליקציה כעדכונים לאפליקציה המקורית, אפילו אם תשנו את מפתחות ההעלאה. מידע נוסף זמין במאמר איפוס של מכשיר שאבד או נפגע מפתח העלאה פרטי.
בקטע הבא מתוארים כמה מונחים ומושגים חשובים שקשורים לאפליקציה ואבטחה. אם אתם מעדיפים לדלג קדימה וללמוד איך להכין כדי להעלות את האפליקציה לחנות Google Play, צריך לעבור אל חתימה על האפליקציה גרסה.
מאגרי מפתחות, מפתחות ואישורים
Java Keystores (.jks או .keystore) הם קבצים בינאריים שמשמשים כמאגרים של אישורים ומפתחות פרטיים.
אישור של מפתח ציבורי (קובצי .der
או .pem
), המוכר גם בשם דיגיטלי
אישור או אישור זהות, מכילים את המפתח הציבורי של
זוג מפתחות ציבורי/פרטי, וגם מטא-נתונים נוספים לזיהוי הבעלים
(לדוגמה, שם ומיקום) שמכיל את המפתח הפרטי המתאים.
אלה סוגי המפתחות השונים שכדאי להבין:
- מפתח חתימת אפליקציה: המפתח המשמש לחתימה על חבילות APK שמותקנות במכשיר למכשיר של המשתמש. כחלק ממודל העדכון המאובטח של Android, מפתח החתימה אף פעם לא שינויים במהלך החיים של האפליקציה. חתימת האפליקציה היא פרטית וצריך להשתמש בה לשמור בסוד. עם זאת, אפשר לשתף את האישור שנוצר באמצעות חתימת האפליקציה.
מפתח העלאה: המפתח שבו משתמשים כדי לחתום על ה-App Bundle או ה-APK לפני להעלות אותו לחתימת אפליקציה ב-Google Play. צריך לשמור את מפתח ההעלאה בסוד. עם זאת, אפשר לשתף את האישור נוצרת באמצעות מפתח ההעלאה. אפשר ליצור מפתח העלאה בדרכים הבאות:
- אם בוחרים ש-Google תיצור את חתימת האפליקציה עבורך בזמן הבעת הסכמה, אז המפתח שבו משתמשים כדי לחתום על ההשקה של האפליקציה הוא מוגדר כמפתח ההעלאה שלכם.
- אם תספקו את חתימת האפליקציה ל-Google כשאתם מביעים הסכמה לשימוש חדש או קיימת אפשרות ליצור מפתח העלאה חדש במהלך אחרי ההצטרפות לשיפור האבטחה.
- אם לא תיצרו מפתח העלאה חדש, תמשיכו להשתמש באפליקציה. חתימה על כל גרסה.
טיפ: כדי לשמור על אבטחת המפתחות, כדאי לוודא שהאפליקציה מפתח החתימה ומפתח ההעלאה הם שונים.
עבודה עם ספקי API
אפשר להוריד את האישור למפתח חתימת האפליקציה ולהעלאה מקש Release > הגדרה > הדף 'חתימת אפליקציה' ב-Play Console. השירות הזה משמש לרישום מפתחות ציבוריים באמצעות ספקי API; היא נועדה לשיתוף, כי היא לא כוללת מקש.
טביעת אצבע של אישור היא ייצוג קצר וייחודי של
אישור שספקי API מבקשים לעיתים קרובות לצד שם החבילה
לרשום אפליקציה כדי להשתמש בשירות שלהם. טביעות האצבעות MD5, SHA-1 ו-SHA-256
בדף חתימת האפליקציה, אפשר למצוא את האישורים של ההעלאה וחתימת האפליקציה.
של Play Console. ניתן גם לחשב טביעות אצבע אחרות על ידי הורדת
האישור המקורי (.der
) מאותו הדף.
חתימה על גרסת ה-build של ניפוי הבאגים
בזמן הרצת פרויקט או ניפוי באגים בפרויקט בסביבת הפיתוח המשולבת (IDE), Android Studio
חותם באופן אוטומטי את האפליקציה באמצעות אישור ניפוי באגים שנוצר על ידי Android
כלי SDK. בפעם הראשונה שתפעילו פרויקט או תנפו באגים בפרויקט ב-Android Studio,
סביבת פיתוח משולבת (IDE) יוצרת באופן אוטומטי את מאגר המפתחות והאישור של ניפוי הבאגים ב-
$HOME/.android/debug.keystore
, ומגדיר את מאגר המפתחות ואת הסיסמאות של המפתחות.
אישור ניפוי הבאגים נוצר על ידי כלי ה-build והוא לא מאובטח על ידי רוב חנויות האפליקציות (כולל חנות Google Play) לא מקבלות גישה לאפליקציות חתומה עם אישור ניפוי באגים לפרסום.
מערכת Android Studio מאחסנת באופן אוטומטי את פרטי הכניסה לניפוי באגים בחתימה כך שלא תצטרכו להזין אותה בכל פעם שאתם מבצעים ניפוי באגים. חתימה היא אובייקט שמורכב מכל המידע הדרוש לחתום על האפליקציה, כולל המיקום של מאגר המפתחות, הסיסמה של מאגר המפתחות, שם המפתח, סיסמה למפתח.
מידע נוסף על יצירה והרצה של אפליקציות לניפוי באגים זמין בפיתוח ולהפעיל את האפליקציה.
תפוגה של האישור לניפוי באגים
האישור עם החתימה העצמית המשמש לחתימה על האפליקציה לניפוי באגים כולל הוא תאריך תפוגה של 30 שנה ממועד היצירה שלו. מתי האישור תקבלו שגיאת build.
כדי לפתור את הבעיה, פשוט מוחקים את הקובץ debug.keystore
ששמור באחד
המיקומים הבאים:
~/.android/
ב-OS X וב-LinuxC:\Documents and Settings\user\.android\
במצב פעיל Windows XPC:\Users\user\.android\
ב-Windows Vista ו Windows בגרסאות 7, 8 ו-10
בפעם הבאה שתיצרו ותפעילו גרסת ניפוי באגים של האפליקציה, Android Studio יוצרת מחדש מאגר מפתחות חדש ומפתח ניפוי באגים.
עליך לחתום על האפליקציה שלך כדי לפרסם אותה ב-Google Play
כשהאפליקציה מוכנה לפרסום, צריך לחתום עליה ולהעלות אותה לחנות אפליקציות, כמו Google Play. בזמן פרסום האפליקציה ב-Google Play בפעם הראשונה, צריך גם להגדיר 'חתימת אפליקציה ב-Play'. חתימת אפליקציה ב-Play הוא אופציונלי לאפליקציות שנוצרו לפני אוגוסט 2021. בקטע הזה נסביר איך לחתום כראוי את האפליקציה לגרסה ולהגדיר את התכונה 'חתימת אפליקציה ב-Play'.
יצירת מפתח העלאה ומאגר מפתחות
אם עדיין אין לך מפתח העלאה, זה שימושי כשמגדירים את Play אפשר להשתמש בחתימת אפליקציה כדי ליצור חתימה באמצעות Android Studio באופן הבא:
- בסרגל התפריטים, לוחצים על Build > (בנייה >) יצירת חבילה/APK חתומים.
- בתיבת הדו-שיח Generate signed Bundle או APK, בוחרים באפשרות קובץ Android App Bundle או APK ולוחצים על הבא.
- מתחת לשדה Key store path, לוחצים על Create new.
בחלון New Key Store מזינים את המידע הבא עבור מאגר המפתחות, כפי שמוצג באיור 2.
איור 2. יש ליצור מפתח העלאה ומאגר מפתחות חדשים ב-Android Studio.
מאגר מפתחות
- נתיב מאגר המפתחות: בוחרים את המיקום שבו צריך ליצור את מאגר המפתחות.
כמו כן, יש להוסיף שם קובץ לסוף נתיב המיקום באמצעות
התוסף
.jks
. - סיסמה: צריך ליצור ולאשר סיסמה מאובטחת למאגר המפתחות.
- נתיב מאגר המפתחות: בוחרים את המיקום שבו צריך ליצור את מאגר המפתחות.
כמו כן, יש להוסיף שם קובץ לסוף נתיב המיקום באמצעות
התוסף
מקש
- כינוי: מזינים שם מזהה למפתח.
- סיסמה: צריך ליצור ולאשר סיסמה מאובטחת למפתח. הזה צריכה להיות זהה לסיסמה של מאגר המפתחות. (חשוב לעיין בבעיה המוכרת) לקבלת מידע נוסף)
- תוקף (בשנים): הגדרת משך הזמן בשנים שבהן המפתח להיות תקינים. המפתח צריך להיות בתוקף ל-25 שנה לפחות, כדי שתהיה לך אפשרות לחתום עדכונים של אפליקציה עם אותו מפתח לאורך כל משך החיים של האפליקציה.
- אישור: הזן פרטים מסוימים על עצמך עבור אישור. המידע הזה לא מוצג באפליקציה, אבל הוא כלול באישור שלך כחלק מה-APK.
בסיום מילוי הטופס, לוחצים על אישור.
אם רוצים לפתח את האפליקציה ולחתום עליה באמצעות מפתח ההעלאה, צריך להמשיך בסעיף איך חותמים על האפליקציה באמצעות מפתח ההעלאה. אם רוצים רק ליצור את המפתח ומאגר המפתחות, לוחצים על ביטול.
חתימה על האפליקציה באמצעות המפתח
אם כבר יש לך מפתח העלאה, אפשר להשתמש בו כדי לחתום על האפליקציה. אם במקום זאת האפליקציה שהוא כבר נחתם ופורסם בחנות Google Play עם אפליקציה קיימת מפתח החתימה, צריך להשתמש בו כדי לחתום את האפליקציה. בשלב מאוחר יותר אפשר ליצור ולרשום מפתח העלאה נפרד עם Google Play כדי לחתום ולהעלות את העדכונים הבאים באפליקציה.
כדי לחתום על האפליקציה באמצעות Android Studio, צריך לפעול לפי השלבים הבאים:
- אם אין לכם כרגע את תיבת הדו-שיח יצירת חבילה חתומה או APK חתומה פתיחה, לוחצים על Build > יצירת חבילה/APK חתומים.
- בתיבת הדו-שיח יצירת חבילה או APK חתומה בוחרים באחת מהאפשרויות הבאות: אפליקציה ל-Android חבילה או APK ולוחצים על הבא.
- בוחרים מודול מהתפריט הנפתח.
מציינים את הנתיב למאגר המפתחות, את הכינוי של המפתח ומזינים את סיסמאות לשניהם. אם עדיין לא הכנתם את מאגר מפתחות ההעלאה והמפתח, קודם יוצרים מפתח העלאה ומאגר מפתחות ואז כדי להשלים את השלב הזה, צריך לחזור אחורה.
איור 3. חותמים על האפליקציה באמצעות מפתח ההעלאה.
לוחצים על הבא.
בחלון הבא (מוצג באיור 4), בוחרים תיקיית יעד עבור אפליקציה חתומה, בוחרים את סוג ה-build, בוחרים את טעמי המוצר, אם רלוונטי.
אם אתם בונים APK וחותמים עליו, צריך לבחור איזו חתימה גרסאות שבהן האפליקציה שלך תתמוך. למידע נוסף, אפשר לקרוא על סכימות של חתימת אפליקציות
לוחצים על יצירה.
![](https://developer.android.com/static/studio/images/publish/generate_signed_bundle_popup-2x.png?authuser=0000&hl=he)
איור 5. לוחצים על הקישור בחלון הקופץ כדי לנתח את האפליקציה או לאתר אותה חבילה.
אחרי סיום בניית האפליקציה החתומה ב-Android Studio, תוכלו: לאתר או לנתח את האפליקציה בלחיצה על האפשרות המתאימה בעמודה התראה קופצת, כפי שמוצג באיור 5.
עכשיו אפשר לצרף את האפליקציה ל'חתימת אפליקציה ב-Play' ולהעלות אותה של האפליקציה שלך לפרסום. אם זו הפעם הראשונה שאתם משתמשים בתהליך פרסום האפליקציה, מומלץ אפשר לקרוא את הסקירה הכללית בנושא השקה. אחרת, ממשיכים לדף שבו מוסבר איך להעלות את האפליקציה שלכם ל-Play מסוף.
שימוש בחתימת אפליקציה ב-Play
כפי שהוסבר קודם בדף הזה, הגדרת נדרשת חתימת אפליקציה ב-Play כדי לחתום את האפליקציה להפצה דרך Google Play (למעט אפליקציות) שנוצרה לפני אוגוסט 2021, ואפשר להמשיך להפיץ חבילות APK בחתימה עצמית). השלבים שצריך לבצע תלויים בשאלה אם האפליקציה עדיין לא פורסמה ב-Google Play, או שהאפליקציה כבר חתומה ופורסם לפני כן באוגוסט 2021 באמצעות חתימת אפליקציה קיימת.
הגדרת אפליקציה חדשה
כדי להגדיר חתימה לאפליקציה שעדיין לא פורסמה ב-Google Play: כך עושים את זה:
- אם עדיין לא עשיתם זאת, עליכם ליצור מפתח העלאה ואז חותמים על האפליקציה באמצעות מפתח ההעלאה הזה.
- נכנסים ל-Play Console.
- פועלים לפי השלבים כדי להכין השקת הגרסה כדי ליצור גרסה חדשה.
- אחרי שבוחרים מסלול הפצה, מגדירים את חתימת האפליקציה בקטע אפליקציה
לחתימה דיגיטלית באופן הבא:
- כדי ש-Google Play תיצור בשבילך חתימת אפליקציה שתשמש לכניסה לא צריך לעשות שום דבר. המפתח שבו אתם משתמשים כדי לחתום הגרסה הופכת למפתח ההעלאה שלך, ועליך להשתמש בה כדי לחתום גרסאות חדשות.
- כדי להשתמש באותו מפתח שבו משתמשת אפליקציה אחרת בחשבון הפיתוח שלך, בוחרים שינוי חתימת האפליקציה > שימוש באותו המפתח כמו באפליקציה אחרת חשבון, בוחרים אפליקציה ולוחצים על המשך.
- כדי לספק ל-Google חתימת אפליקציה משלכם בזמן החתימה על האפליקציה, בוחרים באפשרות שינוי המפתח לחתימת אפליקציה ואז בוחרים באחת מהאפשרויות ייצוא ו אפשרויות העלאה שמאפשרות להעלות באופן מאובטח מפתח פרטי ואת המפתח הציבורי שלו אישור.
בקטע App Bundles, לוחצים על עיון כדי לאתר ולהעלות את האפליקציה שחתמתם עליה באמצעות מפתח ההעלאה. לקבלת מידע נוסף לקבלת מידע על השקת האפליקציה, אפשר לעיין במאמר בנושא להכין ו להשיק את הגרסה. כשמשיקים את האפליקציה לאחר ההגדרה של 'חתימת אפליקציה ב-Play', מערכת Google Play יוצרת (אלא אם מעלים מפתח קיים) ומנהלת את לחתימה דיגיטלית. פשוט חותמים על העדכונים הבאים באפליקציה באמצעות את מפתח ההעלאה לפני שמעלים אותו ל-Google Play.
אם צריך ליצור מפתח העלאה חדש לאפליקציה, אפשר לעבור לקטע שבו מוסבר איך לאפס מפתח העלאה פרטי שאבד או שנפרץ.
צירוף אפליקציה קיימת
אם אתם מעדכנים אפליקציה שכבר פורסמה ב-Google Play באמצעות חתימת אפליקציה קיימת, אפשר להצטרף לחתימת אפליקציה ב-Play בתור ככה:
- נכנסים אל Play Console ו עוברים לאפליקציה.
- בתפריט הימני, לוחצים על פרסום > הגדרה > חתימת אפליקציה.
- אם רלוונטי, קוראים את התנאים וההגבלות ולוחצים על אישור.
- צריך לבחור באחת מהאפשרויות שמתארות בצורה הטובה ביותר את מפתח החתימה שרוצים מעלים את הקובץ ל-Google Play ופועלים לפי ההוראות שמוצגות. עבור לדוגמה, אם משתמשים ב-Java Keystore כמפתח החתימה, בוחרים מעלים חתימת אפליקציה חדשה מ-Java Keystore ופועלים לפי הוראות להורדה ולהפעלה של כלי ה-PEPK, ולהעלאה של הקובץ שנוצר באמצעות המפתח המוצפן שלך.
- לחץ על הירשם.
עכשיו אמור להופיע דף עם פרטי החתימה וההעלאה של האפליקציה אישורים. עכשיו Google Play תחתום את האפליקציה באמצעות המפתח הקיים שלך כאשר ולפרוס אותו למשתמשים. אבל אחד מהיתרונות החשובים ביותר של אפליקציית Play חתימה היא היכולת להפריד את המפתח שבו אתם משתמשים כדי לחתום על פריט מידע שנוצר בתהליך הפיתוח (Artifact) שמעלים ל-Google Play מהמפתח שמשמש את Google Play לחתימה של האפליקציה להפצה למשתמשים. לכן, כדאי לבצע את השלבים הבאים כדי ליצור ולרשום מפתח העלאה נפרד.
יצירה ורישום של אישור העלאה
כשמפרסמים אפליקציה שלא חתומה על ידי מפתח העלאה, Google ב-Play Console אפשר לרשום חשבון לקבלת עדכונים עתידיים של האפליקציה. השלב הזה הוא אופציונלי, אבל מומלץ לפרסם את האפליקציה באמצעות מפתח נפרד מזה שמשמש את Google Play להפצת האפליקציה למשתמשים. כך Google שומרת על האבטחה של מפתח החתימה, לאפס מפתח העלאה פרטי שאבד או שנפרץ. בקטע הזה מוסבר איך יוצרים מפתח העלאה, איך יוצרים העלאה ולקבל ממנו אישור, ולרשום אותו ב-Google Play לעתיד עדכונים של האפליקציה.
בהמשך מתוארים המצבים שבהם מופיעה האפשרות להירשם אישור העלאה ב-Play Console:
- כשמפרסמים אפליקציה חדשה שנחתמה באמצעות מפתח חתימה ומביעים הסכמה לכך חתימת אפליקציה ב-Play.
- בחרת לפרסם אפליקציה קיימת שכבר צורפה ל-Play חתימת אפליקציה, אבל היא נחתמת באמצעות מפתח החתימה שלה.
אם לא מפרסמים עדכון לאפליקציה קיימת שכבר צורפה ל-Play App Signing, ואתם רוצים לרשום אישור העלאה, בצעו את השלבים הבאים ותמשיכו לקטע שמסביר איך לאפס מפתח העלאה פרטי שאבד או שנפרץ.
אם עדיין לא עשיתם זאת, עליכם: ליצור מפתח העלאה ומאגר מפתחות.
אחרי שיוצרים את מפתח ההעלאה ומאגר המפתחות, צריך ליצור
ממפתח ההעלאה באמצעות
keytool
באמצעות הפקודה הבאה:
$ keytool -export -rfc -keystore your-upload-keystore.jks -alias upload-alias -file output_upload_certificate.pem
עכשיו, אחרי שיש לך את אישור ההעלאה, עליך לרשום אותו ב-Google כשתוצג הנחיה לכך ב-Play Console או כשמאפסים את מפתח ההעלאה.
שדרוג של חתימת האפליקציה
בנסיבות מסוימות כדאי לשנות את מפתח החתימה של האפליקציה. עבור למשל, כי ברצונך להשתמש במפתח קריפטוגרפי חזק יותר או במפתח החתימה בסיכון. אבל משתמשים יכולים לעדכן את האפליקציה רק אם העדכון חתום באותו מפתח חתימה, קשה לשנות את החתימה למפתח עבור אפליקציה שכבר פורסמה.
אם מפרסמים את האפליקציה ב-Google Play, אפשר לשדרג את מפתח החתימה עבור פורסמה דרך Play Console – המפתח החדש משמש לחתימה על התקנות ועדכונים לאפליקציה ב-Android 13 ואילך, כשמפתח חתימת האפליקציה הישן משמש לחתימה על עדכונים למשתמשים בגרסאות קודמות של Android.
מידע נוסף זמין במאמר הבא: שדרוג חתימת האפליקציה
איפוס של מפתח העלאה פרטי שאבד או שנפרץ
אם איבדתם את מפתח ההעלאה הפרטי או שהמפתח הפרטי שלכם נפרץ, אפשר ליצור חשבון חדש שליחת בקשה לאיפוס מפתח ההעלאה ב-Play Console.
הגדרת תהליך ה-build כדי לחתום את האפליקציה באופן אוטומטי
ב-Android Studio, אפשר להגדיר את הפרויקט לחתימה על גרסת ההפצה של האפליקציה באופן אוטומטי בתהליך ה-build באמצעות יצירה של חתימה והקצאה שלו לסוג ה-build של הגרסה. חתימה כוללת מיקום של מאגר מפתחות, סיסמה של מאגר מפתחות, כתובת אימייל חלופית של מפתח סיסמה למפתח. כדי ליצור הגדרת חתימה ולהקצות אותה לגרסה שלך סוג build באמצעות Android Studio, מבצעים את השלבים הבאים:
- בחלון Project, לוחצים לחיצה ימנית על האפליקציה ולאחר מכן פותחים את הגדרות המודול.
- בחלון Project Buildure (מבנה הפרויקט), בקטע מודולים בחלונית הימנית, לוחצים על המודול הרצוי. לחתימה.
- לוחצים על הכרטיסייה Signing (חתימה) ואז לוחצים על Add (הוספה).
.
-
צריך לבחור את קובץ מאגר המפתחות, ולהזין שם להגדרת החתימה הזאת (שאפשר ליצור יותר מאישור אחד), ולהזין את המידע הנדרש.
איור 7. החלון ליצירת חתימה חדשה הגדרה אישית.
- לוחצים על הכרטיסייה סוגי Build.
- לוחצים על גרסת ה-build של הגרסה.
-
בקטע Signing Config, בוחרים את ההגדרה לחתימה שאתם יצרתם.
איור 8. בחירת הגדרה אישית לכניסה ב-Android אולפן.
- לוחצים על אישור.
עכשיו, בכל פעם שיוצרים את סוג ה-build של הגרסה, בוחרים אפשרות בקטע
פיתוח > build Bundle(s) / APK ב-Android Studio,
סביבת הפיתוח המשולבת (IDE) תחתום את האפליקציה שלך באופן אוטומטי באמצעות הגדרת החתימה שבחרת
שצוין. ה-APK או ה-App Bundle החתומים נמצאים ב:
הספרייה build/outputs/
בתוך ספריית הפרויקט של
את המודול שאתם מפתחים.
כשיוצרים הגדרת חתימה, פרטי החתימה כלולים בטקסט פשוט בקובצי ה-build של Gradle. אם אתם עובדים בצוות או שיתוף הקוד שלך באופן ציבורי, עליך לדאוג שפרטי החתימה שלך יהיו מאובטחים על ידי הסרה שלו מקובצי ה-build ואחסון בנפרד. אפשר לקרוא מידע נוסף על הסרת פרטי החתימה מקובצי ה-build שלך הסרת פרטי החתימה מה-Build קבצים למידע נוסף על אבטחה של פרטי החתימה, אפשר לעיין במאמר לשמור על אבטחת המפתח, למטה.
לחתום על כל טעם שונה של מוצר.
אם האפליקציה שלך משתמשת בטעמים של מוצרים ואתם רוצים לחתום על כל טעם אפשר ליצור הגדרות חתימה נוספות ולהקצות אותן לפי טעם:
- בחלון Project, לוחצים לחיצה ימנית על האפליקציה ולאחר מכן פותחים את הגדרות המודול.
- בחלון Project Buildure (מבנה הפרויקט), בקטע מודולים בחלונית הימנית, לוחצים על המודול הרצוי. לחתימה.
- לוחצים על הכרטיסייה Signing (חתימה) ואז לוחצים על Add (הוספה).
.
-
צריך לבחור את קובץ מאגר המפתחות, ולהזין שם להגדרת החתימה הזאת (שאפשר ליצור יותר מאישור אחד), ולהזין את המידע הנדרש.
איור 10. החלון ליצירת חתימה חדשה הגדרה אישית.
- חוזרים על שלבים 3 ו-4 לפי הצורך עד ליצירת כל החתימה הרצויה. הגדרות אישיות.
- לוחצים על הכרטיסייה טעמים.
- לוחצים על הטעם שרוצים להגדיר, ואז בוחרים את הטעם המתאים
של החתימה מהתפריט הנפתח Signing Config.
איור 11. קובעים את הגדרות החתימה לפי טעם המוצר.
חוזרים על הפעולה כדי להגדיר טעמים נוספים של המוצרים.
- לוחצים על אישור.
אפשר גם לציין את הגדרות החתימה בקובצי התצורה של Gradle. עבור מידע נוסף ראו קביעת הגדרות הכניסה.
הרצת דוח חתימה
כדי לקבל פרטי חתימה לכל אחת מהווריאציות של האפליקציה שלך, כדאי להפעיל את Gradle
משימה אחת (signingReport
) ב-Android Studio:
- בוחרים באפשרות תצוגה > Windows בכלי > Gradle כדי לפתוח את חלון הכלי של Gradle
- בוחרים באפשרות האפליקציה שלך > משימות > android > לחתום על הדוח כדי להריץ את הדוח.
ניהול מפתח החתימה שלך
אם בוחרים לא להצטרף לחתימת אפליקציה ב-Play (רק לאפליקציות שנוצרו) לפני אוגוסט 2021), יש לכם אפשרות לנהל חתימת אפליקציה ומאגר מפתחות משלכם. חשוב לזכור: באחריותכם לאבטח את המפתח ואת מאגר המפתחות. בנוסף, האפליקציה לא תוכל לתמוך בקובצי Android App Bundle. Play Feature Delivery ו-Play Asset Delivery.
כשאתם מוכנים ליצור מפתח ומאגר מפתחות משלכם, קודם לבחור סיסמה חזקה למאגר המפתחות וסיסמה חזקה נפרדת כל מפתח פרטי שמאוחסן במאגר המפתחות. צריך לשמור את מאגר המפתחות במקום בטוח למקום בטוח. אם מאבדים את הגישה לחתימת האפליקציה או שהמפתח בסיכון, Google לא תוכל לאחזר עבורך את חתימת האפליקציה, ואתה לא יוכלו לפרסם גרסאות חדשות של האפליקציה שלך למשתמשים כעדכונים האפליקציה המקורית. מידע נוסף זמין במאמר הבא: לשמור על אבטחת המפתח, למטה.
אם אתם מנהלים את חתימת האפליקציה ומאגר המפתחות משלכם, בזמן חתימת ה-APK, יחתום עליו באופן מקומי באמצעות חתימת האפליקציה ויעלה את ה-APK החתום ישירות אל חנות Google Play להפצה, כפי שמוצג באיור 12.
איור 12. חתימה על אפליקציה כשאתם מנהלים את חתימת האפליקציה שלכם
כשמשתמשים חתימת אפליקציה של Play, Google שומרת על האבטחה של מפתח החתימה, ומוודאת שהאפליקציות חתומים כראוי ויכולים לקבל עדכונים לכל אורך החיים שלהם. עם זאת, אם תחליטו לנהל את חתימת האפליקציה בעצמכם, יש כמה דברים שחשוב לזכור.
שיקולים בנוגע לחתימה
במהלך כל התקופה הצפויה, צריך לחתום על האפליקציה עם אותו אישור כל משך החיים שלו. יש כמה סיבות אפשריות לכך:
- שדרוג אפליקציה: כאשר המערכת מתקינה עדכון לאפליקציה, השוואה בין האישורים בגרסה החדשה לבין האישורים הקיימים . המערכת תאפשר את העדכון אם האישורים תואמים. אם חותמים על גרסה חדשה עם אישור אחר, עליך להקצות חבילה שונה שם לאפליקציה — במקרה זה, המשתמש מתקין את הגרסה החדשה של האפליקציה החדשה.
- מודולריות של אפליקציות: ב-Android אפשר להריץ חבילות APK שנחתמו על ידי אותו אישור באותו תהליך, אם האפליקציות מבקשות, כך שהמערכת תתייחס אליהן אפליקציה אחת. כך תוכלו לפרוס את האפליקציה במודולים, והמשתמשים יוכלו לעדכן כל אחד מהמודולים בנפרד.
- שיתוף קוד/נתונים באמצעות הרשאות: Android מספקת גישה מבוססת-חתימה אכיפת הרשאות, כדי שאפליקציה תוכל לחשוף פונקציונליות לאפליקציה אחרת שחתום באישור שצוין. באמצעות חתימה על מספר חבילות APK באמצעות ובאמצעות בדיקות של הרשאות מבוססות חתימה, האפליקציות שלכם יוכלו לשתף קוד ונתונים בצורה מאובטחת.
אם בכוונתך לתמוך בשדרוגים של אפליקציה, צריך לוודא שמפתח חתימת האפליקציה תקופת תוקף שחורגת ממשך החיים הצפוי של אותה אפליקציה. תוקף מומלץ לבחור תקופה של 25 שנים או יותר. מתי תקופת התוקף של המפתח שהתוקף שלהן יפוג, המשתמשים לא יוכלו עוד לשדרג בצורה חלקה לגרסאות חדשות של באפליקציה שלך.
אם את/ה מתכנן/ת לפרסם את האפליקציות שלך ב-Google Play, המפתח שמשמש אותך לחתימה תקופת התוקף של האפליקציה חייבת להיות בתוקף אחרי 22 באוקטובר 2033. Google Play אוכפת את הדרישה הזו כדי להבטיח שמשתמשים יוכלו לשדרג אפליקציות בצורה חלקה כאשר יש גרסאות חדשות.
שמירה על אבטחת המפתח
אם בחרת לנהל ולאבטח את חתימת האפליקציה ואת מאגר המפתחות בעצמך (במקום להצטרף אל חתימת אפליקציה ב-Play), אבטחת האפליקציה מפתח החתימה הוא קריטי חשיבות, גם לכם וגם למשתמש. אם מאפשרים למישהו להשתמש במפתח, או אם משאירים את מאגר המפתחות והסיסמאות במיקום לא מאובטח, הצד השלישי יוכל למצוא אותם ולהשתמש בהם, את זהות המחבר שלך והאמון המשתמשים נפרץ.
אם צד שלישי כלשהו אמור להצליח לקבל את חתימת האפליקציה שלך ללא ידיעתך או של אותו אדם, הוא יוכל לחתום ולהפיץ אפליקציות שמחליפות באופן זדוני את האפליקציות האותנטיות שלכם, או שהן יפגעו. אדם כזה יכול גם לחתום על להפיץ אפליקציות בזהות שלכם שתוקפות אפליקציות אחרות או את המערכת עצמה, או שיהיו פגומים או גנובים נתוני משתמש.
המפתח הפרטי שלך נדרש לחתימה על כל הגרסאות העתידיות של האפליקציה. אם אם המפתח ילך לאיבוד או ילך לאיבוד, לא תהיה אפשרות לפרסם עדכונים אפליקציה קיימת. אי אפשר ליצור מחדש מפתח שנוצר בעבר.
המוניטין שלכם כישות מפתח תלוי באבטחה של חתימת האפליקציה כראוי, כל הזמן, עד שהתוקף של המפתח פג. ריכזנו כאן כמה טיפים לשמירה על אבטחת המפתח:
- עליך לבחור סיסמאות חזקות למאגר המפתחות ולמפתח.
- אסור לתת או להשאיל את המפתח הפרטי שלך לאף אחד, ואסור לתת לאף אחד אנשים יודעים את מאגר המפתחות ואת הסיסמאות של המפתחות.
- יש לשמור במקום בטוח ומאובטח את קובץ מאגר המפתחות שמכיל את המפתח הפרטי.
באופן כללי, אם אתה נוקט אמצעי זהירות סבירים בעת יצירה, שימוש אחסון המפתח שלך, הוא יישאר מאובטח.
הסרת פרטי החתימה מקובצי ה-build
כשיוצרים הגדרה של חתימה, מערכת Android Studio מוסיפה את החתימה שלכם
בטקסט פשוט לקובצי build.gradle
של המודול. אם המיקום
אתם עובדים עם צוות או משתמשים בקוד פתוח בקוד פתוח, צריך להעביר
מידע רגיש מקובצי ה-build כך שלא ניתן יהיה לגשת אליו בקלות
לאחרים. לשם כך, צריך ליצור קובץ מאפיינים נפרד לאחסון
מאובטח ותפנו לקובץ הזה בקובצי ה-build שלכם באופן הבא:
- צריך ליצור הגדרה של חתימה ולהקצות אותה לסוג build אחד או יותר. ההוראות האלה מבוססות על ההנחה שהגדרת תצורה של חתימה יחידה לסוג ה-build של הגרסה, כפי שמתואר בקטע הגדרה תהליך ה-build כדי לחתום באופן אוטומטי על האפליקציה שמפורטת למעלה.
- יצירת קובץ בשם
keystore.properties
ברמה הבסיסית (root) של הפרויקט. הקובץ הזה צריך להכיל את פרטי החתימה שלכם, ככה:storePassword=myStorePassword keyPassword=mykeyPassword keyAlias=myKeyAlias storeFile=myStoreFileLocation
- בקובץ
build.gradle
של המודול, יש להוסיף קוד כדי לטעון את קובץkeystore.properties
לפניandroid {}
חסימה.מגניב
... // Create a variable called keystorePropertiesFile, and initialize it to your // keystore.properties file, in the rootProject folder. def keystorePropertiesFile = rootProject.file("keystore.properties") // Initialize a new Properties() object called keystoreProperties. def keystoreProperties = new Properties() // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { ... }
Kotlin
... import java.util.Properties import java.io.FileInputStream // Create a variable called keystorePropertiesFile, and initialize it to your // keystore.properties file, in the rootProject folder. val keystorePropertiesFile = rootProject.file("keystore.properties") // Initialize a new Properties() object called keystoreProperties. val keystoreProperties = Properties() // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(FileInputStream(keystorePropertiesFile)) android { ... }
הערה: אפשר לאחסן את
keystore.properties
קובץ במיקום אחר (לדוגמה, בתיקיית המודול ולא בתיקיית הבסיס של הפרויקט, או בשרת ה-build שלך אם אתם משתמשים בכלי אינטגרציה רציפה (CI)). לחשבון במקרה כזה, צריך לשנות את הקוד שלמעלה כדי לאתחל כראויkeystorePropertiesFile
באמצעות מיקום הקובץkeystore.properties
. - אפשר להפנות לנכסים שמאוחסנים ב-
keystoreProperties
באמצעות התחבירkeystoreProperties['propertyName']
. שינוי הבלוקsigningConfigs
במודול של המודול קובץbuild.gradle
להתייחס לפרטי החתימה שמאוחסניםkeystoreProperties
באמצעות התחביר הזה.מגניב
android { signingConfigs { config { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } ... }
Kotlin
android { signingConfigs { create("config") { keyAlias = keystoreProperties["keyAlias"] as String keyPassword = keystoreProperties["keyPassword"] as String storeFile = file(keystoreProperties["storeFile"] as String) storePassword = keystoreProperties["storePassword"] as String } } ... }
- פותחים את חלון הכלי יצירת וריאנטים ומוודאים נבחר סוג ה-build של הגרסה.
- בוחרים אפשרות בקטע Build > (בנייה >) בניית חבילות או חבילות APK ל-build
APK או App Bundle של גרסת ה-build של הגרסה.
פלט ה-build אמור להופיע
ספריית
build/outputs/
למודול שלך.
מאחר שקובצי ה-build שלך כבר לא מכילים מידע רגיש, אפשר עכשיו
צריך לכלול אותם בבקרת המקור או להעלות אותם ל-codebase משותף. חשוב
כדי לשמור על האבטחה של הקובץ keystore.properties
. הפעולות שיהיה צריך לבצע עשויות לכלול את הפעולות הבאות:
להסיר אותו ממערכת בקרת המקורות.