আচরণ পরিবর্তন: Android 11 টার্গেট করা অ্যাপ

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

অ্যান্ড্রয়েড ১১-এ চালিত সমস্ত অ্যাপকে প্রভাবিত করে এমন আচরণগত পরিবর্তনের তালিকাটিও পর্যালোচনা করতে ভুলবেন না।

গোপনীয়তা

ব্যবহারকারীর গোপনীয়তা বাড়াতে অ্যান্ড্রয়েড ১১ কিছু পরিবর্তন ও বিধিনিষেধ এনেছে, যার মধ্যে নিম্নলিখিত বিষয়গুলো অন্তর্ভুক্ত:

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

আরও জানতে, গোপনীয়তা পৃষ্ঠাটি দেখুন।

নিরাপত্তা

হিপ পয়েন্টার ট্যাগিং

বিবরণ পরিবর্তন করুন

নাম পরিবর্তন করুন : NATIVE_HEAP_POINTER_TAGGING

পরিবর্তন আইডি : 135754954

কীভাবে টগল করবেন

অ্যান্ড্রয়েড ১১-এর সাথে আপনার অ্যাপের সামঞ্জস্যতা পরীক্ষা করার সময়, আপনি নিম্নলিখিত ADB কমান্ডগুলি ব্যবহার করে এই পরিবর্তনটি চালু বা বন্ধ করতে পারেন:

adb shell am compat enable (135754954|NATIVE_HEAP_POINTER_TAGGING) PACKAGE_NAME
adb shell am compat disable (135754954|NATIVE_HEAP_POINTER_TAGGING) PACKAGE_NAME

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

হিপ পয়েন্টারগুলির মোস্ট সিগনিফিক্যান্ট বাইটে (MSB) এখন একটি নন-জিরো ট্যাগ থাকবে। যেসব অ্যাপ্লিকেশন ভুলভাবে পয়েন্টার ব্যবহার করে, যার মধ্যে MSB পরিবর্তনকারী অ্যাপ্লিকেশনও অন্তর্ভুক্ত, সেগুলি এখন ক্র্যাশ করতে পারে বা অন্যান্য সমস্যার সম্মুখীন হতে পারে। ARM মেমরি ট্যাগিং এক্সটেনশন (MTE) সক্রিয় থাকা ভবিষ্যতের হার্ডওয়্যারকে সমর্থন করার জন্য এই পরিবর্তনটি প্রয়োজনীয়। আরও জানতে, ট্যাগড পয়েন্টারস দেখুন।

এই বৈশিষ্ট্যটি নিষ্ক্রিয় করতে, allowNativeHeapPointerTagging ম্যানিফেস্ট ডকুমেন্টেশন দেখুন।

টোস্টের আপডেট

ব্যাকগ্রাউন্ড থেকে কাস্টম টোস্ট ব্লক করা হয়েছে।

নিরাপত্তাজনিত কারণে এবং ব্যবহারকারীর ভালো অভিজ্ঞতা বজায় রাখার জন্য, সিস্টেম সেইসব টোস্ট ব্লক করে দেয় যেগুলিতে কাস্টম ভিউ থাকে, যদি সেই টোস্টগুলি অ্যান্ড্রয়েড ১১ বা তার উচ্চতর সংস্করণকে টার্গেট করা কোনো অ্যাপ থেকে ব্যাকগ্রাউন্ড থেকে পাঠানো হয়। উল্লেখ্য যে, টেক্সট টোস্টের অনুমতি এখনও রয়েছে; এগুলি হলো Toast.makeText() ব্যবহার করে তৈরি করা টোস্ট, যেগুলিতে setView() কল করা হয় না।

যদি আপনার অ্যাপ ব্যাকগ্রাউন্ড থেকে কোনো কাস্টম ভিউ সম্বলিত টোস্ট পোস্ট করার চেষ্টা করে, তাহলে সিস্টেম ব্যবহারকারীকে বার্তাটি দেখায় না। পরিবর্তে, সিস্টেম লগক্যাটে নিম্নলিখিত বার্তাটি লগ করে:

W/NotificationService: Blocking custom toast from package \
  <package> due to package not in the foreground

টোস্ট কলব্যাক

কোনো টোস্ট (টেক্সট বা কাস্টম) দেখা গেলে বা অদৃশ্য হলে বিজ্ঞপ্তি পেতে চাইলে, addCallback() মেথডটি ব্যবহার করুন, যা অ্যান্ড্রয়েড ১১-এ যোগ করা হয়েছিল।

