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

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

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

গোপনীয়তা

অ্যান্ড্রয়েড 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 ম্যানিফেস্ট ডকুমেন্টেশন দেখুন৷

toasts আপডেট

পটভূমি থেকে কাস্টম টোস্ট ব্লক করা হয়েছে

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

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

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

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

আপনি যদি টোস্ট (টেক্সট বা কাস্টম) প্রদর্শিত বা অদৃশ্য হয়ে গেলে বিজ্ঞপ্তি পেতে চান, 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 কে টার্গেট করে তাদের এখন Manifest.permission.WRITE_APN_SETTINGS বিশেষ অনুমতির প্রয়োজন হবে টেলিফোনি প্রদানকারী APN ডাটাবেস পড়তে বা অ্যাক্সেস করতে। এই অনুমতি ছাড়া APN ডাটাবেস অ্যাক্সেস করার চেষ্টা করা একটি নিরাপত্তা ব্যতিক্রম তৈরি করে।

অ্যাক্সেসযোগ্যতা

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

প্যাকেজ দৃশ্যমানতার পরিবর্তনের কারণে, যে অ্যাপগুলি Android 11 টার্গেট করে এবং একটি টেক্সট-টু-স্পীচ (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

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

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

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

ক্যামেরা

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

অ্যান্ড্রয়েড 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 স্তর 30) বা উচ্চতরকে লক্ষ্য করে সেগুলি ইনস্টল করা যাবে না যদি তাদের মধ্যে একটি সংকুচিত resources.arsc arsc ফাইল থাকে বা যদি এই ফাইলটি 4-বাইটের সীমানায় সারিবদ্ধ না থাকে। এই ফাইলটি সিস্টেম দ্বারা মেমরি-ম্যাপ করা যাবে না যদি এই শর্তগুলির মধ্যে একটি উপস্থিত থাকে। মেমরি-ম্যাপ করা যায় না এমন রিসোর্স টেবিলগুলিকে অবশ্যই RAM-এর একটি বাফারে পড়তে হবে, যার ফলে সিস্টেমে অপ্রয়োজনীয় মেমরির চাপ পড়ে এবং ডিভাইসে RAM-র ব্যবহার অনেক বেড়ে যায়।

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

APK স্বাক্ষর স্কিম v2 এখন প্রয়োজন

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

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

ফায়ারবেস

Firebase JobDispatcher এবং GCMNetworkManager

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

বক্তৃতা স্বীকৃতি

প্যাকেজ দৃশ্যমানতার পরিবর্তনের কারণে, যে অ্যাপগুলি Android 11 কে লক্ষ্য করে এবং একটি স্পিচ রিকগনিশন পরিষেবার সাথে ইন্টারঅ্যাক্ট করে তাদের তাদের ম্যানিফেস্ট ফাইলগুলিতে নিম্নলিখিত <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 স্তর 30) টার্গেট করা অ্যাপগুলির জন্য, যখনই Editor.clear কল করা হয়, এখন একটি null কী দিয়ে OnSharedPreferenceChangeListener.onSharedPreferenceChanged এ একটি কলব্যাক করা হয়৷

অ-SDK ইন্টারফেস সীমাবদ্ধতা

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

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

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

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