সামঞ্জস্যপূর্ণ কাঠামোর সরঞ্জাম

অ্যান্ড্রয়েড 11 অ্যান্ড্রয়েড প্ল্যাটফর্মের নতুন সংস্করণে আচরণ পরিবর্তনের বিরুদ্ধে আপনার অ্যাপ পরীক্ষা এবং ডিবাগ করার জন্য নতুন বিকাশকারী সরঞ্জামগুলি প্রবর্তন করেছে। এই সরঞ্জামগুলি একটি সামঞ্জস্যপূর্ণ কাঠামোর অংশ যা অ্যাপ বিকাশকারীদের বিকাশকারী বিকল্পগুলি বা ADB ব্যবহার করে পৃথকভাবে ব্রেকিং পরিবর্তনগুলি চালু এবং বন্ধ করতে দেয়৷ আপনি সর্বশেষ স্থিতিশীল API সংস্করণকে লক্ষ্য করার জন্য এবং পরবর্তী Android সংস্করণের পূর্বরূপ প্রকাশের সাথে আপনার অ্যাপ পরীক্ষা করার সময় এই নমনীয়তা ব্যবহার করুন৷

আপনি যখন সামঞ্জস্যপূর্ণ ফ্রেমওয়ার্ক সরঞ্জামগুলি ব্যবহার করেন, তখন Android প্ল্যাটফর্ম স্বয়ংক্রিয়ভাবে তার অভ্যন্তরীণ যুক্তিকে মানিয়ে নেয়, তাই আপনাকে আপনার targetSDKVersion পরিবর্তন করতে হবে না বা মৌলিক পরীক্ষা করার জন্য আপনার অ্যাপটি পুনরায় সংকলন করতে হবে না। যেহেতু পরিবর্তনগুলি পৃথকভাবে টগলযোগ্য, আপনি একটি সময়ে একটি আচরণের পরিবর্তনকে বিচ্ছিন্ন করতে, পরীক্ষা করতে এবং ডিবাগ করতে পারেন বা একটি একক পরিবর্তন অক্ষম করতে পারেন যা সমস্যা সৃষ্টি করছে যদি আপনাকে প্রথমে অন্য কিছু পরীক্ষা করতে হয়।

কোন পরিবর্তনগুলি সক্রিয় করা হয়েছে তা কীভাবে সনাক্ত করবেন

যখন একটি আচরণ পরিবর্তন সক্ষম করা হয়, তখন এটি প্রভাবিত করতে পারে যে কীভাবে আপনার অ্যাপ সেই পরিবর্তনের দ্বারা প্রভাবিত প্ল্যাটফর্ম APIগুলি অ্যাক্সেস করে। আপনি বিকাশকারী বিকল্প, লগক্যাট বা ADB কমান্ড ব্যবহার করে কোন আচরণ পরিবর্তনগুলি সক্ষম করা হয়েছে তা পরীক্ষা করতে পারেন।

বিকাশকারী বিকল্পগুলি ব্যবহার করে সক্রিয় পরিবর্তনগুলি সনাক্ত করুন৷

চিত্র 1. অ্যাপ সামঞ্জস্যতা বিকাশকারী বিকল্পগুলিতে স্ক্রীন পরিবর্তন করে।

আপনি কোন পরিবর্তনগুলি সক্ষম করা আছে তা দেখতে পারেন এবং ডিভাইসের বিকাশকারী বিকল্পগুলিতে সেই পরিবর্তনগুলিকে চালু বা বন্ধ করতে টগল করতে পারেন ৷ এই বিকল্পগুলি অ্যাক্সেস করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. যদি বিকাশকারী বিকল্পগুলি ইতিমধ্যে সক্ষম না থাকে তবে সেগুলি সক্ষম করুন
  2. আপনার ডিভাইসের সেটিংস অ্যাপ খুলুন এবং সিস্টেম > অ্যাডভান্সড > বিকাশকারী বিকল্প > অ্যাপ সামঞ্জস্যপূর্ণ পরিবর্তনগুলিতে নেভিগেট করুন।
  3. তালিকা থেকে আপনার অ্যাপ্লিকেশন নির্বাচন করুন.

প্রতিটি আচরণের পরিবর্তন সাধারণত নিম্নলিখিত দুটি বিভাগের একটির অন্তর্গত:

  • যে পরিবর্তনগুলি Android এর সেই সংস্করণে চালিত সমস্ত অ্যাপকে প্রভাবিত করে, অ্যাপের targetSdkVersion নির্বিশেষে।

    এই পরিবর্তনগুলি সামঞ্জস্য কাঠামোতে ডিফল্টরূপে সক্রিয় করা হয় এবং ডিফল্ট সক্রিয় পরিবর্তন বিভাগে UI-তে তালিকাভুক্ত করা হয়।

  • পরিবর্তনগুলি যেগুলি শুধুমাত্র নির্দিষ্ট Android সংস্করণগুলিকে লক্ষ্য করে এমন অ্যাপগুলিকে প্রভাবিত করে৷ যেহেতু এই পরিবর্তনগুলি শুধুমাত্র Android এর একটি নির্দিষ্ট সংস্করণকে টার্গেট করে এমন অ্যাপগুলিকে প্রভাবিত করে, তাই এগুলিকে targetSDKVersion দ্বারা গেট করা পরিবর্তন হিসাবেও উল্লেখ করা হয়।

    যদি আপনার অ্যাপ তালিকাভুক্ত API সংস্করণের চেয়ে উচ্চতর সংস্করণকে লক্ষ্য করে তাহলে এই পরিবর্তনগুলি সামঞ্জস্যপূর্ণ কাঠামোতে ডিফল্টরূপে সক্ষম করা হয়৷ উদাহরণ স্বরূপ, Android 13 (API লেভেল 33) এ targetSDKVersion দ্বারা গেট করা একটি আচরণের পরিবর্তন UI-তে TargetSdkVersion >=33 এর জন্য সক্ষম শিরোনামের একটি বিভাগে তালিকাভুক্ত করা হবে। অ্যান্ড্রয়েডের কিছু নিম্ন সংস্করণে, এই বিভাগটির শিরোনাম "এসডিকে API_LEVEL আফটার সক্ষম" এর পরিবর্তে।

