מעבר ל-Android 8.0

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

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

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

  2. לעדכן את גרסת היעד ולהשתמש בתכונות של Android 8.0

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

תאימות ל-Android 8.0

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

הוראות מפורטות לתאימות ל-Android 8.0

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

  • אם יש לכם מכשיר תואם (Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P או Nexus נגן), פועלים לפי הוראות כדי להבהב את המכשיר.
  • לחלופין, אפשר להוריד את תמונת המערכת של Android 8.0 לאמולטור Android. הוא מופיע בקטע SDK Manager Android 8.0 בתור Google APIs Intel x86 Atom System Image.

    הערה: תמונת המערכת של Android 8.0 זמינה להורדה מ: Android Studio 3.0 ואילך. לקבלת מידע נוסף, עיינו בקטע שבהמשך כדי לקבל את Android 8.0 SDK.

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

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

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

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

שינוי סיכום מידע נוסף
עדכוני מיקום ברקע בתדירות נמוכה יותר אם האפליקציה מקבלת עדכוני מיקום משירות ברקע, היא מקבלת אותה בתדירות נמוכה יותר עדכונים ב-Android 8.0 (רמת API 26) בהשוואה לגרסאות ישנות יותר של Android. ובאופן ספציפי, השירות לא יכול לקבל עדכוני מיקום יותר מכמה פעמים בשעה. אבל בזמן שהמודל האפליקציה בחזית, קצב עדכוני המיקום לא משתנה. מגבלות של מיקום ברקע
net.hostname לא נתמכים יותר שליחת שאילתה למאפיין המערכת net.hostname תוביל לתוצאה אפס. ללא
חריג חדש של send(DatagramPacket) השיטה send(DatagramPacket) נותנת SocketException אם ה-method connect(InetAddress, int) שהרצתם לפני כן נכשלה. שינויים בהתנהגות: קישוריות רשת ו-HTTP(S)
מתאים NullPointerException מ- AbstractCollection אמצעי תשלום AbstractCollection.removeAll(null) והקבוצה AbstractCollection.retainAll(null) עכשיו תמיד יקפיץ NullPointerException; בעבר, השדה NullPointerException לא שודר כשהאוסף היה ריק. השינוי הזה מבטיח שההתנהגות תהיה תואמת למסמכי התיעוד. שינויים בהתנהגות: טיפול באוספים
מתאים NullPointerException מ- Currency.getDisplayName(null) אנחנו מתקשרים אל Currency.getDisplayName(null) זורקת NullPointerException. שינויים בהתנהגות: לוקאלים ובינלאומיות

לרשימה מקיפה יותר של שינויי התנהגות ב-Android 8.0 (רמת API 26), גם לפרטים נוספים, אפשר לעיין במאמר שינויים בהתנהגות ב-Android 8.0.

צריך לעדכן את גרסת היעד ולהשתמש בתכונות של Android 8.0

כאן מוסבר איך מפעילים תמיכה מלאה ב-Android 8.0. (רמת API 26) על ידי עדכון של targetSdkVersion ל-26 והוספת תכונות חדשות שזמינות ב-Android 8.0.

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

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

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

להורדת Android 8.0 SDK

אפשר לקבל את חבילות ה-SDK לבניית האפליקציה עם Android 8.0 (רמת API 26) באמצעות הגרסה האחרונה של Android Studio (מומלץ להשתמש ב-Android Studio 3.0 ואילך). ב-Android Studio מגרסה 3.0 ואילך יש כלים שיעזרו לך להשתמש בתכונות ב-Android 8.0 ואילך כמו סמלים מותאמים גופנים להורדה. אם אתם עדיין לא צריכים את התכונות האלה, תוכלו להשתמש בגרסה היציבה של Android Studio 2.3.3 כדי לבנות את האפליקציה שלכם עם Android 8.0 ולהשתמש בממשקי ה-API החדשים.

