اعلام کنید و از یک build flag استفاده کنید

پرچم‌های ساخت ثابت‌های زمان ساخت هستند و نمی‌توان آنها را در زمان اجرا تغییر داد. این پرچم ها در شرایطی استفاده می شوند که از پرچم های aconfig نمی توان استفاده کرد، مانند

  • شما یک قطعه کد از پیش کامپایل شده یا از پیش ساخته شده دارید که می خواهید به صورت اختیاری در یک بیلد قرار دهید.
  • شما می خواهید تغییراتی ایجاد کنید تا خود سیستم را بسازید.
  • شما می خواهید پرچم هایی را در اطراف وابستگی ها قرار دهید تا اندازه کد را مدیریت کنید.
  • شما می‌خواهید راه‌اندازی یک ویژگی را مدیریت کنید، اما قبل از اینکه پرچم‌های aconfig توسط سیستم در دسترس قرار گیرند، باید مقدار پرچم را بررسی کنید.

پرچم ساخت را اعلام کنید

پرچم های ساخت در فایل های textproto اعلان می شوند. برای اعلام پرچم ساخت:

  1. به WORKING_DIRECTORY /build/release/flag_declarations/ بروید
  2. فایلی به نام RELEASE_ MY_FLAG_NAME .textproto ایجاد کنید.
  3. فایل را ویرایش کنید و یک ورودی شبیه به زیر اضافه کنید:

    name: "RELEASE_MY_FLAG_NAME"
    namespace: "android_UNKNOWN"
    description: "Control if we should read from new storage."
    workflow: LAUNCH
    containers: "product"
    containers: "system"
    containers: "system_ext"
    containers: "vendor"
    

    کجا:

    • name حاوی نام پرچم قبل از RELEASE_ است. فقط حروف بزرگ و زیرخط مجاز هستند.
    • namespace حاوی فضای نامی برای مشارکت است. برای تعیین فضای نام خود باید با بازبین Google اختصاص داده شده کار کنید. اگر از پرچم‌های راه‌اندازی ویژگی برای حفظ ثبات آینه AOSP خود استفاده می‌کنید، می‌توانید از فضای نام هر طور که دوست دارید استفاده کنید.
    • value نوع و مقدار اولیه برای پرچم است. نوع می تواند bool_value یا string_value باشد. اگر نوع string_value است، مقدار باید در گیومه باشد. اگر مشخص نشده باشد، مقدار یک رشته خالی است. مقادیر بولی به صورت true یا رشته خالی برای false نمایش داده می شوند.
    • workflow یا LAUNCH یا PREBUILT است. از LAUNCH برای پرچم‌های بولی که از false به true پیش می‌روند، مشابه پرچم‌های راه‌اندازی ویژگی استفاده کنید. از PREBUILT برای پرچم هایی که یک نسخه را تنظیم می کنند، معمولاً یک نسخه از پیش ساخته شده، استفاده کنید.
    • containers نوع کدی است که می نویسید، مانند "فروشنده" برای کد فروشنده یا "محصول" برای کد محصول. اگر در مورد ارزش استفاده شک دارید، از هر چهار نوع کانتینر همانطور که در نمونه قبلی نشان داده شده است استفاده کنید.

از build flag در فایل Soong استفاده کنید

در فایل ساخت و ماژول که می‌خواهید مقدار پرچم را پرس و جو کنید، از یک شرطی برای انشعاب روی مقدار پرچم استفاده کنید. به عنوان مثال، در قطعه زیر، مقدار پرچم RELEASE__READ_FROM_NEW_STORAGE پرس و جو شده است:

cc_defaults {
  name: "aconfig_lib_cc_shared_link.defaults",
  shared_libs: select(release_flag("RELEASE_READ_FROM_NEW_STORAGE"), {
    true: ["libaconfig_storage_read_api_cc],
    default: [],
  }),
}

اگر مقدار این پرچم true باشد، ماژول libaconfig_storage_read_api_cc به صورت پویا به ماژول cc_defaults مرتبط می شود.

اگر مقدار این پرچم false باشد، هیچ چیز ( default: [], ) اتفاق نمی‌افتد.

از build flag در makefile استفاده کنید

در فایل make، پرچم ساخت یک متغیر ساخت فقط خواندنی است. نمونه makefile زیر به یک پرچم ساخت به نام RELEASED_PACKAGE_NFC_STCK دسترسی دارد:

# NFC and Secure Element packages
PRODUCT_PACKAGES += \
    $(RELEASE_PACKAGE_NFC_STACK) \
    Tag \
    SecureElement \
    android.hardware.nfc-service.st \
    android.hardware.secure_element@1.0-service.st \
    NfcOverlayCoral

اعلامیه این پرچم دارای یک فیلد workflow است که در RELEASE_PACKAGE_NFC_STACK.textproto روی PREBUILT تنظیم شده است و یک مقدار رشته ای از com.android.nfcservices RELEASE_PACKAGE_NFC_STACK.textproto فایل مقادیر پرچم برای پیکربندی توسعه trunk_staging .

،

پرچم‌های ساخت ثابت‌های زمان ساخت هستند و نمی‌توان آنها را در زمان اجرا تغییر داد. این پرچم ها در شرایطی استفاده می شوند که از پرچم های aconfig نمی توان استفاده کرد، مانند

  • شما یک قطعه کد از پیش کامپایل شده یا از پیش ساخته شده دارید که می خواهید به صورت اختیاری در یک بیلد قرار دهید.
  • شما می خواهید تغییراتی ایجاد کنید تا خود سیستم را بسازید.
  • شما می خواهید پرچم هایی را در اطراف وابستگی ها قرار دهید تا اندازه کد را مدیریت کنید.
  • شما می‌خواهید راه‌اندازی یک ویژگی را مدیریت کنید، اما قبل از اینکه پرچم‌های aconfig توسط سیستم در دسترس قرار گیرند، باید مقدار پرچم را بررسی کنید.

پرچم ساخت را اعلام کنید

پرچم های ساخت در فایل های textproto اعلان می شوند. برای اعلام پرچم ساخت:

  1. به WORKING_DIRECTORY /build/release/flag_declarations/ بروید
  2. فایلی به نام RELEASE_ MY_FLAG_NAME .textproto ایجاد کنید.
  3. فایل را ویرایش کنید و یک ورودی شبیه به زیر اضافه کنید:

    name: "RELEASE_MY_FLAG_NAME"
    namespace: "android_UNKNOWN"
    description: "Control if we should read from new storage."
    workflow: LAUNCH
    containers: "product"
    containers: "system"
    containers: "system_ext"
    containers: "vendor"
    

    کجا:

    • name حاوی نام پرچم قبل از RELEASE_ است. فقط حروف بزرگ و زیرخط مجاز هستند.
    • namespace حاوی فضای نامی برای مشارکت است. برای تعیین فضای نام خود باید با بازبین Google اختصاص داده شده کار کنید. اگر از پرچم‌های راه‌اندازی ویژگی برای حفظ ثبات آینه AOSP خود استفاده می‌کنید، می‌توانید از فضای نام هر طور که دوست دارید استفاده کنید.
    • value نوع و مقدار اولیه برای پرچم است. نوع می تواند bool_value یا string_value باشد. اگر نوع string_value است، مقدار باید در گیومه باشد. اگر مشخص نشده باشد، مقدار یک رشته خالی است. مقادیر بولی به صورت true یا رشته خالی برای false نمایش داده می شوند.
    • workflow یا LAUNCH یا PREBUILT است. از LAUNCH برای پرچم‌های بولی که از false به true پیش می‌روند، مشابه پرچم‌های راه‌اندازی ویژگی استفاده کنید. از PREBUILT برای پرچم هایی که یک نسخه را تنظیم می کنند، معمولاً یک نسخه از پیش ساخته شده، استفاده کنید.
    • containers نوع کدی است که می نویسید، مانند "فروشنده" برای کد فروشنده یا "محصول" برای کد محصول. اگر در مورد ارزش استفاده شک دارید، از هر چهار نوع کانتینر همانطور که در نمونه قبلی نشان داده شده است استفاده کنید.

از build flag در فایل Soong استفاده کنید

در فایل ساخت و ماژول که می‌خواهید مقدار پرچم را پرس و جو کنید، از یک شرطی برای انشعاب روی مقدار پرچم استفاده کنید. به عنوان مثال، در قطعه زیر، مقدار پرچم RELEASE__READ_FROM_NEW_STORAGE پرس و جو شده است:

cc_defaults {
  name: "aconfig_lib_cc_shared_link.defaults",
  shared_libs: select(release_flag("RELEASE_READ_FROM_NEW_STORAGE"), {
    true: ["libaconfig_storage_read_api_cc],
    default: [],
  }),
}

اگر مقدار این پرچم true باشد، ماژول libaconfig_storage_read_api_cc به صورت پویا به ماژول cc_defaults مرتبط می شود.

اگر مقدار این پرچم false باشد، هیچ چیز ( default: [], ) اتفاق نمی‌افتد.

از build flag در makefile استفاده کنید

در فایل make، پرچم ساخت یک متغیر ساخت فقط خواندنی است. نمونه makefile زیر به یک پرچم ساخت به نام RELEASED_PACKAGE_NFC_STCK دسترسی دارد:

# NFC and Secure Element packages
PRODUCT_PACKAGES += \
    $(RELEASE_PACKAGE_NFC_STACK) \
    Tag \
    SecureElement \
    android.hardware.nfc-service.st \
    android.hardware.secure_element@1.0-service.st \
    NfcOverlayCoral

اعلامیه این پرچم دارای یک فیلد workflow است که در RELEASE_PACKAGE_NFC_STACK.textproto روی PREBUILT تنظیم شده است و یک مقدار رشته ای از com.android.nfcservices RELEASE_PACKAGE_NFC_STACK.textproto فایل مقادیر پرچم برای پیکربندی توسعه trunk_staging .

،

پرچم‌های ساخت ثابت‌های زمان ساخت هستند و نمی‌توان آنها را در زمان اجرا تغییر داد. این پرچم ها در شرایطی استفاده می شوند که از پرچم های aconfig نمی توان استفاده کرد، مانند

  • شما یک قطعه کد از پیش کامپایل شده یا از پیش ساخته شده دارید که می خواهید به صورت اختیاری در یک بیلد قرار دهید.
  • شما می خواهید تغییراتی ایجاد کنید تا خود سیستم را بسازید.
  • شما می خواهید پرچم هایی را در اطراف وابستگی ها قرار دهید تا اندازه کد را مدیریت کنید.
  • شما می‌خواهید راه‌اندازی یک ویژگی را مدیریت کنید، اما قبل از اینکه پرچم‌های aconfig توسط سیستم در دسترس قرار گیرند، باید مقدار پرچم را بررسی کنید.

پرچم ساخت را اعلام کنید

پرچم های ساخت در فایل های textproto اعلان می شوند. برای اعلام پرچم ساخت:

  1. به WORKING_DIRECTORY /build/release/flag_declarations/ بروید
  2. فایلی به نام RELEASE_ MY_FLAG_NAME .textproto ایجاد کنید.
  3. فایل را ویرایش کنید و یک ورودی شبیه به زیر اضافه کنید:

    name: "RELEASE_MY_FLAG_NAME"
    namespace: "android_UNKNOWN"
    description: "Control if we should read from new storage."
    workflow: LAUNCH
    containers: "product"
    containers: "system"
    containers: "system_ext"
    containers: "vendor"
    

    کجا:

    • name حاوی نام پرچم قبل از RELEASE_ است. فقط حروف بزرگ و زیرخط مجاز هستند.
    • namespace حاوی فضای نامی برای مشارکت است. برای تعیین فضای نام خود باید با بازبین Google اختصاص داده شده کار کنید. اگر از پرچم‌های راه‌اندازی ویژگی برای حفظ ثبات آینه AOSP خود استفاده می‌کنید، می‌توانید از فضای نام هر طور که دوست دارید استفاده کنید.
    • value نوع و مقدار اولیه برای پرچم است. نوع می تواند bool_value یا string_value باشد. اگر نوع string_value است، مقدار باید در گیومه باشد. اگر مشخص نشده باشد، مقدار یک رشته خالی است. مقادیر بولی به صورت true یا رشته خالی برای false نمایش داده می شوند.
    • workflow یا LAUNCH یا PREBUILT است. از LAUNCH برای پرچم‌های بولی که از false به true پیش می‌روند، مشابه پرچم‌های راه‌اندازی ویژگی استفاده کنید. از PREBUILT برای پرچم هایی که یک نسخه را تنظیم می کنند، معمولاً یک نسخه از پیش ساخته شده، استفاده کنید.
    • containers نوع کدی است که می نویسید، مانند "فروشنده" برای کد فروشنده یا "محصول" برای کد محصول. اگر در مورد ارزش استفاده شک دارید، از هر چهار نوع کانتینر همانطور که در نمونه قبلی نشان داده شده است استفاده کنید.

از build flag در فایل Soong استفاده کنید

در فایل ساخت و ماژول که می‌خواهید مقدار پرچم را پرس و جو کنید، از یک شرطی برای انشعاب روی مقدار پرچم استفاده کنید. به عنوان مثال، در قطعه زیر، مقدار پرچم RELEASE__READ_FROM_NEW_STORAGE پرس و جو شده است:

cc_defaults {
  name: "aconfig_lib_cc_shared_link.defaults",
  shared_libs: select(release_flag("RELEASE_READ_FROM_NEW_STORAGE"), {
    true: ["libaconfig_storage_read_api_cc],
    default: [],
  }),
}

اگر مقدار این پرچم true باشد، ماژول libaconfig_storage_read_api_cc به صورت پویا به ماژول cc_defaults مرتبط می شود.

اگر مقدار این پرچم false باشد، هیچ چیز ( default: [], ) اتفاق نمی‌افتد.

از build flag در makefile استفاده کنید

در فایل make، پرچم ساخت یک متغیر ساخت فقط خواندنی است. نمونه makefile زیر به یک پرچم ساخت به نام RELEASED_PACKAGE_NFC_STCK دسترسی دارد:

# NFC and Secure Element packages
PRODUCT_PACKAGES += \
    $(RELEASE_PACKAGE_NFC_STACK) \
    Tag \
    SecureElement \
    android.hardware.nfc-service.st \
    android.hardware.secure_element@1.0-service.st \
    NfcOverlayCoral

اعلامیه این پرچم دارای یک فیلد workflow است که در RELEASE_PACKAGE_NFC_STACK.textproto روی PREBUILT تنظیم شده است و یک مقدار رشته ای از com.android.nfcservices RELEASE_PACKAGE_NFC_STACK.textproto فایل مقادیر پرچم برای پیکربندی توسعه trunk_staging .