আপনি চিত্র 1-এ ডিফল্ট অক্ষম পরিবর্তনগুলি নামে একটি বিভাগও লক্ষ্য করবেন। এই বিভাগে পড়া পরিবর্তনগুলি বিভিন্ন উদ্দেশ্যে পরিবেশন করতে পারে। এই পরিবর্তনগুলি সক্ষম করার আগে, সেই Android সংস্করণের জন্য সামঞ্জস্যপূর্ণ কাঠামোর তালিকায় পরিবর্তনের বিবরণ পড়ুন৷

লগক্যাট ব্যবহার করে সক্রিয় পরিবর্তনগুলি সনাক্ত করুন৷

প্রতিটি আচরণের পরিবর্তনের জন্য, আপনার অ্যাপের প্রক্রিয়া চলাকালীন প্রথমবার যখন আপনার অ্যাপ প্রভাবিত API কল করে, সিস্টেমটি এইরকম একটি লগক্যাট বার্তা আউটপুট করে:

D CompatibilityChangeReporter: Compat change id reported: 194833441; UID 10265; state: ENABLED

প্রতিটি লগক্যাট বার্তা নিম্নলিখিত তথ্য অন্তর্ভুক্ত করে:

আইডি পরিবর্তন করুন
কোন পরিবর্তনটি অ্যাপকে প্রভাবিত করছে তা নির্দেশ করে। অ্যাপ সামঞ্জস্যপূর্ণ পরিবর্তন স্ক্রিনে তালিকাভুক্ত আচরণ পরিবর্তনগুলির একটিতে এই মান মানচিত্র (চিত্র 1 দেখুন)। এই উদাহরণে, NOTIFICATION_PERM_CHANGE_ID তে 194833441 মানচিত্র।
ইউআইডি
কোন অ্যাপ পরিবর্তন দ্বারা প্রভাবিত হয় তা নির্দেশ করে।
রাজ্য

পরিবর্তনটি অ্যাপটিকে প্রভাবিত করছে কিনা তা নির্দেশ করে।

রাষ্ট্র এই মানগুলির মধ্যে একটি হতে পারে:

রাজ্য অর্থ
ENABLED পরিবর্তনটি সক্ষম করা হয়েছে এবং অ্যাপটি পরিবর্তন করা API ব্যবহার করলে অ্যাপটির আচরণকে প্রভাবিত করবে।
DISABLED

পরিবর্তনটি অক্ষম করা হয়েছে এবং অ্যাপটিকে প্রভাবিত করবে না।

দ্রষ্টব্য: অ্যাপটির targetSDKVersion প্রয়োজনীয় থ্রেশহোল্ডের নীচে থাকার কারণে এই পরিবর্তনটি অক্ষম করা থাকলে, অ্যাপটি একটি উচ্চতর সংস্করণকে লক্ষ্য করার জন্য তার targetSDKVersion বাড়ালে পরিবর্তনটি ডিফল্টরূপে সক্ষম হবে।

LOGGED পরিবর্তনটি সামঞ্জস্যপূর্ণ কাঠামোর মাধ্যমে লগ করা হচ্ছে কিন্তু চালু বা বন্ধ করা যাবে না। যদিও এই পরিবর্তনটি টগল করা যাবে না, তবুও এটি আপনার অ্যাপের আচরণকে প্রভাবিত করতে পারে। আরও তথ্যের জন্য সেই Android সংস্করণের জন্য সামঞ্জস্যপূর্ণ কাঠামোর তালিকায় পরিবর্তনের বিবরণ দেখুন। অনেক ক্ষেত্রে, এই ধরনের পরিবর্তনগুলি পরীক্ষামূলক এবং উপেক্ষা করা যেতে পারে।

ADB ব্যবহার করে সক্রিয় পরিবর্তন সনাক্ত করুন

সম্পূর্ণ ডিভাইসে পরিবর্তনের সম্পূর্ণ সেট (সক্ষম এবং অক্ষম উভয়ই) দেখতে নিম্নলিখিত ADB কমান্ডটি চালান:

adb shell dumpsys platform_compat

আউটপুট প্রতিটি পরিবর্তনের জন্য নিম্নলিখিত তথ্য তালিকাভুক্ত করে:

আইডি পরিবর্তন করুন
এই আচরণ পরিবর্তনের জন্য একটি অনন্য শনাক্তকারী। উদাহরণস্বরূপ, 194833441
নাম
এই আচরণের নাম পরিবর্তন। উদাহরণস্বরূপ, NOTIFICATION_PERM_CHANGE_ID
লক্ষ্য এসডিকে সংস্করণের মানদণ্ড

কোন targetSDKVersion দ্বারা পরিবর্তনটি গেট করা হয়েছে (যদি থাকে)।

উদাহরণস্বরূপ, যদি এই পরিবর্তনটি শুধুমাত্র SDK সংস্করণ 33 বা উচ্চতরকে লক্ষ্য করে এমন অ্যাপের জন্য সক্ষম করা হয়, enableAfterTargetSdk=32 হল আউটপুট। যদি পরিবর্তন targetSDKVersion দ্বারা গেট করা না হয়, enableAfterTargetSdk=0 হল আউটপুট।

প্যাকেজ ওভাররাইড করে

প্রতিটি প্যাকেজের নাম যেখানে পরিবর্তনের ডিফল্ট অবস্থা (হয় সক্ষম বা নিষ্ক্রিয়) ওভাররাইড করা হয়েছে।

উদাহরণস্বরূপ, যদি এটি এমন একটি পরিবর্তন হয় যা ডিফল্টরূপে সক্রিয় থাকে, আপনি বিকাশকারী বিকল্পগুলি বা ADB ব্যবহার করে পরিবর্তনটি টগল করলে আপনার অ্যাপের প্যাকেজের নাম তালিকাভুক্ত হবে৷ এই ক্ষেত্রে, আউটপুট হবে:

packageOverrides={com.my.package=false}

targetSDKVersion দ্বারা গেট করা পরিবর্তনগুলি ডিফল্টরূপে সক্রিয় বা অক্ষম করা যেতে পারে, তাই প্যাকেজের তালিকায় সেই অ্যাপের প্রতিটি targetSDKVersion এর উপর নির্ভর করে true বা false উভয়ের উদাহরণ অন্তর্ভুক্ত করা যেতে পারে। যেমন:

packageOverrides={com.my.package=true, com.another.package=false}

নির্দিষ্ট পরিবর্তন সম্পর্কে আরও জানুন

