הכנת הספרייה לגרסה

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

בחירת מרחב שמות

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

החל מגרסה 7.0 של AGP, אפשר להגדיר את מרחב השמות בקובץ build.gradle של האפליקציה, כפי שמתואר בדוגמת הקוד הבאה:

מגניב

android {
  namespace = 'com.example.library'
}

Kotlin

android {
  namespace = "com.example.library"
}

מרחב השמות הוא מאפיין של הספרייה שמיועד למפתחים. הוא לא קשור לזהות האפליקציה, שמוגדרת באמצעות המאפיין applicationId.

בגרסאות קודמות של AGP, אפשר היה להגדיר גם את המאפיין applicationId (לאפליקציה) וגם את המאפיין namespace (לספרייה) באמצעות המאפיין package של המניפסט, מה שהוביל לבלבול.

בחירת ערך minSdkVersion

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

חשוב לשים לב לשיקולים הבאים כשבוחרים ב-minSdkVersion:

  • בחירת ערך נמוך ל-minSdkVersion מאפשרת בדרך כלל הפצה רחבה יותר של הספרייה.

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

  • בחירה בערך minSdkVersion גבוה עלולה למנוע מאפליקציות לכלול את הספרייה.

    מיזוג המניפסט, שהוא שלב ב-AGP שממזג קובצי מניפסט מהאפליקציה ומיחסי התלות שלה, אוכף שלשום יחסי תלות לא יהיה minSdkVersion גבוה יותר מהאפליקציה.

  • בחירת ערך minSdkVersion גבוה עלולה לגרום למפתחי אפליקציות להשבית את בדיקות האבטחה של מיזוג המניפסט, ולגרום לבעיות בשלב מאוחר יותר בתהליך ה-build.

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

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

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

כדי לאפשר הטמעה באפליקציות, כדאי להשתמש בהערה RequiresApi בספרייה כדי לציין למתקשרים שלה שהם צריכים לבצע בדיקות זמן ריצה. מערכת AndroidLint משתמשת במידע של RequiresApi לבדיקות שלה. למשאבים נוספים בנושא שימוש בהערות לשיפור קוד ה-API וממשקי ה-API, ראו שיפור בדיקת הקוד באמצעות הערות.

הגדרת מטא-נתונים של המלצות שמיושמות באופן אוטומטי (AAR)

ספריית Android ארוזה בקובץ Android Archive (AAR). המטא-נתונים של AAR מורכבים מנכסים שעוזרים ל-AGP לצרוך ספריות. אם הספרייה נצרכת על ידי הגדרה לא תואמת, והמטא-נתונים של AAR מוגדרים, תוצג למשתמשים הודעת שגיאה שתעזור להם לפתור את הבעיה.

בחירת ערך minCompileSdk

החל מגרסה 4.1, AGP תומך ב-minCompileSdk. זהו הערך המינימלי של compileSdk שפרויקטים צורכים יכולים להשתמש בו. אם הספרייה מכילה רשומות או משאבים של מניפסט שמשתמשים במאפייני פלטפורמה חדשים יותר, צריך להגדיר את הערך הזה.

אפשר להגדיר את הערך minCompileSdk בבלוקים defaultConfig{}, productFlavors{} ו-buildTypes{} בקובץ build.gradle ברמת המודול:

Groovy

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    foo {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

Kotlin

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    register("foo") {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

אם מגדירים את minCompileSdk במספר מקומות, Gradle מקצה עדיפות למיקומי ההגדרות באופן הבא במהלך תהליך ה-build:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

בדוגמה הקודמת, שבה minCompileSdk מוגדר גם ב-defaultConfig{} וגם ב-productFlavors{}, העדיפות ניתנת ל-productFlavors{} ו-minCompileSdk מוגדר לערך 30.

מידע נוסף על האופן שבו Gradle נותן עדיפות להגדרות כשמשלבים קוד ומשאבים זמין במאמר יצירת גרסאות build באמצעות קבוצות מקורות.

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

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

כשמפרסמים ספרייה לשימוש של אחרים, כדאי ליצור גופי בדיקה ל-API. אפשר להפעיל את ערכות הבדיקה בקובץ build.gradle ברמת המודול:

Groovy

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

כשמפעילים את ערכות הבדיקה, Gradle יוצר באופן אוטומטי קבוצת מקורות src/testFixtures שבה אפשר לכתוב ערכות בדיקה.

מידע נוסף זמין במשאבי העזרה של Gradle בנושא שימוש בציוד בדיקה.