העברת אפליקציות ל-Android 9

ב-Android 9 (רמת API 28) יש תכונות וממשקי API חדשים שאפשר להשתמש בהם באפליקציות, וגם שינויים חדשים בהתנהגות. במסמך הזה מופיעה סקירה כללית של השלבים להעברת האפליקציות ל-Android 9 בשני שלבים עיקריים:

  1. הבטחת תאימות בסיסית ל-Android 9

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

  2. טירגוט לפלטפורמה החדשה, הידור באמצעות Android 9 SDK ויצירת build עם תכונות של Android 9

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

הכנת מכשיר עם Android 9

אם יש לכם מכשיר תואם, תוכלו לקבל את קובץ האימג' של מערכת Android 9 מהיצרן. לקובצי אימג' מקוריים למכשירי Pixel כאן מפורטות הוראות כלליות להצגת קובץ אימג' של מערכת.

אפשר גם להוריד את קובץ האימג' של מערכת Android 9 למהדר של Android. הוא מופיע ב-SDK Manager בקטע Android API 28 בתור Google APIs Intel x86 Atom System Image.

הערה: קובץ האימג' של מערכת הסימולטור של Android 9 זמין להורדה ב-Android Studio 3.1 ואילך. ב-Android Studio 3.2 יש תאימות מקסימלית. מידע נוסף זמין במאמר קבלת Android 9 SDK.

מוודאים שהטלפון תואם ל-Android 9

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

איך להבטיח תאימות עם Android 9 שלב אחר שלב

ביצוע בדיקות תאימות

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

עם זאת, יש עוד היבט לבדיקות: ב-Android 9 יש שינויים בפלטפורמת Android שיכולים להשפיע על התנהגות האפליקציה או לשבש אותה לגמרי, גם אם לא משנים את targetSdkVersion. לכן חשוב לבדוק את השינויים העיקריים בטבלה 1 ולבדוק את כל התיקונים שהוטמעו כדי להתאים לשינויים.

טבלה 1. שינויים מרכזיים שמשפיעים על כל האפליקציות שפועלות במכשירי Android 9.

שינוי סיכום
הגבלות על ממשקים שאינם SDK הגישה לממשקים ספציפיים שאינם ב-SDK חסומה עכשיו, בין שהגישה היא ישירה, דרך JNI או דרך רפלקציה. ניסיונות לגשת לממשקי API מוגבלים יוצרים שגיאות כמו NoSuchFieldException ו-NoSuchMethodException. פרטים נוספים זמינים במאמר הגבלות על ממשקים שאינם SDK.
הסרה של ספק קריפטו החל מגרסה 9 של Android, ספק Crypto JCA הוסר. קריאות ל-SecureRandom.getInstance("SHA1PRNG", "Crypto") יגרמו להשלכת NoSuchProviderException.
מפענח UTF-8 מחמיר יותר ב-Android 9, מפענח UTF-8 לשפת Java מחמיר יותר ועומד בתקן Unicode.
הגישה למצלמה, למיקרופון ולחיישנים חסומה לאפליקציות שאינן פעילות כשאפליקציות לא פעילות, אין להן יותר גישה למצלמה, למיקרופון או לחיישנים של SensorManager.

כדי לקבל רשימה מקיפה יותר של שינויי התנהגות בכל האפליקציות שפועלות ב-Android 9: מידע נוסף זמין במסמך שינויים בהתנהגות.

עדכון גרסת היעד והשימוש בתכונות של Android P

כאן מוסבר איך מפעילים תמיכה מלאה ב-Android 9 על ידי עדכון targetSdkVersion ל-28 ומוסיפים תכונות חדשות שזמינות ב-Android 9.

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

הערה:השלבים שמתוארים למעלה כדי דרישה מוקדמת היא לוודא שהפלטפורמה תואמת לטירגוט האפליקציה ל-Android 9, לכן חשוב להשלים קודם את השלבים האלה.

מעדכנים את גרסת היעד ומשתמשים בתכונות של Android 9 שלב אחר שלב

להורדת Android 9 SDK

אפשר לקבל את חבילות ה-SDK לבניית האפליקציה עם Android 9 באמצעות Android Studio 3.1 ואילך. אם אתם עדיין לא צריכים את התכונות החדשות ב-Android 9, ואתם רוצים רק לבצע הידור לגרסה הזו של הפלטפורמה, תוכלו להשתמש ב-Android Studio 3.1. Android Studio 3.2 תומך באופן מלא בתכונות של Android 9.

בדיקה של אפליקציית Android 9

אחרי שמשלימים את ההכנות שלמעלה, אפשר ליצור את האפליקציה ולאחר מכן לבדוק אותה שוב כדי לוודא שהיא פועלת כמו שצריך כשמטרגטים את Android 9‏ (API ברמה 28). זה זמן טוב נוסף לבדוק את אפליקציית ליבה הנחיות איכות ובברכה שיטות לבדיקה.

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

בטבלה 2 מוצגת רשימה של השינויים האלה עם קישורים למידע נוסף.

טבלה 2. שינויים מרכזיים שמשפיעים על אפליקציות כשהערך בשדה targetSdkVersion הוא 28.

שינוי סיכום
הרשאה לשימוש בשירות שפועל בחזית אפליקציות שרוצות להשתמש בשירותים שפועלים בחזית חייבות לבקש עכשיו את ההרשאה FOREGROUND_SERVICE קודם. זוהי הרשאה רגילה, ולכן המערכת מעניקה אותה באופן אוטומטי לאפליקציה המבקשת. הפעלה של שירות בחזית ללא ההרשאה הזו תגרום להפעלת SecurityException.
הוצאה משימוש של הצפנות Bouncy Castle ב-Android 9 הוצאו משימוש כמה צפנים מהספק Bouncy Castle לטובת אלה שספק Conscrypt מספק. שיחות אל getInstance() ש לבקש את Bouncy ספק הטירה יצר NoSuchAlgorithmException שגיאות. כדי לפתור את השגיאות, לא מציינים ספק ב-getInstance()‎ (כלומר מבקשים את ההטמעה שמוגדרת כברירת מחדל).
הסרת הגישה הישירה אל Build.serial מעכשיו, אפליקציות שזקוקות למזהה Build.serial חייבות לבקש את READ_PHONE_STATE ואז להשתמש בשיטה החדשה Build.getSerial() שנוספה ב-Android 9.
שיתוף אסור של ספריית נתונים של WebView אפליקציות לא יכולות יותר לשתף ספריית נתונים אחת של WebView בין תהליכים. אם באפליקציה יש יותר מתהליך אחד באמצעות WebView, CookieManager או כל API אחר ב-android.webkit. החבילה, האפליקציה תקרוס כשהתהליך השני יקרא לשיטת WebView.
הגישה לספריית הנתונים של האפליקציה חסומה על ידי SELinux המערכת אוכפת ארגזי Sandbox של SELinux לכל אפליקציה, עם הגבלות SELinux לכל אפליקציה לספריית המידע הפרטי של האפליקציה. גישה ישירה לספריית הנתונים של אפליקציה אחרת לפי נתיב אסורה עכשיו. אפליקציות עשויות להמשיך לשתף נתונים באמצעות מנגנוני IPC, כולל על ידי העברה FD.

כדי לראות רשימה מקיפה יותר של שינויי התנהגות באפליקציות שמטרגטות ל-Android 9: לעיון במסמך שינויים בהתנהגות.

במאמר תכונות וממשקי API חדשים ב-Android 9 מפורטות התכונות וממשקי ה-API החדשים שזמינים ב-Android 9.