একটি কনফিগার পতাকা ঘোষণা করুন

আপনি Java, C, C++ এবং রাস্ট কোডে একটি কনফিগারেশন ফ্ল্যাগ ব্যবহার করতে পারেন। AOSP বিল্ড সিস্টেম aconfig নামে একটি টুল চালু করে যা আপনি প্রতিটি পতাকার মান অ্যাক্সেস করতে ব্যবহার করতে পারেন এমন পদ্ধতির একটি ভাষা-নির্দিষ্ট লাইব্রেরি তৈরি করতে ব্যবহৃত হয়। আপনি লাইব্রেরি তৈরি করার আগে, আপনাকে অবশ্যই পতাকা ঘোষণা করতে হবে এবং বিল্ডে যুক্ত করতে হবে।

জাভার জন্য একটি কনফিগার পতাকা ঘোষণা করুন

জাভার জন্য একটি কনফিগার পতাকা ঘোষণা করতে:

  1. একটি ডিরেক্টরিতে যেখানে নতুন কোড বিদ্যমান, এক্সটেনশন .aconfig সহ একটি ফাইল তৈরি করুন, উদাহরণস্বরূপ, my_new_aconfig_flag_declarations.aconfig । একটি কনফিগ ফাইল হল একটি টেক্সট প্রোটো ফাইল যা একটি স্ট্যান্ডার্ড স্কিমা অনুসরণ করে।

  2. নিম্নলিখিত অনুরূপ একটি পতাকা ঘোষণা যোগ করুন:

    package: "com.example.android.aconfig.demo.flags"
    container: "system"
    
    flag {
        name: "my_new_flag"
        namespace: "aconfig_demo_namespace"
        description: "This flag controls untested code"
        bug: "<none>"
    }
    

    কোথায়:

    • package , পতাকা নামের সাথে মিলিত হলে, একটি অনন্য কী প্রদান করে। জাভাতে, foo.barpackage সেট করার ফলে foo.bar.Flags নামে একটি স্বয়ংক্রিয় জেনারেটেড ক্লাস পাওয়া যায়। C++ এ, ফ্ল্যাগ অ্যাক্সেসর পদ্ধতির নাম দেওয়া হবে foo::bar::" flagname " । একই ঘোষণা ফাইলের পতাকাগুলি একই প্যাকেজের অন্তর্গত, তবে একাধিক ঘোষণা ফাইল একই প্যাকেজে পতাকাগুলিকে অবদান রাখতে পারে।
    • container কোডের একটি সংগ্রহকে সংজ্ঞায়িত করে যা বাইনারি হিসাবে একসাথে তৈরি এবং পাঠানো হয়। বৈধ কন্টেইনারগুলি হল system , vendor , system_ext , product , name.of.apex , এবং name.of.apk

    • name শুধুমাত্র ছোট হাতের অক্ষর, আন্ডারস্কোর এবং সংখ্যা ধারণকারী পতাকার নাম ধারণ করে।

    • namespace অবদানের জন্য নামস্থান রয়েছে। আপনার নামস্থান নির্ধারণ করতে আপনাকে অবশ্যই নির্ধারিত Google পর্যালোচকের সাথে কাজ করতে হবে। আপনি যদি আপনার নিজস্ব AOSP আয়নার স্থিতিশীলতা বজায় রাখতে বৈশিষ্ট্য লঞ্চ পতাকা ব্যবহার করেন তবে আপনি আপনার পছন্দ মতো নামস্থান ব্যবহার করতে পারেন।

    • description বৈশিষ্ট্য বা পরিবর্তনের একটি সংক্ষিপ্ত বিবরণ রয়েছে যা পতাকাঙ্কিত।

    • bug হল নতুন কোড অবদানের সাথে যুক্ত বাগ নম্বর। আপনার bug নির্ধারণ করতে আপনাকে অবশ্যই নির্ধারিত Google পর্যালোচকের সাথে কাজ করতে হবে। আপনি যদি আপনার নিজস্ব AOSP মিররের স্থিতিশীলতা বজায় রাখতে বৈশিষ্ট্য লঞ্চ পতাকা ব্যবহার করেন, আপনি আপনার বাগ ট্র্যাকিং নম্বর ব্যবহার করতে পারেন বা <none> ব্যবহার করতে পারেন।

  3. ফাইলটি সংরক্ষণ করুন এবং সম্পাদক থেকে প্রস্থান করুন।