টেক্সট টোস্ট এপিআই পরিবর্তন

অ্যান্ড্রয়েড ১১ বা তার উচ্চতর সংস্করণকে লক্ষ্য করে তৈরি অ্যাপগুলিতে টেক্সট টোস্টের ক্ষেত্রে নিম্নলিখিত পার্শ্ব প্রতিক্রিয়াগুলি দেখা যায়:

  • getView() মেথডটি null রিটার্ন করে।
  • নিম্নলিখিত মেথডগুলোর রিটার্ন ভ্যালুগুলো প্রকৃত মানকে প্রতিফলিত করে না, তাই আপনার অ্যাপে এগুলোর উপর নির্ভর করা উচিত নয়:
  • নিম্নলিখিত মেথডগুলো নো-অপস, তাই আপনার অ্যাপে এগুলো ব্যবহার করা উচিত নয়:

সংযোগ

APN ডেটাবেসে পঠন অ্যাক্সেস সীমাবদ্ধ

বিবরণ পরিবর্তন করুন

নাম পরিবর্তন করুন : APN_READING_PERMISSION_CHANGE_ID

পরিবর্তন আইডি : 124107808

কীভাবে টগল করবেন

অ্যান্ড্রয়েড ১১-এর সাথে আপনার অ্যাপের সামঞ্জস্যতা পরীক্ষা করার সময়, আপনি নিম্নলিখিত ADB কমান্ডগুলি ব্যবহার করে এই পরিবর্তনটি চালু বা বন্ধ করতে পারেন:

adb shell am compat enable (124107808|APN_READING_PERMISSION_CHANGE_ID) PACKAGE_NAME
adb shell am compat disable (124107808|APN_READING_PERMISSION_CHANGE_ID) PACKAGE_NAME

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

অ্যান্ড্রয়েড ১১-এর জন্য তৈরি অ্যাপগুলোকে এখন টেলিফোনি প্রোভাইডারের APN ডেটাবেস পড়তে বা অ্যাক্সেস করতে Manifest.permission.WRITE_APN_SETTINGS প্রিভিলেজড পারমিশনটি প্রয়োজন। এই পারমিশন ছাড়া APN ডেটাবেস অ্যাক্সেস করার চেষ্টা করলে একটি সিকিউরিটি এক্সেপশন তৈরি হয়।

প্রবেশগম্যতা

ম্যানিফেস্ট ফাইলে টিটিএস ইঞ্জিনগুলির সাথে মিথস্ক্রিয়া ঘোষণা করুন

প্যাকেজ ভিজিবিলিটিতে পরিবর্তনের কারণে, যে অ্যাপগুলো অ্যান্ড্রয়েড ১১-কে টার্গেট করে এবং টেক্সট-টু-স্পিচ (TTS) ইঞ্জিনের সাথে ইন্টারঅ্যাক্ট করে, সেগুলোকে তাদের ম্যানিফেস্ট ফাইলে নিম্নলিখিত <queries> এলিমেন্টটি যোগ করতে হবে:

<queries>
  <intent>
    <action
       android:name="android.intent.action.TTS_SERVICE" />
  </intent>
</queries>

মেটাডেটা ফাইলে অ্যাক্সেসিবিলিটি বাটনের ব্যবহার ঘোষণা করুন।

বিবরণ পরিবর্তন করুন

নাম পরিবর্তন করুন : REQUEST_ACCESSIBILITY_BUTTON_CHANGE

পরিবর্তন আইডি : 136293963

কীভাবে টগল করবেন

অ্যান্ড্রয়েড ১১-এর সাথে আপনার অ্যাপের সামঞ্জস্যতা পরীক্ষা করার সময়, আপনি নিম্নলিখিত ADB কমান্ডগুলি ব্যবহার করে এই পরিবর্তনটি চালু বা বন্ধ করতে পারেন:

adb shell am compat enable (136293963|REQUEST_ACCESSIBILITY_BUTTON_CHANGE) PACKAGE_NAME
adb shell am compat disable (136293963|REQUEST_ACCESSIBILITY_BUTTON_CHANGE) PACKAGE_NAME

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

