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

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

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

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

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

lunch aosp_cf_x86_64_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.android.aconfig.test-all",
      package: "com.android.aconfig.test",
      srcs: [
        "*_flag_values.textproto",
      ]
    }
    

    איפה:

    • name הוא השם הייחודי של מודול ה-build של Soong. Google משתמשת ב-aconfig-values-platform_PATH_TO_RELEASE_CONFIG_DIR-CONFIG-NAME-package.name-all. הערה: הערך של PATH_TO_RELEASE_CONFIG_DIR הוא build/release.
    • package מכיל את אותו שם חבילה שצוין בהצהרה.
    • srcs היא רשימה של כל הקבצים של ערכי הדגלים.
  9. שומרים את הקובץ ויוצאים מהכלי לעריכה.

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

  11. עורכים את הקובץ Android.bp. קובץ ה-build הזה מכיל רשימה של השמות (name) שמשויכים לכל קובץ של ערכי הדגלים. מוסיפים לרשימה את השם שבו השתמשתם בקובץ ה-build הקודם (שלב 8).

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