כדי להגדיר כל אחת מהגרסאות של Android Studio, יש לבצע את השלבים הבאים:

  1. מפעילים את Android Studio ופותחים את SDK Manager על ידי לחיצה על כלים > SDK Manager.
  2. בכרטיסייה SDK Platforms (פלטפורמות SDK), מסמנים את האפשרות הצגת פרטי החבילה. נמצא למטה כשמשתמשים בתכונה תצוגה מקדימה של Android 8.0, בודקים את הפרטים הבאים:
    • Android SDK Platform 26
    • תמונת מערכת של Intel x86 Atom של Google APIs (נדרש רק עבור האמולטור)
  3. עוברים לכרטיסייה SDK Tools ובודקים את כל הפריטים שיש להם עדכונים זמינים (לוחצים על כל תיבת סימון שבה מופיע מקף ). צריך לכלול את הגרסאות האחרונות של הפריטים הבאים שחובה למלא:
    • כלים לבנייה של Android SDK גרסה 26.0.0
    • כלים לפלטפורמה 26.0.0 של Android SDK
    • אמולטור Android 26.0.0
  4. לוחצים על אישור כדי להתקין את כל חבילות ה-SDK שנבחרו.

עכשיו הכול מוכן ואפשר להתחיל ליצור באמצעות Android 8.0.

עדכון של תצורת ה-build

עדכון של compileSdkVersion, targetSdkVersion, והגרסה של ספריית התמיכה לגרסה האחרונה תיקונים זמינים זמינים, לדוגמה:

android {
  compileSdkVersion 26

  defaultConfig {
    targetSdkVersion 26
  }
  ...
}

dependencies {
  compile 'com.android.support:appcompat-v7:26.0.0'
}

// REQUIRED: Google's new Maven repo is required for the latest
// support library that is compatible with Android 8.0
repositories {
    google()

    // If you're using a version of Gradle lower than 4.1, you must instead use:
    // maven {
    //     url 'https://maven.google.com'
    // }
}

הסרה של מקלטי שידור מקובץ המניפסט

כי מערכת Android 8.0 (רמת API 26) מציגה אפשרויות חדשות מגבלות במקלטי שידור, צריך להסיר את כל מקלטי השידורים רשום לכוונות שידור משתמעות. השארת המודעות האלה במקומן לא תפגע באפליקציה בזמן ה-build או בזמן הריצה, אבל אין להם השפעה כשהאפליקציה פועלת ב-Android 8.0.

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

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

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

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

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

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

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

שינוי סיכום מידע נוסף
פרטיות Android 8.0 (רמת API 26) לא תומך בשימוש מאפייני המערכת הבאים: net.dns1, net.dns2, net.dns3 או net.dns4. שינויים בהתנהגות: פרטיות
אכיפה של פלחים ניתנים לכתיבה ולביצוע בספריות מקוריות, Android 8.0 (רמת API 26) אוכפת את הכלל הנתונים לא צריכים להיות קובצי הפעלה, וקוד לא צריך להיות ניתן לכתיבה. שינויים בהתנהגות: ספריות מקוריות
אימות כותרות וקטעים של ELF המנגנון לקישור דינמי בודק ערכים נוספים בכותרת של ה-ELF וכותרות של קטעים, וייכשל אם הן לא חוקיות. שינויים בהתנהגות: ספריות מקוריות
התראות אפליקציות שמטרגטות את גרסת Android 8.0 (רמת API 26) של ה-SDK חייבים להטמיע ערוץ התראות אחד או יותר כדי לפרסם התראות למשתמשים. סקירה כללית על ה-API: התראות
השיטה List.sort() יכול להיות שהטמעות של השיטה הזו לא יקראו יותר ל-Collections.sort(), או שהאפליקציה גורמת לחריגה בגלל גלישת קריסות. שינויים בהתנהגות: טיפול באוספים
השיטה Collections.sort() בהטמעות של רשימה, Collections.sort() מציג עכשיו ConcurrentModificationException. התנהגות שינויים: טיפול באוסף

לרשימה מקיפה יותר של שינויי התנהגות ב-Android 8.0 (רמת API 26), לפרטים נוספים, אפשר לעיין במאמר שינויים בהתנהגות ב-Android 8.0.

כדי לגלות את התכונות וממשקי ה-API החדשים שזמינים ב-Android 8.0 (רמת API 26), כדאי לעיין במאמר תכונות וממשקי API ב-Android 8.0.