תמיכה בגרסאות פלטפורמות שונות

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

אפשר להשתמש באשף פרויקט חדש ב-Android Studio כדי לאתר את ההפצה של במכשירים שפועלת בהם כל גרסת Android. ההתפלגות מבוססת על מספר המכשירים נכנסים לחנות Google Play. באופן כללי, אנחנו ממליצים לתמוך בכ-90% מהמכשירים הפעילים, לטרגט את האפליקציה לגרסה האחרונה.

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

ציון הרמות המינימליות והרמות של ה-API לטירגוט

הקובץ AndroidManifest.xml מתארת פרטים על האפליקציה שמזהה באילו גרסאות של Android הוא תומך. באופן ספציפי, minSdkVersion ו-targetSdkVersion עבור הרכיב <uses-sdk> לזהות את רמת ה-API הנמוכה ביותר שהאפליקציה שלכם תואמת אליה ואת רמת ה-API הגבוהה ביותר שעיצבתם ובדקתם את האפליקציה שלכם.

לדוגמה:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
    ...
</manifest>

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

בדיקה של גרסת המערכת בזמן ריצה

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

Kotlin

private fun setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        actionBar.setDisplayHomeAsUpEnabled(true)
    }
}

Java

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

הערה: כשמנתחים משאבי XML, מערכת Android מתעלמת מ-XML מאפיינים שלא נתמכים במכשיר הנוכחי. כך אפשר להשתמש בבטחה במאפייני XML נתמכות רק בגרסאות חדשות יותר, בלי לחשוש שגרסאות ישנות יותר ייכשלו ייתקלו בקוד הזה. לדוגמה, אם מגדירים targetSdkVersion="11", האפליקציה שלך כוללת את ActionBar כברירת מחדל ב-Android מגרסה 3.0 ואילך. כדי להוסיף אפשרויות בתפריט לסרגל הפעולות, צריך להגדיר android:showAsAction="ifRoom" ב-XML של משאב התפריט. ניתן לעשות זאת בבטחה בקובץ XML מרובה גרסאות, כי הגרסאות הישנות של Android פשוט מתעלמות המאפיין showAsAction (כלומר, לא צריך להגדיר בres/menu-v11/).

שימוש בסגנונות ובעיצובים של הפלטפורמה

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

כדי שהפעילות תיראה כמו תיבת דו-שיח:

<activity android:theme="@android:style/Theme.Dialog">

כדי שהפעילות ברקע תהיה שקופה:

<activity android:theme="@android:style/Theme.Translucent">

כדי להחיל עיצוב מותאם אישית משלך שהוגדר ב-/res/values/styles.xml:

<activity android:theme="@style/CustomTheme">

כדי להחיל עיצוב על האפליקציה כולה (כל הפעילויות), צריך להוסיף את android:theme שיוך לרכיב <application>:

<application android:theme="@style/CustomTheme">

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