বিল্ড সেট আপ করুন

আপনি আপনার পতাকা ঘোষণা করার পরে, বিল্ড সেট আপ করুন যাতে এটি পতাকার মান অ্যাক্সেস করতে ব্যবহৃত লাইব্রেরি কোড তৈরি করতে পারে।

  1. আপনার Android.bp বিল্ড ফাইলে, নিম্নলিখিত অনুরূপ একটি aconfig_declarations বিভাগ যোগ করুন:

    aconfig_declarations {
      name: "aconfig_demo_flags",
      package: "com.example.android.aconfig.demo.flags",
      srcs: [
        "my_new_aconfig_flag_declarations.aconfig"
      ],
    }
    

    কোথায়:

    • name মধ্যে শুধুমাত্র ছোট হাতের অক্ষর, আন্ডারস্কোর এবং সংখ্যা সম্বলিত ঘোষণার নাম রয়েছে।
    • package ঘোষণায় ব্যবহৃত একই প্যাকেজ নাম রয়েছে।
    • srcs .aconfig ফাইলের নাম রয়েছে যেখানে পতাকা ঘোষণা করা হয়েছে।
  2. ফাইলটি সংরক্ষণ করুন এবং সম্পাদক থেকে প্রস্থান করুন।

C এবং C++ এর জন্য একটি কনফিগারেশন পতাকা ঘোষণা করুন

C এবং C++ এর জন্য একটি কনফিগারেশন পতাকা ঘোষণা করতে:

  1. একটি ডিরেক্টরিতে যেখানে নতুন কোড বিদ্যমান, এক্সটেনশন .aconfig সহ একটি ফাইল তৈরি করুন, উদাহরণস্বরূপ, my_new_aconfig_flag_declarations.aconfig । একটি কনফিগ ফাইল হল একটি টেক্সট প্রোটো ফাইল যা একটি স্ট্যান্ডার্ড স্কিমা অনুসরণ করে।

  2. নিম্নলিখিত অনুরূপ একটি পতাকা ঘোষণা যোগ করুন:

    package: "com.example.android.aconfig.demo.flags"
    container: "system"
    
    flag {
        name: "my_new_flag"
        namespace: "aconfig_demo_namespace"
        description: "This flag controls untested code"
        bug: "<none>"
    }
    

    কোথায়:

    • package , পতাকা নামের সাথে মিলিত হলে, একটি অনন্য কী প্রদান করে। জাভাতে, foo.barpackage সেট করার ফলে foo.bar.Flags নামে একটি স্বয়ংক্রিয় জেনারেটেড ক্লাস পাওয়া যায়। C++ এ, ফ্ল্যাগ অ্যাক্সেসর পদ্ধতির নাম দেওয়া হবে foo::bar::" flagname " । একই ঘোষণা ফাইলের পতাকাগুলি একই প্যাকেজের অন্তর্গত, তবে একাধিক ঘোষণা ফাইল একই প্যাকেজে পতাকাগুলিকে অবদান রাখতে পারে।
    • container কোডের একটি সংগ্রহকে সংজ্ঞায়িত করে যা বাইনারি হিসাবে একসাথে তৈরি এবং পাঠানো হয়। বৈধ কন্টেইনারগুলি হল system , vendor , system_ext , product , name.of.apex , এবং name.of.apk

    • name শুধুমাত্র ছোট হাতের অক্ষর, আন্ডারস্কোর এবং সংখ্যা ধারণকারী পতাকার নাম ধারণ করে।

    • namespace অবদানের জন্য নামস্থান রয়েছে। আপনার নামস্থান নির্ধারণ করতে আপনাকে অবশ্যই নির্ধারিত Google পর্যালোচকের সাথে কাজ করতে হবে। আপনি যদি আপনার নিজস্ব AOSP আয়নার স্থিতিশীলতা বজায় রাখতে বৈশিষ্ট্য লঞ্চ পতাকা ব্যবহার করেন তবে আপনি আপনার পছন্দ মতো নামস্থান ব্যবহার করতে পারেন।

    • description বৈশিষ্ট্য বা পরিবর্তনের একটি সংক্ষিপ্ত বিবরণ রয়েছে যা পতাকাঙ্কিত।

    • bug হল নতুন কোড অবদানের সাথে যুক্ত বাগ নম্বর। আপনার bug নির্ধারণ করতে আপনাকে অবশ্যই নির্ধারিত Google পর্যালোচকের সাথে কাজ করতে হবে। আপনি যদি আপনার নিজস্ব AOSP মিররের স্থিতিশীলতা বজায় রাখতে বৈশিষ্ট্য লঞ্চ পতাকা ব্যবহার করেন, আপনি আপনার বাগ ট্র্যাকিং নম্বর ব্যবহার করতে পারেন বা <none> ব্যবহার করতে পারেন।

  3. ফাইলটি সংরক্ষণ করুন এবং সম্পাদক থেকে প্রস্থান করুন।