অ্যান্ড্রয়েড ১১ থেকে, আপনার অ্যাক্সেসিবিলিটি সার্ভিস রানটাইমে এমন কোনো ঘোষণা দিতে পারে না যে সিস্টেমের অ্যাক্সেসিবিলিটি বাটনের সাথে এর একটি অ্যাসোসিয়েশন রয়েছে। যদি আপনি কোনো AccessibilityServiceInfo অবজেক্টের flags প্রপার্টিতে AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON যুক্ত করেন, তাহলে ফ্রেমওয়ার্ক আপনার সার্ভিসে অ্যাক্সেসিবিলিটি বাটনের কলব্যাক ইভেন্টগুলো পাঠায় না।

আপনার অ্যাক্সেসিবিলিটি সার্ভিসে অ্যাক্সেসিবিলিটি কলব্যাক ইভেন্টগুলি গ্রহণ করার জন্য, আপনার অ্যাক্সেসিবিলিটি সার্ভিস মেটাডেটা ফাইল ব্যবহার করে অ্যাক্সেসিবিলিটি বাটনের সাথে আপনার সার্ভিসের সংযোগ ঘোষণা করুন। accessibilityFlags অ্যাট্রিবিউটের সংজ্ঞায় flagRequestAccessibilityButton ভ্যালুটি অন্তর্ভুক্ত করুন। অ্যাক্সেসিবিলিটি সার্ভিস মেটাডেটা ফাইলের একটি সাধারণ অবস্থান হলো res/raw/accessibilityservice.xml

ক্যামেরা

মিডিয়া ইন্টেন্ট অ্যাকশনগুলির জন্য সিস্টেমের ডিফল্ট ক্যামেরা প্রয়োজন।

অ্যান্ড্রয়েড ১১ থেকে, শুধুমাত্র আগে থেকে ইনস্টল করা সিস্টেম ক্যামেরা অ্যাপগুলোই নিম্নলিখিত ইনটেন্ট অ্যাকশনগুলোতে সাড়া দিতে পারবে:

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

অ্যাপ প্যাকেজিং এবং ইনস্টলেশন

সংকুচিত রিসোর্স ফাইল

বিবরণ পরিবর্তন করুন

নাম পরিবর্তন করুন : RESOURCES_ARSC_COMPRESSED

পরিবর্তন আইডি : 132742131

কীভাবে টগল করবেন

অ্যান্ড্রয়েড ১১-এর সাথে আপনার অ্যাপের সামঞ্জস্যতা পরীক্ষা করার সময়, আপনি নিম্নলিখিত ADB কমান্ডগুলি ব্যবহার করে এই পরিবর্তনটি চালু বা বন্ধ করতে পারেন:

adb shell am compat enable (132742131|RESOURCES_ARSC_COMPRESSED) PACKAGE_NAME
adb shell am compat disable (132742131|RESOURCES_ARSC_COMPRESSED) PACKAGE_NAME

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

অ্যান্ড্রয়েড ১১ (এপিআই লেভেল ৩০) বা তার উচ্চতর সংস্করণকে লক্ষ্য করে তৈরি অ্যাপগুলো ইনস্টল করা যায় না, যদি সেগুলোতে একটি কম্প্রেসড resources.arsc ফাইল থাকে অথবা ফাইলটি ৪-বাইট বাউন্ডারিতে অ্যালাইন করা না থাকে। এই শর্তগুলোর কোনো একটি উপস্থিত থাকলে, সিস্টেম এই ফাইলটিকে মেমোরি-ম্যাপ করতে পারে না। যে রিসোর্স টেবিলগুলো মেমোরি-ম্যাপ করা যায় না, সেগুলোকে র‍্যামের একটি বাফারে রিড করতে হয়, যার ফলে সিস্টেমের উপর অপ্রয়োজনীয় মেমোরি চাপ সৃষ্টি হয় এবং ডিভাইসে র‍্যামের ব্যবহার ব্যাপকভাবে বেড়ে যায়।

আপনি যদি আগে একটি সংকুচিত resources.arsc ফাইল ব্যবহার করে থাকেন, তাহলে এর পরিবর্তে বিকল্প কৌশল চেষ্টা করুন, যেমন অ্যাপ রিসোর্স সংকুচিত করা বা আপনার অ্যাপকে সংকুচিত, অস্পষ্ট এবং অপ্টিমাইজ করার জন্য অন্যান্য পদ্ধতি অবলম্বন করুন।

এখন APK সিগনেচার স্কিম v2 প্রয়োজন

