למרות שבגרסאות האחרונות של Android יש לרוב ממשקי API מצוינים לאפליקציה שלכם, כדאי להמשיך לתמוך בגרסאות ישנות יותר של Android עד שיותר מכשירים יעודכנו. בשיעור הזה נסביר איך להשתמש בממשקי ה-API העדכניים ביותר וגם להמשיך לתמוך בגרסאות ישנות יותר.
אפשר להשתמש באשף New Project (פרויקט חדש) ב-Android Studio כדי לראות את הפילוח של מכשירים פעילים שמופעלת בהם כל גרסה של Android. החלוקה הזו מבוססת על מספר המכשירים שנכנסים לחנות Google Play. בדרך כלל, מומלץ לתמוך בכ-90% מהמכשירים הפעילים, תוך התמקדות בגרסה העדכנית ביותר של האפליקציה.
טיפ: כדי לספק את התכונות והפונקציות הטובות ביותר בכמה גרסאות של Android, מומלץ להשתמש בספריית התמיכה של Android באפליקציה. הספרייה הזו מאפשרת להשתמש בכמה ממשקי API עדכניים של הפלטפורמה בגרסאות ישנות יותר.
ציון רמות 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 שזמינה.
מכיוון שגרסאות SDK משניות לא קשורות לשינויים בהתנהגות, אי אפשר להגדיר את targetSdkVersion
כך שישקף גרסת SDK משנית. אם רוצים לבצע קריאה ל-API בגרסה משנית של SDK שחדשה יותר מגרסה minSdkVersion
, צריך לבדוק את גרסת המערכת בזמן הריצה.
בדיקת גרסת המערכת בזמן הריצה
Android מספקת קוד ייחודי לכל גרסת פלטפורמה במחלקה Build
constants. משתמשים בקודים האלה באפליקציה כדי ליצור תנאים שמבטיחים שהקוד שתלוי ברמות 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); } }
אפשר להשתמש ב-Build.VERSION.SDK_INT_FULL כדי לבדוק אם קיימת גרסת SDK ראשית או משנית.
Kotlin
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) { // Use APIs introduced in a major or minor SDK release }
Java
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) { // Use APIs introduced in a major or minor SDK release }
הערה: כשמנתחים משאבי 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
attribute
לרכיב <application>
:
<application android:theme="@style/CustomTheme">
מידע נוסף על יצירה של עיצובים ושימוש בהם זמין במדריך סגנונות ועיצובים.