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

অ্যান্ড্রয়েড 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 সংস্করণকে লক্ষ্য করে। আপনি যখন একটি পরিবর্তন চালু বা বন্ধ টগল করেন, আপনি এটির ডিফল্ট অবস্থা ওভাররাইড করেন।

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

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

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

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

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

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

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

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

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

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

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

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

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 shell am compat reset (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME

টগলিং পরিবর্তনগুলিতে বিধিনিষেধ

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

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

বিল্ড টাইপ অ-debugbable অ্যাপ্লিকেশন ডিবাগেবল অ্যাপ
সব পরিবর্তন টার্গেটসডকভার্স দ্বারা গেটেড পরিবর্তনগুলি অন্য সব পরিবর্তন
বিকাশকারী পূর্বরূপ বা বিটা বিল্ড টগল করতে পারি না টগল করতে পারেন টগল করতে পারেন
পাবলিক ব্যবহারকারী বিল্ড টগল করতে পারি না টগল করতে পারেন টগল করতে পারি না
,

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

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

কোন পরিবর্তনগুলি সক্ষম করা আছে তা কীভাবে সনাক্ত করবেন

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

এডিবি ব্যবহার করে সক্ষম পরিবর্তনগুলি সনাক্ত করুন

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

adb shell dumpsys platform_compat

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

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

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

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

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

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

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

packageOverrides={com.my.package=false}

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

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

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

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

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

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

টগল যখন পরিবর্তন বন্ধ

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

সমস্ত অ্যাপ্লিকেশন জন্য পরিবর্তন সক্ষম

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 shell am compat reset (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME

টগলিং পরিবর্তনগুলিতে বিধিনিষেধ

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

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

বিল্ড টাইপ অ-debugbable অ্যাপ্লিকেশন ডিবাগেবল অ্যাপ
সব পরিবর্তন টার্গেটসডকভার্স দ্বারা গেটেড পরিবর্তনগুলি অন্য সব পরিবর্তন
বিকাশকারী পূর্বরূপ বা বিটা বিল্ড টগল করতে পারি না টগল করতে পারেন টগল করতে পারেন
পাবলিক ব্যবহারকারী বিল্ড টগল করতে পারি না টগল করতে পারেন টগল করতে পারি না