הגדרת ערכי דגלים להשקת תכונות

כברירת מחדל, כל הדגלים להשקת תכונות הם READ_WRITE ומוגדרים לערך DISABLED. כדי לבדוק תכונה, צריך ליצור קובץ ערכי דגל בשביל הדגל כדי לשנות את ערך ברירת המחדל שמשמש ב-build. בקובץ ערכי הדגלים, מגדירים את המצב של כל דגל (ENABLED או DISABLED) ואת ההרשאה (READ_WRITE או READ_ONLY).

הגדרת גרסה היא ספרייה שמכילה את כל הקבצים עם ערכי הדגלים של גרסת Android ספציפית (עם תכונות מסוימות שמופעלות ומושבתות).

‫AOSP כולל כמה הגדרות מוצר, כמו trunk_staging. ספריות של הגדרות גרסה נמצאות בתיקייה WORKING_DIRECTORY/build/release/aconfig/.

כשמשתמשים בפקודה lunch כדי לבחור יעד, מגדירים גם את הגדרת הגרסה של היעד. לדוגמה, יעד trunk_staging:

lunch aosp_cf_x86_64_only_phone-trunk_staging-userdebug

הגדרת Trunk staging היא גרסת פיתוח כי Google משתמשת בה כדי לבדוק תכונות לפני שהיא משיקה אותן לכלל המשתמשים. ההגדרה הזו משתמשת בעיקר בדגלים READ_WRITE שמאפשרים לבדוק את הקוד עם תכונות שמופעלות או מושבתות בזמן הריצה.

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

הוספת דגל להגדרת ההפצה trunk_staging

כדי לבדוק דגל חדש, מוסיפים אותו להגדרת הגרסה trunk_staging באופן הבא:

  1. ניווט אל WORKING_DIRECTORY/build/release/aconfig/trunk_staging/
  2. יוצרים ספרייה עם אותו שם חבילה כמו הדגל, לדוגמה com.example.android.aconfig.demo.flags כמו שמוצג במאמר הצהרה על דגל aconfig ל-Java.
  3. מנווטים לספרייה החדשה.
  4. בספרייה, יוצרים קובץ עם ערכי הדגל שמשלב את השם שבו השתמשתם בקובץ ההצהרה על הדגל (.aconfig), כמו my_static_flag שמופיע במאמר הצהרה על דגל aconfig ל-Java עם _flag_values.textproto. שם הקובץ שיתקבל הוא my_static_flag_flag_values.textproto.
  5. עורכים את הקובץ ומוסיפים flag_value שדומה לזה:

    flag_value {
      package: "com.example.android.aconfig.demo.flags"
      name: "my_static_flag"
      state: DISABLED
      Permission: READ_WRITE
    }
    

    כאשר:

    • package מכיל את אותו שם חבילה שמופיע בהצהרה.
    • name מכיל את אותו שם שמופיע בהצהרה.
    • state הוא ENABLED או DISABLED.
    • permission הוא READ_WRITE או READ_ONLY. בדרך כלל, הערך של permission הוא READ_ONLY בקבצים של ערכי דגלים שמהווים חלק מהגדרות של גרסת הפצה.
  6. שומרים את הקובץ ויוצאים מהעורך.

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

  8. בקובץ Android.bp, יוצרים קטע aconfig_values שדומה לזה:

    aconfig_values {
      name: "aconfig-values-platform_build_release-trunk-staging-com.example.android.aconfig.demo.flags-all",
      package: "com.example.android.aconfig.demo.flags",
      srcs: [
        "*_flag_values.textproto",
      ]
    }
    

    כאשר:

    • name הוא השם הייחודי של מודול ה-build ב-Soong. ‫Google משתמשת במוסכמה aconfig-values-platform_PATH_TO_RELEASE_CONFIG_DIR-CONFIG_NAME-package.name-all. השם הזה צריך להיות זהה לשם שנוצר אוטומטית על ידי soong על סמך ההצהרה aconfig_value_set בקובץ Android.bp של ספריית האב. חשוב לזכור: PATH_TO_RELEASE_CONFIG_DIR הוא build_release.
    • package מכיל את אותו שם חבילה שמופיע בהצהרה.
    • srcs היא רשימה של כל הקבצים עם ערכי הדגלים.
  9. שומרים את הקובץ ויוצאים מהעורך.

  10. מעבר לספרייה שמעל הספרייה הנוכחית (cd ..)

  11. מבצעים build של Android ומריצים את הקוד החדש כדי לוודא שהוא מופעל בהתאם להגדרה בקובץ ערכי הדגלים.