সামঞ্জস্যপূর্ণ কাঠামোর আচরণ পরিবর্তনের সম্পূর্ণ তালিকা প্রতিটি Android সংস্করণের জন্য ডকুমেন্টেশনের অংশ হিসাবে অন্তর্ভুক্ত করা হয়েছে। আরও তথ্যের জন্য নিম্নলিখিত লিঙ্কগুলি দেখুন, Android এর যে সংস্করণের জন্য আপনি আপনার অ্যাপটি পরীক্ষা করছেন তার উপর নির্ভর করে:

কখন পরিবর্তন টগল করতে হবে

সামঞ্জস্যপূর্ণ কাঠামোর মূল উদ্দেশ্য হল আপনাকে নিয়ন্ত্রণ এবং নমনীয়তা প্রদান করা যখন আপনি Android এর নতুন সংস্করণগুলির সাথে আপনার অ্যাপটি পরীক্ষা করেন৷ এই বিভাগটি এমন কিছু কৌশল বর্ণনা করে যা আপনি আপনার অ্যাপ পরীক্ষা এবং ডিবাগ করার সময় পরিবর্তনগুলি কখন চালু বা বন্ধ করতে হবে তা নির্ধারণ করতে ব্যবহার করতে পারেন।

কখন পরিবর্তনগুলি টগল করতে হবে

কখন পরিবর্তনগুলিকে টগল বন্ধ করতে হবে তা নির্ধারণ করা সাধারণত নির্ভর করে পরিবর্তনটি targetSDKVersion দ্বারা গেট করা হয়েছে কিনা।

সমস্ত অ্যাপের জন্য পরিবর্তনগুলি সক্ষম করা হয়েছে৷

সমস্ত অ্যাপ্লিকেশানগুলিকে প্রভাবিত করে এমন পরিবর্তনগুলি একটি নির্দিষ্ট প্ল্যাটফর্ম সংস্করণের জন্য ডিফল্টরূপে সক্ষম করা হয়, আপনার অ্যাপের targetSDKVersion নির্বিশেষে, যাতে আপনি দেখতে পারেন যে আপনার অ্যাপটি সেই প্ল্যাটফর্ম সংস্করণে আপনার অ্যাপ চালানোর দ্বারা প্রভাবিত হয়েছে কিনা৷

উদাহরণস্বরূপ, আপনি যদি Android 15 (API স্তর 35) টার্গেট করার জন্য প্রস্তুতি নিচ্ছেন, তাহলে আপনি Android 15 চালিত একটি ডিভাইসে আপনার অ্যাপ ইনস্টল করে শুরু করতে পারেন এবং আপনার সাধারণ পরীক্ষার কার্যপ্রবাহ ব্যবহার করে আপনার অ্যাপ পরীক্ষা করতে পারেন। আপনি যদি অ্যাপের সমস্যার সম্মুখীন হন, তাহলে আপনি সেই পরিবর্তনটি অক্ষম করতে পারেন যা সমস্যার কারণ হচ্ছে যাতে আপনি অন্যান্য সমস্যার জন্য পরীক্ষা চালিয়ে যেতে পারেন।

যেহেতু এই পরিবর্তনগুলি targetSDKVersion নির্বিশেষে সমস্ত অ্যাপকে প্রভাবিত করতে পারে, তাই targetSDKVersion দ্বারা গেট করা পরিবর্তনগুলির আগে আপনার সাধারণত এই পরিবর্তনগুলির জন্য আপনার অ্যাপ পরীক্ষা এবং আপডেট করা উচিত। এটি নিশ্চিত করতে সাহায্য করে যে আপনার ব্যবহারকারীরা তাদের ডিভাইসটিকে একটি নতুন প্ল্যাটফর্ম সংস্করণে আপডেট করার সময় তাদের অ্যাপের অভিজ্ঞতার অবনতি হবে না।

আপনার এই পরিবর্তনগুলি পরীক্ষা করার ক্ষেত্রেও অগ্রাধিকার দেওয়া উচিত কারণ আপনি Android এর একটি পাবলিক রিলিজ বিল্ড ব্যবহার করার সময় এই পরিবর্তনগুলিকে টগল করতে পারবেন না। আদর্শভাবে, আপনার Android এর প্রতিটি সংস্করণের জন্য এই পরিবর্তনগুলির পরীক্ষা করা উচিত যখন সেই সংস্করণটি পূর্বরূপ রয়েছে

targetSDKVersion দ্বারা গেট করা পরিবর্তনগুলি৷

আপনার অ্যাপ যদি একটি নির্দিষ্ট targetSDKVersion টার্গেট করে থাকে, তাহলে সেই ভার্সন দ্বারা গেট করা যেকোনো পরিবর্তন ডিফল্টরূপে সক্ষম হয়। সুতরাং, আপনি যখন আপনার অ্যাপের targetSDKVersion একটি নতুন সংস্করণে স্যুইচ করবেন, আপনার অ্যাপ একবারে অনেক নতুন পরিবর্তন দ্বারা প্রভাবিত হতে শুরু করবে।

যেহেতু আপনার অ্যাপ এই পরিবর্তনগুলির একটির বেশি দ্বারা প্রভাবিত হতে পারে, তাই আপনি আপনার অ্যাপটি পরীক্ষা এবং ডিবাগ করার সাথে সাথে আপনাকে পৃথকভাবে এই পরিবর্তনগুলির কিছু টগল করতে হতে পারে।

কখন পরিবর্তনগুলি টগল করতে হবে

একটি নির্দিষ্ট targetSDKVersion দ্বারা গেট করা পরিবর্তনগুলি ডিফল্টরূপে অক্ষম করা হয় যখনই একটি অ্যাপ গেটেড সংস্করণের চেয়ে কম SDK সংস্করণকে লক্ষ্য করে। সাধারণত, আপনি যখন একটি নতুন targetSdkVersion টার্গেট করার প্রস্তুতি নিচ্ছেন, তখন আপনার কাছে আচরণ পরিবর্তনের একটি তালিকা থাকবে যার জন্য আপনাকে আপনার অ্যাপটি পরীক্ষা এবং ডিবাগ করতে হবে।

উদাহরণস্বরূপ, আপনি পরবর্তী targetSdkVersion এ একাধিক প্ল্যাটফর্ম পরিবর্তনের বিরুদ্ধে আপনার অ্যাপ পরীক্ষা করতে পারেন। বিকাশকারী বিকল্পগুলি বা ADB কমান্ডগুলি ব্যবহার করে, আপনি আপনার অ্যাপ ম্যানিফেস্ট পরিবর্তন এবং একবারে প্রতিটি পরিবর্তন নির্বাচন করার পরিবর্তে প্রতিটি গেটেড পরিবর্তন একে একে সক্ষম এবং পরীক্ষা করতে পারেন। এই অতিরিক্ত নিয়ন্ত্রণ আপনাকে বিচ্ছিন্নতার পরিবর্তনগুলি পরীক্ষা করতে এবং একবারে আপনার অ্যাপের একাধিক অংশ ডিবাগিং এবং আপডেট করা এড়াতে সহায়তা করতে পারে।

