העברת אפליקציות ל-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 או דרך חשיבה. ניסיונות גישה לממשקים מוגבלים יוצרים שגיאות כמו NoSuchFieldException וגם NoSuchMethodException להגבלות פרטים נוספים בממשקים שאינם SDK.
הסרת ספק הצפנה החל מ-Android 9, ספק ה-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). זה זמן טוב נוסף לבדוק את אפליקציית ליבה הנחיות איכות ובברכה שיטות לבדיקה.

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

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

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

שינוי סיכום
הרשאה לשימוש בשירות שפועל בחזית מעכשיו, אפליקציות שרוצות להשתמש בשירותים שפועלים בחזית חייבות לבקש את ההרשאה FOREGROUND_SERVICE קודם. זוהי הרשאה רגילה, לכן המערכת מעניקה אותה באופן אוטומטי למשתמש ששלח את הבקשה אפליקציה. הפעלת שירות שפועל בחזית ללא הרשאה גורמת לחריגת אבטחה.
הוצאה משימוש של הצפנים בטירה קופצנית מערכת 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.