যেসব অ্যাপ অ্যান্ড্রয়েড ১১ (এপিআই লেভেল ৩০) টার্গেট করে তৈরি এবং বর্তমানে শুধু এপিকে সিগনেচার স্কিম ভি১ (APK Signature Scheme v1) ব্যবহার করে সাইন করা আছে, সেগুলোকে এখন থেকে অবশ্যই এপিকে সিগনেচার স্কিম ভি২ (APK Signature Scheme v2) বা তার উচ্চতর সংস্করণ ব্যবহার করে সাইন করতে হবে। অ্যান্ড্রয়েড ১১ চালিত ডিভাইসগুলোতে ব্যবহারকারীরা শুধুমাত্র এপিকে সিগনেচার স্কিম ভি১ (APK Signature Scheme v1) দিয়ে সাইন করা অ্যাপ ইনস্টল বা আপডেট করতে পারবেন না।

আপনার অ্যাপটি APK Signature Scheme v2 বা তার উচ্চতর সংস্করণ দিয়ে স্বাক্ষরিত হচ্ছে কিনা, তা যাচাই করতে আপনি Android Studio অথবা কমান্ড লাইনে থাকা apksigner টুলটি ব্যবহার করতে পারেন।

ফায়ারবেস

ফায়ারবেস জবডিসপ্যাচার এবং জিসিএমনেটওয়ার্কম্যানেজার

আপনার অ্যাপ যদি এপিআই লেভেল ৩০ বা তার বেশি টার্গেট করে, তাহলে অ্যান্ড্রয়েড ৬.০ (এপিআই লেভেল ২৩) বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলিতে Firebase JobDispatcher এবং GcmNetworkManager এপিআই কলগুলি নিষ্ক্রিয় থাকে। মাইগ্রেশন তথ্যের জন্য, “Migrating from Firebase JobDispatcher to WorkManager” এবং “Migrating from GCMNetworkManager to WorkManager” দেখুন।

বক্তৃতা শনাক্তকরণ

প্যাকেজ ভিজিবিলিটিতে পরিবর্তনের কারণে, যে অ্যাপগুলো অ্যান্ড্রয়েড ১১ টার্গেট করে এবং স্পিচ রিকগনিশন সার্ভিসের সাথে ইন্টারঅ্যাক্ট করে, সেগুলোকে তাদের ম্যানিফেস্ট ফাইলে নিম্নলিখিত <queries> এলিমেন্টটি যোগ করতে হবে:

<queries>
  <intent>
    <action
       android:name="android.speech.RecognitionService" />
  </intent>
</queries>

OnSharedPreferenceChangeListener-এর জন্য কলব্যাক পরিবর্তন

বিবরণ পরিবর্তন করুন

নাম পরিবর্তন করুন : CALLBACK_ON_CLEAR_CHANGE

পরিবর্তন আইডি : 119147584

কীভাবে টগল করবেন

অ্যান্ড্রয়েড ১১-এর সাথে আপনার অ্যাপের সামঞ্জস্যতা পরীক্ষা করার সময়, আপনি নিম্নলিখিত ADB কমান্ডগুলি ব্যবহার করে এই পরিবর্তনটি চালু বা বন্ধ করতে পারেন:

adb shell am compat enable (119147584|CALLBACK_ON_CLEAR_CHANGE) PACKAGE_NAME
adb shell am compat disable (119147584|CALLBACK_ON_CLEAR_CHANGE) PACKAGE_NAME

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

অ্যান্ড্রয়েড ১১ (এপিআই লেভেল ৩০) টার্গেট করা অ্যাপগুলোর ক্ষেত্রে, যখনই Editor.clear কল করা হয়, তখন এখন থেকে OnSharedPreferenceChangeListener.onSharedPreferenceChanged এ একটি null কী-সহ একটি কলব্যাক করা হয়।

নন-এসডিকে ইন্টারফেস সীমাবদ্ধতা

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

আপনার অ্যাপটি যদি অ্যান্ড্রয়েড ১১-কে টার্গেট না করে, তবে এই পরিবর্তনগুলোর কিছু হয়তো আপনাকে তাৎক্ষণিকভাবে প্রভাবিত করবে না। তবে, যদিও আপনি বর্তমানে কিছু নন-এসডিকে ইন্টারফেস ব্যবহার করতে পারবেন ( যা আপনার অ্যাপের টার্গেট এপিআই লেভেলের উপর নির্ভর করে ), যেকোনো নন-এসডিকে মেথড বা ফিল্ড ব্যবহার করলে আপনার অ্যাপটি ভেঙে যাওয়ার উচ্চ ঝুঁকি সবসময়ই থাকে।

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

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