একটি পরিবর্তন সক্ষম করার পরে, আপনি আপনার সাধারণ পরীক্ষার কার্যপ্রবাহ ব্যবহার করে আপনার অ্যাপটি পরীক্ষা এবং ডিবাগ করতে পারেন। আপনি যদি সমস্যার সম্মুখীন হন, তাহলে সমস্যার কারণ নির্ণয় করতে আপনার লগগুলি পরীক্ষা করুন৷ যদি এটি পরিষ্কার না হয় যে সমস্যাটি সক্ষম করা একটি প্ল্যাটফর্ম পরিবর্তনের কারণে হয়েছে, তাহলে সেই পরিবর্তনটি নিষ্ক্রিয় করার চেষ্টা করুন এবং তারপরে আপনার অ্যাপের সেই অংশটি পুনরায় পরীক্ষা করুন।

পরিবর্তনগুলি চালু বা বন্ধ করুন

সামঞ্জস্যপূর্ণ কাঠামো আপনাকে বিকাশকারী বিকল্পগুলি বা ADB কমান্ড ব্যবহার করে প্রতিটি পরিবর্তন চালু বা বন্ধ করতে দেয়। যেহেতু পরিবর্তনগুলি চালু বা বন্ধ করার ফলে আপনার অ্যাপ ক্র্যাশ বা গুরুত্বপূর্ণ নিরাপত্তা পরিবর্তনগুলি অক্ষম করতে পারে, আপনি কখন পরিবর্তনগুলি টগল করতে পারবেন তার উপর কিছু বিধিনিষেধ রয়েছে৷

বিকাশকারী বিকল্পগুলি ব্যবহার করে পরিবর্তনগুলি টগল করুন৷

পরিবর্তনগুলি চালু বা বন্ধ করতে বিকাশকারী বিকল্পগুলি ব্যবহার করুন৷ বিকাশকারী বিকল্পগুলি খুঁজে পেতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. যদি বিকাশকারী বিকল্পগুলি ইতিমধ্যে সক্ষম না থাকে তবে সেগুলি সক্ষম করুন
  2. আপনার ডিভাইসের সেটিংস অ্যাপ খুলুন এবং সিস্টেম > অ্যাডভান্সড > বিকাশকারী বিকল্প > অ্যাপ সামঞ্জস্যপূর্ণ পরিবর্তনগুলিতে নেভিগেট করুন।
  3. তালিকা থেকে আপনার অ্যাপ্লিকেশন নির্বাচন করুন.
  4. পরিবর্তনের তালিকা থেকে, আপনি যে পরিবর্তনটি চালু বা বন্ধ করতে চান সেটি খুঁজুন এবং সুইচটি আলতো চাপুন।

    পরিবর্তনের তালিকা যা চালু বা বন্ধ করা যেতে পারে

ADB ব্যবহার করে পরিবর্তন টগল করুন

ADB ব্যবহার করে পরিবর্তন চালু বা বন্ধ করতে, নিম্নলিখিত কমান্ডগুলির মধ্যে একটি চালান:

adb shell am compat enable (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME
adb shell am compat disable (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME

হয় CHANGE_ID (উদাহরণস্বরূপ, 194833441 ) অথবা CHANGE_NAME (উদাহরণস্বরূপ, NOTIFICATION_PERM_CHANGE_ID ) এবং আপনার অ্যাপের PACKAGE_NAME পাস করুন।

আপনি ADB বা বিকাশকারী বিকল্পগুলি ব্যবহার করে সেট করেছেন এমন যেকোন ওভাররাইড সরিয়ে ডিফল্ট অবস্থায় একটি পরিবর্তন পুনরায় সেট করতে আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

adb shell am compat reset (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME

পরিবর্তন টগল করার উপর বিধিনিষেধ

ডিফল্টরূপে, প্রতিটি আচরণ পরিবর্তন হয় সক্ষম বা অক্ষম করা হয়। সমস্ত অ্যাপকে প্রভাবিত করে এমন পরিবর্তনগুলি ডিফল্টরূপে সক্রিয় করা হয়৷ অন্যান্য পরিবর্তন একটি targetSdkVersion দ্বারা গেট করা হয়। এই পরিবর্তনগুলি ডিফল্টরূপে সক্ষম হয় যখন কোনও অ্যাপ সংশ্লিষ্ট SDK সংস্করণকে লক্ষ্য করে বা উচ্চতর এবং ডিফল্টরূপে অক্ষম করা হয় যখন কোনও অ্যাপ গেটেড সংস্করণের চেয়ে কম SDK সংস্করণকে লক্ষ্য করে। আপনি যখন একটি পরিবর্তন চালু বা বন্ধ টগল করেন, আপনি এটির ডিফল্ট অবস্থা ওভাররাইড করেন।

সামঞ্জস্যপূর্ণ কাঠামোকে দূষিতভাবে ব্যবহার করা থেকে প্রতিরোধ করতে, আপনি কখন পরিবর্তনগুলি টগল করতে পারেন তার উপর কিছু বিধিনিষেধ রয়েছে৷ আপনি পরিবর্তন টগল করতে পারবেন কিনা তা নির্ভর করে পরিবর্তনের ধরন, আপনার অ্যাপ ডিবাগযোগ্য কিনা এবং আপনার ডিভাইসে চলমান বিল্ডের প্রকারের উপর। নিম্নলিখিত সারণী বর্ণনা করে যখন আপনাকে বিভিন্ন ধরনের পরিবর্তন টগল করার অনুমতি দেওয়া হয়:

বিল্ড টাইপ অ-ডিবাগযোগ্য অ্যাপ ডিবাগযোগ্য অ্যাপ
সব পরিবর্তন টার্গেটএসডিকে সংস্করণ দ্বারা গেট করা পরিবর্তনগুলি৷ অন্য সব পরিবর্তন
বিকাশকারী পূর্বরূপ বা বিটা বিল্ড টগল করা যাবে না টগল করতে পারেন টগল করতে পারেন
পাবলিক ব্যবহারকারী বিল্ড টগল করা যাবে না টগল করতে পারেন টগল করা যাবে না
,

অ্যান্ড্রয়েড 11 অ্যান্ড্রয়েড প্ল্যাটফর্মের নতুন সংস্করণে আচরণ পরিবর্তনের বিরুদ্ধে আপনার অ্যাপ পরীক্ষা এবং ডিবাগ করার জন্য নতুন বিকাশকারী সরঞ্জামগুলি প্রবর্তন করেছে। এই সরঞ্জামগুলি একটি সামঞ্জস্যপূর্ণ কাঠামোর অংশ যা অ্যাপ বিকাশকারীদের বিকাশকারী বিকল্পগুলি বা ADB ব্যবহার করে পৃথকভাবে ব্রেকিং পরিবর্তনগুলি চালু এবং বন্ধ করতে দেয়৷ আপনি সর্বশেষ স্থিতিশীল API সংস্করণকে লক্ষ্য করার জন্য এবং পরবর্তী Android সংস্করণের পূর্বরূপ প্রকাশের সাথে আপনার অ্যাপ পরীক্ষা করার সময় এই নমনীয়তা ব্যবহার করুন৷

আপনি যখন সামঞ্জস্যপূর্ণ ফ্রেমওয়ার্ক সরঞ্জামগুলি ব্যবহার করেন, তখন Android প্ল্যাটফর্ম স্বয়ংক্রিয়ভাবে তার অভ্যন্তরীণ যুক্তিকে মানিয়ে নেয়, তাই আপনাকে আপনার targetSDKVersion পরিবর্তন করতে হবে না বা মৌলিক পরীক্ষা করার জন্য আপনার অ্যাপটি পুনরায় সংকলন করতে হবে না। যেহেতু পরিবর্তনগুলি পৃথকভাবে টগলযোগ্য, আপনি একটি সময়ে একটি আচরণের পরিবর্তনকে বিচ্ছিন্ন করতে, পরীক্ষা করতে এবং ডিবাগ করতে পারেন বা একটি একক পরিবর্তন অক্ষম করতে পারেন যা সমস্যা সৃষ্টি করছে যদি আপনাকে প্রথমে অন্য কিছু পরীক্ষা করতে হয়।

কোন পরিবর্তনগুলি সক্রিয় করা হয়েছে তা কীভাবে সনাক্ত করবেন

যখন একটি আচরণ পরিবর্তন সক্ষম করা হয়, তখন এটি প্রভাবিত করতে পারে যে কীভাবে আপনার অ্যাপ সেই পরিবর্তনের দ্বারা প্রভাবিত প্ল্যাটফর্ম APIগুলি অ্যাক্সেস করে। আপনি বিকাশকারী বিকল্প, লগক্যাট বা ADB কমান্ড ব্যবহার করে কোন আচরণ পরিবর্তনগুলি সক্ষম করা হয়েছে তা পরীক্ষা করতে পারেন।

বিকাশকারী বিকল্পগুলি ব্যবহার করে সক্রিয় পরিবর্তনগুলি সনাক্ত করুন৷

চিত্র 1. অ্যাপ সামঞ্জস্যতা বিকাশকারী বিকল্পগুলিতে স্ক্রীন পরিবর্তন করে।

আপনি কোন পরিবর্তনগুলি সক্ষম করা আছে তা দেখতে পারেন এবং ডিভাইসের বিকাশকারী বিকল্পগুলিতে সেই পরিবর্তনগুলিকে চালু বা বন্ধ করতে টগল করতে পারেন ৷ এই বিকল্পগুলি অ্যাক্সেস করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. যদি বিকাশকারী বিকল্পগুলি ইতিমধ্যে সক্ষম না থাকে তবে সেগুলি সক্ষম করুন
  2. আপনার ডিভাইসের সেটিংস অ্যাপ খুলুন এবং সিস্টেম > অ্যাডভান্সড > বিকাশকারী বিকল্প > অ্যাপ সামঞ্জস্যপূর্ণ পরিবর্তনগুলিতে নেভিগেট করুন।
  3. তালিকা থেকে আপনার অ্যাপ্লিকেশন নির্বাচন করুন.

প্রতিটি আচরণের পরিবর্তন সাধারণত নিম্নলিখিত দুটি বিভাগের একটির অন্তর্গত:

  • যে পরিবর্তনগুলি Android এর সেই সংস্করণে চালিত সমস্ত অ্যাপকে প্রভাবিত করে, অ্যাপের targetSdkVersion নির্বিশেষে।

    এই পরিবর্তনগুলি সামঞ্জস্য কাঠামোতে ডিফল্টরূপে সক্রিয় করা হয় এবং ডিফল্ট সক্রিয় পরিবর্তন বিভাগে UI-তে তালিকাভুক্ত করা হয়।

  • পরিবর্তনগুলি যেগুলি শুধুমাত্র নির্দিষ্ট Android সংস্করণগুলিকে লক্ষ্য করে এমন অ্যাপগুলিকে প্রভাবিত করে৷ যেহেতু এই পরিবর্তনগুলি শুধুমাত্র Android এর একটি নির্দিষ্ট সংস্করণকে টার্গেট করে এমন অ্যাপগুলিকে প্রভাবিত করে, তাই এগুলিকে targetSDKVersion দ্বারা গেট করা পরিবর্তন হিসাবেও উল্লেখ করা হয়।

    যদি আপনার অ্যাপ তালিকাভুক্ত API সংস্করণের চেয়ে উচ্চতর সংস্করণকে লক্ষ্য করে তাহলে এই পরিবর্তনগুলি সামঞ্জস্যপূর্ণ কাঠামোতে ডিফল্টরূপে সক্ষম করা হয়৷ উদাহরণ স্বরূপ, Android 13 (API লেভেল 33) এ targetSDKVersion দ্বারা গেট করা একটি আচরণের পরিবর্তন UI-তে TargetSdkVersion >=33 এর জন্য সক্ষম শিরোনামের একটি বিভাগে তালিকাভুক্ত করা হবে। অ্যান্ড্রয়েডের কিছু নিম্ন সংস্করণে, এই বিভাগটির শিরোনাম "এসডিকে API_LEVEL আফটার সক্ষম" এর পরিবর্তে।

আপনি চিত্র 1-এ ডিফল্ট অক্ষম পরিবর্তনগুলি নামে একটি বিভাগও লক্ষ্য করবেন। এই বিভাগে পড়া পরিবর্তনগুলি বিভিন্ন উদ্দেশ্যে পরিবেশন করতে পারে। এই পরিবর্তনগুলি সক্ষম করার আগে, সেই Android সংস্করণের জন্য সামঞ্জস্যপূর্ণ কাঠামোর তালিকায় পরিবর্তনের বিবরণ পড়ুন৷

লগক্যাট ব্যবহার করে সক্রিয় পরিবর্তনগুলি সনাক্ত করুন৷

প্রতিটি আচরণের পরিবর্তনের জন্য, আপনার অ্যাপের প্রক্রিয়া চলাকালীন প্রথমবার যখন আপনার অ্যাপ প্রভাবিত API কল করে, সিস্টেমটি এইরকম একটি লগক্যাট বার্তা আউটপুট করে:

D CompatibilityChangeReporter: Compat change id reported: 194833441; UID 10265; state: ENABLED

প্রতিটি লগক্যাট বার্তা নিম্নলিখিত তথ্য অন্তর্ভুক্ত করে:

আইডি পরিবর্তন করুন
কোন পরিবর্তনটি অ্যাপকে প্রভাবিত করছে তা নির্দেশ করে। অ্যাপ সামঞ্জস্যপূর্ণ পরিবর্তন স্ক্রিনে তালিকাভুক্ত আচরণ পরিবর্তনগুলির একটিতে এই মান মানচিত্র (চিত্র 1 দেখুন)। এই উদাহরণে, NOTIFICATION_PERM_CHANGE_ID তে 194833441 মানচিত্র।
ইউআইডি
কোন অ্যাপ পরিবর্তন দ্বারা প্রভাবিত হয় তা নির্দেশ করে।
রাজ্য

পরিবর্তনটি অ্যাপটিকে প্রভাবিত করছে কিনা তা নির্দেশ করে।

রাষ্ট্র এই মানগুলির মধ্যে একটি হতে পারে:

রাজ্য অর্থ
ENABLED পরিবর্তনটি সক্ষম করা হয়েছে এবং অ্যাপটি পরিবর্তন করা API ব্যবহার করলে অ্যাপটির আচরণকে প্রভাবিত করবে।
DISABLED

পরিবর্তনটি অক্ষম করা হয়েছে এবং অ্যাপটিকে প্রভাবিত করবে না।

দ্রষ্টব্য: অ্যাপটির targetSDKVersion প্রয়োজনীয় থ্রেশহোল্ডের নীচে থাকার কারণে এই পরিবর্তনটি অক্ষম করা থাকলে, অ্যাপটি একটি উচ্চতর সংস্করণকে লক্ষ্য করার জন্য তার targetSDKVersion বাড়ালে পরিবর্তনটি ডিফল্টরূপে সক্ষম হবে।

LOGGED পরিবর্তনটি সামঞ্জস্যপূর্ণ কাঠামোর মাধ্যমে লগ করা হচ্ছে কিন্তু চালু বা বন্ধ করা যাবে না। যদিও এই পরিবর্তনটি টগল করা যাবে না, তবুও এটি আপনার অ্যাপের আচরণকে প্রভাবিত করতে পারে। আরও তথ্যের জন্য সেই Android সংস্করণের জন্য সামঞ্জস্যপূর্ণ কাঠামোর তালিকায় পরিবর্তনের বিবরণ দেখুন। অনেক ক্ষেত্রে, এই ধরনের পরিবর্তনগুলি পরীক্ষামূলক এবং উপেক্ষা করা যেতে পারে।

ADB ব্যবহার করে সক্রিয় পরিবর্তন সনাক্ত করুন

সম্পূর্ণ ডিভাইসে পরিবর্তনের সম্পূর্ণ সেট (সক্ষম এবং অক্ষম উভয়ই) দেখতে নিম্নলিখিত ADB কমান্ডটি চালান:

adb shell dumpsys platform_compat

আউটপুট প্রতিটি পরিবর্তনের জন্য নিম্নলিখিত তথ্য তালিকাভুক্ত করে:

আইডি পরিবর্তন করুন
এই আচরণ পরিবর্তনের জন্য একটি অনন্য শনাক্তকারী। উদাহরণস্বরূপ, 194833441
নাম
এই আচরণের নাম পরিবর্তন। উদাহরণস্বরূপ, NOTIFICATION_PERM_CHANGE_ID
লক্ষ্য এসডিকে সংস্করণের মানদণ্ড

কোন targetSDKVersion দ্বারা পরিবর্তনটি গেট করা হয়েছে (যদি থাকে)।

উদাহরণস্বরূপ, যদি এই পরিবর্তনটি শুধুমাত্র SDK সংস্করণ 33 বা উচ্চতরকে লক্ষ্য করে এমন অ্যাপের জন্য সক্ষম করা হয়, enableAfterTargetSdk=32 হল আউটপুট। যদি পরিবর্তন targetSDKVersion দ্বারা গেট করা না হয়, enableAfterTargetSdk=0 হল আউটপুট।

প্যাকেজ ওভাররাইড করে

প্রতিটি প্যাকেজের নাম যেখানে পরিবর্তনের ডিফল্ট অবস্থা (হয় সক্ষম বা নিষ্ক্রিয়) ওভাররাইড করা হয়েছে।

উদাহরণস্বরূপ, যদি এটি এমন একটি পরিবর্তন হয় যা ডিফল্টরূপে সক্রিয় থাকে, আপনি বিকাশকারী বিকল্পগুলি বা ADB ব্যবহার করে পরিবর্তনটি টগল করলে আপনার অ্যাপের প্যাকেজের নাম তালিকাভুক্ত হবে৷ এই ক্ষেত্রে, আউটপুট হবে:

packageOverrides={com.my.package=false}

targetSDKVersion দ্বারা গেট করা পরিবর্তনগুলি ডিফল্টরূপে সক্রিয় বা অক্ষম করা যেতে পারে, তাই প্যাকেজের তালিকায় সেই অ্যাপের প্রতিটি targetSDKVersion এর উপর নির্ভর করে true বা false উভয়ের উদাহরণ অন্তর্ভুক্ত করা যেতে পারে। যেমন:

packageOverrides={com.my.package=true, com.another.package=false}

নির্দিষ্ট পরিবর্তন সম্পর্কে আরও জানুন

সামঞ্জস্যপূর্ণ কাঠামোর আচরণ পরিবর্তনের সম্পূর্ণ তালিকা প্রতিটি Android সংস্করণের জন্য ডকুমেন্টেশনের অংশ হিসাবে অন্তর্ভুক্ত করা হয়েছে। আরও তথ্যের জন্য নিম্নলিখিত লিঙ্কগুলি দেখুন, Android এর যে সংস্করণের জন্য আপনি আপনার অ্যাপটি পরীক্ষা করছেন তার উপর নির্ভর করে:

কখন পরিবর্তন টগল করতে হবে

সামঞ্জস্যপূর্ণ কাঠামোর মূল উদ্দেশ্য হল আপনাকে নিয়ন্ত্রণ এবং নমনীয়তা প্রদান করা যখন আপনি Android এর নতুন সংস্করণগুলির সাথে আপনার অ্যাপটি পরীক্ষা করেন৷ এই বিভাগটি এমন কিছু কৌশল বর্ণনা করে যা আপনি আপনার অ্যাপ পরীক্ষা এবং ডিবাগ করার সময় পরিবর্তনগুলি কখন চালু বা বন্ধ করতে হবে তা নির্ধারণ করতে ব্যবহার করতে পারেন।

কখন পরিবর্তনগুলি টগল করতে হবে

কখন পরিবর্তনগুলিকে টগল বন্ধ করতে হবে তা নির্ধারণ করা সাধারণত নির্ভর করে পরিবর্তনটি targetSDKVersion দ্বারা গেট করা হয়েছে কিনা।

সমস্ত অ্যাপের জন্য পরিবর্তনগুলি সক্ষম করা হয়েছে৷

সমস্ত অ্যাপ্লিকেশানগুলিকে প্রভাবিত করে এমন পরিবর্তনগুলি একটি নির্দিষ্ট প্ল্যাটফর্ম সংস্করণের জন্য ডিফল্টরূপে সক্ষম করা হয়, আপনার অ্যাপের targetSDKVersion নির্বিশেষে, যাতে আপনি দেখতে পারেন যে আপনার অ্যাপটি সেই প্ল্যাটফর্ম সংস্করণে আপনার অ্যাপ চালানোর দ্বারা প্রভাবিত হয়েছে কিনা৷

উদাহরণস্বরূপ, আপনি যদি Android 15 (API স্তর 35) টার্গেট করার জন্য প্রস্তুতি নিচ্ছেন, তাহলে আপনি Android 15 চালিত একটি ডিভাইসে আপনার অ্যাপ ইনস্টল করে শুরু করতে পারেন এবং আপনার সাধারণ পরীক্ষার কার্যপ্রবাহ ব্যবহার করে আপনার অ্যাপ পরীক্ষা করতে পারেন। আপনি যদি অ্যাপের সমস্যার সম্মুখীন হন, তাহলে আপনি সেই পরিবর্তনটি অক্ষম করতে পারেন যা সমস্যার কারণ হচ্ছে যাতে আপনি অন্যান্য সমস্যার জন্য পরীক্ষা চালিয়ে যেতে পারেন।

যেহেতু এই পরিবর্তনগুলি targetSDKVersion নির্বিশেষে সমস্ত অ্যাপকে প্রভাবিত করতে পারে, তাই targetSDKVersion দ্বারা গেট করা পরিবর্তনগুলির আগে আপনার সাধারণত এই পরিবর্তনগুলির জন্য আপনার অ্যাপ পরীক্ষা এবং আপডেট করা উচিত। এটি নিশ্চিত করতে সাহায্য করে যে আপনার ব্যবহারকারীরা তাদের ডিভাইসটিকে একটি নতুন প্ল্যাটফর্ম সংস্করণে আপডেট করার সময় তাদের অ্যাপের অভিজ্ঞতার অবনতি হবে না।

আপনার এই পরিবর্তনগুলি পরীক্ষা করার ক্ষেত্রেও অগ্রাধিকার দেওয়া উচিত কারণ আপনি Android এর একটি পাবলিক রিলিজ বিল্ড ব্যবহার করার সময় এই পরিবর্তনগুলিকে টগল করতে পারবেন না। আদর্শভাবে, আপনার Android এর প্রতিটি সংস্করণের জন্য এই পরিবর্তনগুলির পরীক্ষা করা উচিত যখন সেই সংস্করণটি পূর্বরূপ রয়েছে

targetSDKVersion দ্বারা গেট করা পরিবর্তনগুলি৷

আপনার অ্যাপ যদি একটি নির্দিষ্ট targetSDKVersion টার্গেট করে থাকে, তাহলে সেই ভার্সন দ্বারা গেট করা যেকোনো পরিবর্তন ডিফল্টরূপে সক্ষম হয়। সুতরাং, আপনি যখন আপনার অ্যাপের targetSDKVersion একটি নতুন সংস্করণে স্যুইচ করবেন, আপনার অ্যাপ একবারে অনেক নতুন পরিবর্তন দ্বারা প্রভাবিত হতে শুরু করবে।

যেহেতু আপনার অ্যাপ এই পরিবর্তনগুলির একটির বেশি দ্বারা প্রভাবিত হতে পারে, তাই আপনি আপনার অ্যাপটি পরীক্ষা এবং ডিবাগ করার সাথে সাথে আপনাকে পৃথকভাবে এই পরিবর্তনগুলির কিছু টগল করতে হতে পারে।

কখন পরিবর্তনগুলি টগল করতে হবে

একটি নির্দিষ্ট targetSDKVersion দ্বারা গেট করা পরিবর্তনগুলি ডিফল্টরূপে অক্ষম করা হয় যখনই একটি অ্যাপ গেটেড সংস্করণের চেয়ে কম SDK সংস্করণকে লক্ষ্য করে। সাধারণত, আপনি যখন একটি নতুন targetSdkVersion টার্গেট করার প্রস্তুতি নিচ্ছেন, তখন আপনার কাছে আচরণ পরিবর্তনের একটি তালিকা থাকবে যার জন্য আপনাকে আপনার অ্যাপটি পরীক্ষা এবং ডিবাগ করতে হবে।

উদাহরণস্বরূপ, আপনি পরবর্তী targetSdkVersion এ একাধিক প্ল্যাটফর্ম পরিবর্তনের বিরুদ্ধে আপনার অ্যাপ পরীক্ষা করতে পারেন। বিকাশকারী বিকল্পগুলি বা ADB কমান্ডগুলি ব্যবহার করে, আপনি আপনার অ্যাপ ম্যানিফেস্ট পরিবর্তন এবং একবারে প্রতিটি পরিবর্তন নির্বাচন করার পরিবর্তে প্রতিটি গেটেড পরিবর্তন একে একে সক্ষম এবং পরীক্ষা করতে পারেন। এই অতিরিক্ত নিয়ন্ত্রণ আপনাকে বিচ্ছিন্নতার পরিবর্তনগুলি পরীক্ষা করতে এবং একবারে আপনার অ্যাপের একাধিক অংশ ডিবাগিং এবং আপডেট করা এড়াতে সহায়তা করতে পারে।

একটি পরিবর্তন সক্ষম করার পরে, আপনি আপনার সাধারণ পরীক্ষার কার্যপ্রবাহ ব্যবহার করে আপনার অ্যাপটি পরীক্ষা এবং ডিবাগ করতে পারেন। আপনি যদি সমস্যার সম্মুখীন হন, তাহলে সমস্যার কারণ নির্ণয় করতে আপনার লগগুলি পরীক্ষা করুন৷ যদি এটি পরিষ্কার না হয় যে সমস্যাটি সক্ষম করা একটি প্ল্যাটফর্ম পরিবর্তনের কারণে হয়েছে, তাহলে সেই পরিবর্তনটি নিষ্ক্রিয় করার চেষ্টা করুন এবং তারপরে আপনার অ্যাপের সেই অংশটি পুনরায় পরীক্ষা করুন।

পরিবর্তনগুলি চালু বা বন্ধ করুন

সামঞ্জস্যপূর্ণ কাঠামো আপনাকে বিকাশকারী বিকল্পগুলি বা ADB কমান্ড ব্যবহার করে প্রতিটি পরিবর্তন চালু বা বন্ধ করতে দেয়। যেহেতু পরিবর্তনগুলি চালু বা বন্ধ করার ফলে আপনার অ্যাপ ক্র্যাশ বা গুরুত্বপূর্ণ নিরাপত্তা পরিবর্তনগুলি অক্ষম করতে পারে, আপনি কখন পরিবর্তনগুলি টগল করতে পারবেন তার উপর কিছু বিধিনিষেধ রয়েছে৷

বিকাশকারী বিকল্পগুলি ব্যবহার করে পরিবর্তনগুলি টগল করুন৷

পরিবর্তনগুলি চালু বা বন্ধ করতে বিকাশকারী বিকল্পগুলি ব্যবহার করুন৷ বিকাশকারী বিকল্পগুলি খুঁজে পেতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. যদি বিকাশকারী বিকল্পগুলি ইতিমধ্যে সক্ষম না থাকে তবে সেগুলি সক্ষম করুন
  2. আপনার ডিভাইসের সেটিংস অ্যাপ খুলুন এবং সিস্টেম > অ্যাডভান্সড > বিকাশকারী বিকল্প > অ্যাপ সামঞ্জস্যপূর্ণ পরিবর্তনগুলিতে নেভিগেট করুন।
  3. তালিকা থেকে আপনার অ্যাপ্লিকেশন নির্বাচন করুন.
  4. পরিবর্তনের তালিকা থেকে, আপনি যে পরিবর্তনটি চালু বা বন্ধ করতে চান সেটি খুঁজুন এবং সুইচটি আলতো চাপুন।

    পরিবর্তনের তালিকা যা চালু বা বন্ধ করা যেতে পারে

ADB ব্যবহার করে পরিবর্তন টগল করুন

ADB ব্যবহার করে পরিবর্তন চালু বা বন্ধ করতে, নিম্নলিখিত কমান্ডগুলির মধ্যে একটি চালান:

adb shell am compat enable (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME
adb shell am compat disable (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME

হয় CHANGE_ID (উদাহরণস্বরূপ, 194833441 ) অথবা CHANGE_NAME (উদাহরণস্বরূপ, NOTIFICATION_PERM_CHANGE_ID ) এবং আপনার অ্যাপের PACKAGE_NAME পাস করুন।

আপনি ADB বা বিকাশকারী বিকল্পগুলি ব্যবহার করে সেট করেছেন এমন যেকোন ওভাররাইড সরিয়ে ডিফল্ট অবস্থায় একটি পরিবর্তন পুনরায় সেট করতে আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

adb shell am compat reset (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME

পরিবর্তন টগল করার উপর বিধিনিষেধ

ডিফল্টরূপে, প্রতিটি আচরণ পরিবর্তন হয় সক্ষম বা অক্ষম করা হয়। সমস্ত অ্যাপকে প্রভাবিত করে এমন পরিবর্তনগুলি ডিফল্টরূপে সক্রিয় করা হয়৷ অন্যান্য পরিবর্তন একটি targetSdkVersion দ্বারা গেট করা হয়। এই পরিবর্তনগুলি ডিফল্টরূপে সক্ষম হয় যখন কোনও অ্যাপ সংশ্লিষ্ট SDK সংস্করণকে লক্ষ্য করে বা উচ্চতর এবং ডিফল্টরূপে অক্ষম করা হয় যখন কোনও অ্যাপ গেটেড সংস্করণের চেয়ে কম SDK সংস্করণকে লক্ষ্য করে। আপনি যখন একটি পরিবর্তন চালু বা বন্ধ টগল করেন, আপনি এটির ডিফল্ট অবস্থা ওভাররাইড করেন।

সামঞ্জস্যপূর্ণ কাঠামোকে দূষিতভাবে ব্যবহার করা থেকে প্রতিরোধ করতে, আপনি কখন পরিবর্তনগুলি টগল করতে পারেন তার উপর কিছু বিধিনিষেধ রয়েছে৷ আপনি পরিবর্তন টগল করতে পারবেন কিনা তা নির্ভর করে পরিবর্তনের ধরন, আপনার অ্যাপ ডিবাগযোগ্য কিনা এবং আপনার ডিভাইসে চলমান বিল্ডের প্রকারের উপর। নিম্নলিখিত সারণী বর্ণনা করে যখন আপনাকে বিভিন্ন ধরনের পরিবর্তন টগল করার অনুমতি দেওয়া হয়:

বিল্ড টাইপ অ-ডিবাগযোগ্য অ্যাপ ডিবাগযোগ্য অ্যাপ
সব পরিবর্তন টার্গেটএসডিকে সংস্করণ দ্বারা গেট করা পরিবর্তনগুলি৷ অন্য সব পরিবর্তন
বিকাশকারী পূর্বরূপ বা বিটা বিল্ড টগল করা যাবে না টগল করতে পারেন টগল করতে পারেন
পাবলিক ব্যবহারকারী বিল্ড টগল করা যাবে না টগল করতে পারেন টগল করা যাবে না