বিল্ড সেট আপ করুন

আপনি আপনার পতাকা ঘোষণা করার পরে, বিল্ড সেট আপ করুন যাতে এটি পতাকার মান অ্যাক্সেস করতে ব্যবহৃত লাইব্রেরি কোড তৈরি করতে পারে।

  1. আপনার Android.bp বিল্ড ফাইলে, নিম্নলিখিত অনুরূপ একটি aconfig_declarations বিভাগ যোগ করুন:

    aconfig_declarations {
      name: "aconfig_demo_flags",
      package: "com.example.android.aconfig.demo.flags",
      srcs: [
        "my_new_aconfig_flag_declarations.aconfig"
      ],
    }
    

    কোথায়:

    • name মধ্যে শুধুমাত্র ছোট হাতের অক্ষর, আন্ডারস্কোর এবং সংখ্যা সম্বলিত ঘোষণার নাম রয়েছে।
    • package ঘোষণায় ব্যবহৃত একই প্যাকেজ নাম রয়েছে।
    • srcs aconfig ফাইলের নাম থাকে যেখানে পতাকা ঘোষণা করা হয়।
  2. একই ফাইলে, নিম্নলিখিতগুলির মতো একটি cc_aconfig_library লক্ষ্য তৈরি করুন:

    cc_aconfig_library {
        name: "aconfig_demo_flags_c_lib",
        aconfig_declarations: "aconfig_demo_flags",
    }
    

    কোথায়:

    • name শুধুমাত্র ছোট হাতের অক্ষর, আন্ডারস্কোর এবং সংখ্যা ধারণকারী লাইব্রেরির নাম ধারণ করে।
    • aconfig_declarations ঘোষণায় ব্যবহৃত একই name রয়েছে।

    cc_aconfig_library বিল্ড টার্গেট C বা C++ কোডজেনকে আহ্বান করে, যা বিল্ড টাইমে জেনারেট করা কোড দিয়ে একটি লাইব্রেরি তৈরি করে।

    CC aconfig লাইব্রেরিটি একটি CC লাইব্রেরি টার্গেটের অনুরূপ, কিন্তু এতে vendor_available , product_available , host_supported , এবং vndk মত বিকল্প রয়েছে। যদি এই cc_aconfig_library উপর নির্ভর করে বিল্ড টার্গেটের জন্য নির্দিষ্ট ধরনের ভেরিয়েন্টের প্রয়োজন হয়, তাহলে আপনাকে CC aconfig লাইব্রেরি টার্গেটে সংশ্লিষ্ট সেটিং যোগ করতে হতে পারে। উদাহরণ স্বরূপ, যদি প্যারেন্ট বিল্ড টার্গেটে vendor_available সেট করা থাকে true , true আপনি এই cc_aconfig_library টার্গেটে vendor_available সেট করতে চাইতে পারেন।

    এই বিল্ড টার্গেট যোগ করার পরে, আপনার কোড এই লাইব্রেরি অ্যাক্সেস করতে পারে। আপনি static_lib বা shared_lib সিনট্যাক্স ব্যবহার করে এই লাইব্রেরি অন্তর্ভুক্ত করতে পারেন। মনে রাখবেন আপনি যদি এই লাইব্রেরিটিকে একটি static_lib হিসেবে যোগ করতে চান, server_configurable_flags এ একটি shared_lib নির্ভরতা যোগ করুন। ধাপ 3 দেখায় কিভাবে কোড জেনারেটেড ফ্ল্যাগ লাইব্রেরি libexample_cpp_lib এ অন্তর্ভুক্ত করতে হয়।

  3. একটি টার্গেট তৈরি করুন যা aconfig পতাকা ব্যবহার করে, যেমন নিম্নলিখিত উদাহরণ cc_library :

    cc_library {
        name: "libexample_cpp_lib",
        srcs: ["src/example_cpp_lib.cc"],
        double_loadable: true,
        cflags: [
            "-Wall",
            "-Werror",
            "-Wno-unused-function",
            "-Wno-unused-parameter",
        ],
        header_libs: [
            "jni_headers",
        ],
        shared_libs: [
            "server_configurable_flags",
        ],
        static_libs: [
            "aconfig_demo_flags_c_lib",
        ],
        export_include_dirs: ["src/include"],
    }
    

    কোথায়:

    • shared_libs কনফিগ পতাকার জন্য প্রয়োজনীয় অতিরিক্ত নির্ভরতা অন্তর্ভুক্ত করে।
    • static_libs হল লাইব্রেরির নাম যা ধাপ 2-এ cc_aconfig_library name ক্ষেত্রে বিল্ড দ্বারা তৈরি করা হয়েছে। স্ট্যাটিক লাইব্রেরি নামের সাথে একটি cc_library এন্ট্রি তৈরি করে, আপনি এখন আপনার কোডে aconfig ফ্ল্যাগ ব্যবহার করতে পারেন।

