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

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

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

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

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

ডেভেলপার অপশন ব্যবহার করে সক্রিয় পরিবর্তনগুলি শনাক্ত করুন

চিত্র ১. ডেভেলপার অপশনের অ্যাপ সামঞ্জস্য পরিবর্তন স্ক্রিন।

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

  1. যদি ডেভেলপার অপশন আগে থেকে চালু করা না থাকে, তাহলে সেগুলো চালু করুন
  2. আপনার ডিভাইসের সেটিংস অ্যাপটি খুলুন এবং সিস্টেম > অ্যাডভান্সড > ডেভেলপার অপশন > অ্যাপ কম্প্যাটিবিলিটি চেঞ্জেস- এ যান।
  3. তালিকা থেকে আপনার অ্যাপটি বেছে নিন।

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

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

    এই পরিবর্তনগুলি কম্প্যাটিবিলিটি ফ্রেমওয়ার্কে ডিফল্টরূপে সক্রিয় থাকে এবং UI-এর 'Default Enabled Changes' বিভাগে তালিকাভুক্ত থাকে।

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

    আপনার অ্যাপটি যদি তালিকাভুক্ত API ভার্সনের চেয়ে উচ্চতর কোনো ভার্সনকে টার্গেট করে, তাহলে এই পরিবর্তনগুলো কম্প্যাটিবিলিটি ফ্রেমওয়ার্কে ডিফল্টভাবে সক্রিয় থাকে। উদাহরণস্বরূপ, Android 13 (API লেভেল 33)-এ targetSDKVersion দ্বারা নিয়ন্ত্রিত কোনো আচরণগত পরিবর্তন UI-তে "Enabled for targetSdkVersion >=33" শিরোনামের একটি সেকশনে তালিকাভুক্ত থাকবে। Android-এর কিছু নিম্নতর ভার্সনে, এই সেকশনটির শিরোনাম "Enabled After SDK API_LEVEL " হয়ে থাকে।

আপনি চিত্র ১-এ ‘ডিফল্টরূপে নিষ্ক্রিয় পরিবর্তনসমূহ’ (Default Disabled Changes ) নামে একটি অংশও লক্ষ্য করবেন। এই অংশের অন্তর্ভুক্ত পরিবর্তনগুলো বিভিন্ন উদ্দেশ্যে কাজ করতে পারে। এই পরিবর্তনগুলো সক্রিয় করার আগে, সেই অ্যান্ড্রয়েড সংস্করণের জন্য কম্প্যাটিবিলিটি ফ্রেমওয়ার্ক তালিকা থেকে পরিবর্তনের বিবরণটি পড়ুন।

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

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

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

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

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

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

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

রাজ্য অর্থ
ENABLED পরিবর্তনটি কার্যকর করা হয়েছে এবং অ্যাপটি যদি পরিবর্তিত API-গুলো ব্যবহার করে, তবে এটি অ্যাপটির আচরণকে প্রভাবিত করবে।
DISABLED

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

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

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

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

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

adb shell dumpsys platform_compat

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

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

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

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

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

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

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

packageOverrides={com.my.package=false}

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

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

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

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

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

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

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

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

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

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

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

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

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

targetSDKVersion দ্বারা নিয়ন্ত্রিত পরিবর্তনসমূহ

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

যেহেতু আপনার অ্যাপটি এই পরিবর্তনগুলির একাধিক দ্বারা প্রভাবিত হতে পারে, তাই অ্যাপটি পরীক্ষা ও ডিবাগ করার সময় আপনাকে এই পরিবর্তনগুলির কয়েকটি একে একে বন্ধ করতে হতে পারে।

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

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

উদাহরণস্বরূপ, আপনি হয়তো পরবর্তী targetSdkVersion এ থাকা প্ল্যাটফর্মের ধারাবাহিক পরিবর্তনগুলোর বিপরীতে আপনার অ্যাপটি পরীক্ষা করছেন। ডেভেলপার অপশন বা 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

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

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

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

বিল্ড টাইপ ডিবাগ-অযোগ্য অ্যাপ ডিবাগযোগ্য অ্যাপ
সমস্ত পরিবর্তন targetSDKVersion দ্বারা নিয়ন্ত্রিত পরিবর্তনসমূহ অন্যান্য সমস্ত পরিবর্তন
ডেভেলপার প্রিভিউ বা বিটা বিল্ড টগল করা যাচ্ছে না টগল করা যাবে টগল করা যাবে
পাবলিক ব্যবহারকারী বিল্ড টগল করা যাচ্ছে না টগল করা যাবে টগল করা যাচ্ছে না