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

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

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

গোপনীয়তা

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

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

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

নিরাপত্তা

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

পরিবর্তন করার ধাপের বিবরণ

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

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

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

Android 11-এর সাথে আপনার অ্যাপের কম্প্যাটিবিলিটি পরীক্ষা করার সময়, আপনি নিম্নলিখিত 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 ম্যানিফেস্ট ডকুমেন্টেশন দেখুন।

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

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

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

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

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

Toast কলব্যাক

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

টেক্সট টোস্ট API পরিবর্তন

Android 11 বা তার পরবর্তী যেকোনও ভার্সনকে টার্গেট করে এমন অ্যাপ টেক্সট টোস্টের জন্য নিম্নলিখিত পার্শ্বপ্রতিক্রিয়া দেখতে পায়:

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

কানেক্টিভিটি

APN ডেটাবেসে সীমিত রিড অ্যাক্সেস

পরিবর্তন করার ধাপের বিবরণ

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

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

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

Android 11-এর সাথে আপনার অ্যাপের কম্প্যাটিবিলিটি পরীক্ষা করার সময়, আপনি নিম্নলিখিত 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

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

Android 11-কে টার্গেট করে এমন অ্যাপের ক্ষেত্রে এখন Telephony প্রদানকারীর APN ডেটাবেস পড়তে বা অ্যাক্সেস করতে Manifest.permission.WRITE_APN_SETTINGS প্রিভিলেজড অনুমতি প্রয়োজন। এই অনুমতি ছাড়া APN ডেটাবেস অ্যাক্সেস করার চেষ্টা করলে নিরাপত্তা সংক্রান্ত ব্যতিক্রম তৈরি হয়।

অ্যাক্সেসিবিলিটি

ম্যানিফেস্ট ফাইলে TTS ইঞ্জিনের সাথে ইন্টার‍্যাকশন ঘোষণা করুন

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

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

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

পরিবর্তন করার ধাপের বিবরণ

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

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

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

Android 11-এর সাথে আপনার অ্যাপের কম্প্যাটিবিলিটি পরীক্ষা করার সময়, আপনি নিম্নলিখিত 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

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

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

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

ক্যামেরা

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

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

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

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

কম্প্রেস করা রিসোর্স ফাইল

পরিবর্তন করার ধাপের বিবরণ

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

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

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

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

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

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

Android 11 (API লেভেল ৩০) বা তার পরবর্তী ভার্সনকে টার্গেট করে এমন অ্যাপে কমপ্রেস করা resources.arsc ফাইল থাকলে বা এই ফাইল ৪-বাইট বাউন্ডারিতে অ্যালাইন করা না থাকলে, অ্যাপ ইনস্টল করা যাবে না। এই শর্তগুলির মধ্যে কোনও একটি পূরণ হলে, সিস্টেমের মাধ্যমে এই ফাইল মেমরি-ম্যাপ করা যাবে না। রিসোর্স টেবিল যা মেমরি-ম্যাপ করা যায় না তা অবশ্যই RAM-এর একটি বাফারে পড়তে হবে, যার ফলে সিস্টেমে অপ্রয়োজনীয় মেমরি চাপ পড়ে এবং ডিভাইসে RAM-এর ব্যবহার অনেক বেড়ে যায়।

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

APK Signature Scheme v2 এখন প্রয়োজন

Android 11 (API লেভেল ৩০) টার্গেট করে এমন অ্যাপ যেগুলি বর্তমানে শুধুমাত্র APK Signature Scheme v1 ব্যবহার করে সাইন করা হয়েছে, সেগুলি এখন APK Signature Scheme v2 বা তার চেয়ে উন্নত ভার্সন ব্যবহার করে সাইন করতে হবে। Android 11-এ চলে এমন ডিভাইসে ব্যবহারকারীরা APK স্বাক্ষর স্কিম v1-এর মাধ্যমে স্বাক্ষরিত অ্যাপ ইনস্টল বা আপডেট করতে পারবেন না।

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

Firebase

Firebase JobDispatcher এবং GCMNetworkManager

আপনার অ্যাপ API লেভেল ৩০ বা তার বেশি টার্গেট করলে, Android 6.0 (API লেভেল ২৩) বা তার বেশি ভার্সনে চলা ডিভাইসে Firebase JobDispatcher এবং GcmNetworkManager API কল বন্ধ করা থাকে। মাইগ্রেশন সংক্রান্ত তথ্যের জন্য, Firebase JobDispatcher থেকে WorkManager-এ মাইগ্রেট করা এবং GCMNetworkManager থেকে WorkManager-এ মাইগ্রেট করা দেখুন।

স্পিচ শনাক্তকরণ

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

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

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

পরিবর্তন করার ধাপের বিবরণ

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

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

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

Android 11-এর সাথে আপনার অ্যাপের কম্প্যাটিবিলিটি পরীক্ষা করার সময়, আপনি নিম্নলিখিত 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

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

Android 11 (API লেভেল ৩০) টার্গেট করা অ্যাপের ক্ষেত্রে, যখনই Editor.clear কল করা হয়, তখন null কী সহ OnSharedPreferenceChangeListener.onSharedPreferenceChanged -এ কলব্যাক করা হয়।

SDK-নয় এমন ইন্টারফেস সংক্রান্ত বিধিনিষেধ

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

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

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

Android-এর এই রিলিজের পরিবর্তন সম্পর্কে আরও জানতে, Android 11-এ নন-SDK ইন্টারফেস সংক্রান্ত বিধিনিষেধের আপডেট দেখুন। সাধারণত নন-SDK ইন্টারফেস সম্পর্কে আরও জানতে, নন-SDK ইন্টারফেসের উপর বিধিনিষেধ দেখুন।