মরিচা জন্য একটি কনফিগার পতাকা ঘোষণা

মরিচা জন্য একটি কনফিগার পতাকা ঘোষণা করতে:

  1. একটি ডিরেক্টরিতে যেখানে নতুন কোড বিদ্যমান, এক্সটেনশন .aconfig সহ একটি ফাইল তৈরি করুন, উদাহরণস্বরূপ, my_new_aconfig_flag_declarations.aconfig । একটি কনফিগ ফাইল হল একটি টেক্সট প্রোটো ফাইল যা একটি স্ট্যান্ডার্ড স্কিমা অনুসরণ করে।

  2. নিম্নলিখিত অনুরূপ একটি পতাকা ঘোষণা যোগ করুন:

    package: "com.example.android.aconfig.demo.flags"
    container: "system"
    
    flag {
        name: "my_new_flag"
        namespace: "aconfig_demo_namespace"
        description: "This flag controls untested code"
        bug: "<none>"
    }
    

    কোথায়:

    • package , পতাকা নামের সাথে মিলিত হলে, একটি অনন্য কী প্রদান করে। জাভাতে, foo.barpackage সেট করার ফলে foo.bar.Flags নামে একটি স্বয়ংক্রিয় জেনারেটেড ক্লাস পাওয়া যায়। C++ এ, ফ্ল্যাগ অ্যাক্সেসর পদ্ধতির নাম দেওয়া হবে foo::bar::" flagname " । একই ঘোষণা ফাইলের পতাকাগুলি একই প্যাকেজের অন্তর্গত, তবে একাধিক ঘোষণা ফাইল একই প্যাকেজে পতাকাগুলিকে অবদান রাখতে পারে।
    • container কোডের একটি সংগ্রহকে সংজ্ঞায়িত করে যা বাইনারি হিসাবে একসাথে তৈরি এবং পাঠানো হয়। বৈধ কন্টেইনারগুলি হল system , vendor , system_ext , product , name.of.apex , এবং name.of.apk

    • name শুধুমাত্র ছোট হাতের অক্ষর, আন্ডারস্কোর এবং সংখ্যা ধারণকারী পতাকার নাম ধারণ করে।

    • namespace অবদানের জন্য নামস্থান রয়েছে। আপনার নামস্থান নির্ধারণ করতে আপনাকে অবশ্যই নির্ধারিত Google পর্যালোচকের সাথে কাজ করতে হবে। আপনি যদি আপনার নিজস্ব AOSP আয়নার স্থিতিশীলতা বজায় রাখতে বৈশিষ্ট্য লঞ্চ পতাকা ব্যবহার করেন তবে আপনি আপনার পছন্দ মতো নামস্থান ব্যবহার করতে পারেন।

    • description বৈশিষ্ট্য বা পরিবর্তনের একটি সংক্ষিপ্ত বিবরণ রয়েছে যা পতাকাঙ্কিত।

    • bug হল নতুন কোড অবদানের সাথে যুক্ত বাগ নম্বর। আপনার bug নির্ধারণ করতে আপনাকে অবশ্যই নির্ধারিত Google পর্যালোচকের সাথে কাজ করতে হবে। আপনি যদি আপনার নিজস্ব AOSP মিররের স্থিতিশীলতা বজায় রাখতে বৈশিষ্ট্য লঞ্চ পতাকা ব্যবহার করেন, আপনি আপনার বাগ ট্র্যাকিং নম্বর ব্যবহার করতে পারেন বা <none> ব্যবহার করতে পারেন।

  3. ফাইলটি সংরক্ষণ করুন এবং সম্পাদক থেকে প্রস্থান করুন।

