আপনি Java, C, C++ এবং রাস্ট কোডে একটি কনফিগারেশন ফ্ল্যাগ ব্যবহার করতে পারেন। AOSP বিল্ড সিস্টেম aconfig নামে একটি টুল চালু করে যা আপনি প্রতিটি পতাকার মান অ্যাক্সেস করতে ব্যবহার করতে পারেন এমন পদ্ধতির একটি ভাষা-নির্দিষ্ট লাইব্রেরি তৈরি করতে ব্যবহৃত হয়। আপনি লাইব্রেরি তৈরি করার আগে, আপনাকে অবশ্যই পতাকা ঘোষণা করতে হবে এবং বিল্ডে যুক্ত করতে হবে।
জাভার জন্য একটি কনফিগার পতাকা ঘোষণা করুন
জাভার জন্য একটি কনফিগার পতাকা ঘোষণা করতে:
একটি ডিরেক্টরিতে যেখানে নতুন কোড বিদ্যমান, এক্সটেনশন
.aconfig
সহ একটি ফাইল তৈরি করুন, উদাহরণস্বরূপ,my_new_aconfig_flag_declarations.aconfig
। একটি কনফিগ ফাইল হল একটি টেক্সট প্রোটো ফাইল যা একটি স্ট্যান্ডার্ড স্কিমা অনুসরণ করে।নিম্নলিখিত অনুরূপ একটি পতাকা ঘোষণা যোগ করুন:
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.bar
এpackage
সেট করার ফলে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>
ব্যবহার করতে পারেন।
-
ফাইলটি সংরক্ষণ করুন এবং সম্পাদক থেকে প্রস্থান করুন।
বিল্ড সেট আপ করুন
আপনি আপনার পতাকা ঘোষণা করার পরে, বিল্ড সেট আপ করুন যাতে এটি পতাকার মান অ্যাক্সেস করতে ব্যবহৃত লাইব্রেরি কোড তৈরি করতে পারে।
আপনার
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
ফাইলের নাম রয়েছে যেখানে পতাকা ঘোষণা করা হয়েছে।
-
ফাইলটি সংরক্ষণ করুন এবং সম্পাদক থেকে প্রস্থান করুন।
C এবং C++ এর জন্য একটি কনফিগারেশন পতাকা ঘোষণা করুন
C এবং C++ এর জন্য একটি কনফিগারেশন পতাকা ঘোষণা করতে:
একটি ডিরেক্টরিতে যেখানে নতুন কোড বিদ্যমান, এক্সটেনশন
.aconfig
সহ একটি ফাইল তৈরি করুন, উদাহরণস্বরূপ,my_new_aconfig_flag_declarations.aconfig
। একটি কনফিগ ফাইল হল একটি টেক্সট প্রোটো ফাইল যা একটি স্ট্যান্ডার্ড স্কিমা অনুসরণ করে।নিম্নলিখিত অনুরূপ একটি পতাকা ঘোষণা যোগ করুন:
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.bar
এpackage
সেট করার ফলে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>
ব্যবহার করতে পারেন।
-
ফাইলটি সংরক্ষণ করুন এবং সম্পাদক থেকে প্রস্থান করুন।
বিল্ড সেট আপ করুন
আপনি আপনার পতাকা ঘোষণা করার পরে, বিল্ড সেট আপ করুন যাতে এটি পতাকার মান অ্যাক্সেস করতে ব্যবহৃত লাইব্রেরি কোড তৈরি করতে পারে।
আপনার
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 ফাইলের নাম থাকে যেখানে পতাকা ঘোষণা করা হয়।
-
একই ফাইলে, নিম্নলিখিতগুলির মতো একটি
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
এ অন্তর্ভুক্ত করতে হয়।-
একটি টার্গেট তৈরি করুন যা 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 ফ্ল্যাগ ব্যবহার করতে পারেন।
-
মরিচা জন্য একটি কনফিগার পতাকা ঘোষণা
মরিচা জন্য একটি কনফিগার পতাকা ঘোষণা করতে:
একটি ডিরেক্টরিতে যেখানে নতুন কোড বিদ্যমান, এক্সটেনশন
.aconfig
সহ একটি ফাইল তৈরি করুন, উদাহরণস্বরূপ,my_new_aconfig_flag_declarations.aconfig
। একটি কনফিগ ফাইল হল একটি টেক্সট প্রোটো ফাইল যা একটি স্ট্যান্ডার্ড স্কিমা অনুসরণ করে।নিম্নলিখিত অনুরূপ একটি পতাকা ঘোষণা যোগ করুন:
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.bar
এpackage
সেট করার ফলে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>
ব্যবহার করতে পারেন।
-
ফাইলটি সংরক্ষণ করুন এবং সম্পাদক থেকে প্রস্থান করুন।
বিল্ড সেট আপ করুন
আপনি আপনার পতাকা ঘোষণা করার পরে, বিল্ড সেট আপ করুন যাতে এটি পতাকার মান অ্যাক্সেস করতে ব্যবহৃত লাইব্রেরি কোড তৈরি করতে পারে।
আপনার
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 ফাইলের নাম থাকে যেখানে পতাকা ঘোষণা করা হয়।
-
পরবর্তী উদাহরণের মতো একটি
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
রয়েছে।
এই পরিবর্তনের সাথে, আপনার কোড এই মরিচা লাইব্রেরির উপর নির্ভর করতে পারে।
-
একই ফাইলে, নিম্নলিখিতগুলির মতো একটি
rust_library
এন্ট্রি তৈরি করুন:rust_library { name: "libexample_lib", rustlibs: [ "libaconfig_demo_flags_rust", ] }
এই নমুনাটি আপনার সোর্স কোড বিল্ড টার্গেট
libexample_demo_flags_rust
কোড জেনারেটেড ফ্ল্যাগ লাইব্রেরি অন্তর্ভুক্ত করার অনুমতি দেয়।ফাইলটি সংরক্ষণ করুন এবং সম্পাদক থেকে প্রস্থান করুন।