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

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

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

טיפ: כדי לספק את התכונות והפונקציונליות הטובות ביותר במספר גרסאות של Android, כדאי להשתמש בAndroid Support Library באפליקציה. הספרייה הזו מאפשרת להשתמש במספר ממשקי 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">

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