বিল্ড সেট আপ করুন

আপনি আপনার পতাকা ঘোষণা করার পরে, বিল্ড সেট আপ করুন যাতে এটি পতাকার মান অ্যাক্সেস করতে ব্যবহৃত লাইব্রেরি কোড তৈরি করতে পারে।

  1. আপনার Android.bp বিল্ড ফাইলে, নিম্নলিখিত অনুরূপ একটি aconfig_declarations বিভাগ যোগ করুন:

    aconfig_declarations {
      name: "aconfig_demo_flags",
      package: "com.example.android.aconfig.demo.flags",
      srcs: [
        "my_new_aconfig_flag_declarations.aconfig"
      ],
    }
    

    কোথায়:

    • name মধ্যে শুধুমাত্র ছোট হাতের অক্ষর, আন্ডারস্কোর এবং সংখ্যা সম্বলিত ঘোষণার নাম রয়েছে।
    • package ঘোষণায় ব্যবহৃত একই প্যাকেজ নাম রয়েছে।
    • srcs aconfig ফাইলের নাম থাকে যেখানে পতাকা ঘোষণা করা হয়।
  2. পরবর্তী উদাহরণের মতো একটি rust_aconfig_library টার্গেট তৈরি করুন। এই টার্গেটটি রাস্ট কোডজেনকে আহ্বান করে এবং বিল্ড টাইমে জেনারেট করা কোড সহ একটি মরিচা লাইব্রেরি তৈরি করে।

    rust_aconfig_library {
      name: "libaconfig_demo_flags_rust",
      crate_name: "aconfig_demo_flags_rust",
      aconfig_declarations: "aconfig_demo_flags",
    }
    

    কোথায়:

    • name মধ্যে শুধুমাত্র ছোট হাতের অক্ষর, আন্ডারস্কোর এবং সংখ্যা সম্বলিত ঘোষণার নাম রয়েছে।
    • crate_name ঘোষণায় ব্যবহৃত একই প্যাকেজ নাম রয়েছে।
    • aconfig_declarations ঘোষণায় ব্যবহৃত একই name রয়েছে।

    এই পরিবর্তনের সাথে, আপনার কোড এই মরিচা লাইব্রেরির উপর নির্ভর করতে পারে।

  3. একই ফাইলে, নিম্নলিখিতগুলির মতো একটি rust_library এন্ট্রি তৈরি করুন:

    rust_library {
      name: "libexample_lib",
      rustlibs: [
          "libaconfig_demo_flags_rust",
      ]
    }
    

    এই নমুনাটি আপনার সোর্স কোড বিল্ড টার্গেট libexample_demo_flags_rust কোড জেনারেটেড ফ্ল্যাগ লাইব্রেরি অন্তর্ভুক্ত করার অনুমতি দেয়।

  4. ফাইলটি সংরক্ষণ করুন এবং সম্পাদক থেকে প্রস্থান করুন।