আপনি 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ঘোষণায় ব্যবহৃত একই প্যাকেজ নাম রয়েছে। -
srcsaconfig ফাইলের নাম থাকে যেখানে পতাকা ঘোষণা করা হয়।
-
একই ফাইলে, নিম্নলিখিতগুলির মতো একটি
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, তাহলে আপনি এইcc_aconfig_libraryটার্গেটেvendor_availabletrueকরতে চাইতে পারেন।এই বিল্ড টার্গেট যোগ করার পরে, আপনার কোড এই লাইব্রেরি অ্যাক্সেস করতে পারে। আপনি
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_librarynameক্ষেত্রে বিল্ড দ্বারা তৈরি করা হয়েছে। স্ট্যাটিক লাইব্রেরি নামের সাথে একটি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ঘোষণায় ব্যবহৃত একই প্যাকেজ নাম রয়েছে। -
srcsaconfig ফাইলের নাম থাকে যেখানে পতাকা ঘোষণা করা হয়।
-
পরবর্তী উদাহরণের মতো একটি
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কোড জেনারেটেড ফ্ল্যাগ লাইব্রেরি অন্তর্ভুক্ত করার অনুমতি দেয়।ফাইলটি সংরক্ষণ করুন এবং সম্পাদক থেকে প্রস্থান করুন।