আচরণে পরিবর্তন: সব অ্যাপ

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

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

গোপনীয়তা

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

  • এককালীন অনুমতি: ব্যবহারকারীদের লোকেশন, মাইক্রোফোন ও ক্যামেরা অ্যাক্সেস করার জন্য আরও সাময়িক অনুমতি দেওয়ার বিকল্প প্রদান করে।
  • অনুমতি সংক্রান্ত ডায়ালগ দৃশ্যমানতা: কোনও অনুমতির জন্য বারবার অস্বীকার করার অর্থ হল "আবার জিজ্ঞাসা করবেন না।"
  • ডেটা অ্যাক্সেস অডিটিং: আপনার অ্যাপের নিজস্ব কোড এবং নির্ভরশীল লাইব্রেরির কোড, উভয় ক্ষেত্রেই আপনার অ্যাপ কোথায় ব্যক্তিগত ডেটা অ্যাক্সেস করে সেই সম্পর্কে ইনসাইট পান।
  • সিস্টেম অ্যালার্ট উইন্ডো অনুমতি: নির্দিষ্ট কিছু শ্রেণীর অ্যাপকে অনুরোধের ভিত্তিতে অটোমেটিক SYSTEM_ALERT_WINDOW অনুমতি দেওয়া হয়। এছাড়াও, ACTION_MANAGE_OVERLAY_PERMISSION ইনটেন্ট অ্যাকশন সহ ইনটেন্ট সবসময় ব্যবহারকারীদের সিস্টেম সেটিংসের স্ক্রিনে নিয়ে যায়।
  • স্থায়ী সিম কার্ড আইডেন্টিফায়ার: Android 11 ও তার পরবর্তী ভার্সনে, getIccId() পদ্ধতির মাধ্যমে রিসেট করা যায় না এমন ICCID-তে অ্যাক্সেস সীমিত করা হয়েছে। এই পদ্ধতিটি একটি নন-নাল, খালি স্ট্রিং রিটার্ন করে। ডিভাইসে ইনস্টল করা সিম কার্ড অনন্যভাবে শনাক্ত করতে, পরিবর্তে getSubscriptionId() পদ্ধতি ব্যবহার করুন। সাবস্ক্রিপশন আইডি, ফিজিক্যাল ও ইলেকট্রনিক সহ ইনস্টল করা সিম কার্ড অনন্যভাবে শনাক্ত করার জন্য একটি ইন্ডেক্স ভ্যালু (১ থেকে শুরু) প্রদান করে। ডিভাইস ফ্যাক্টরি রিসেট না করা পর্যন্ত, প্রদত্ত সিমের জন্য এই শনাক্তকারীর মান স্থির থাকে।

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

Exposure Notifications

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

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

নিরাপত্তা

SSL সকেট ডিফল্ট হিসেবে Conscrypt SSL ইঞ্জিন ব্যবহার করে

Android-এর ডিফল্ট SSLSocket ইমপ্লিমেন্টেশন Conscrypt-এর উপর ভিত্তি করে তৈরি। Android ১১ থেকে, সেই ইমপ্লিমেন্টেশন ইন্টার্নালি Conscrypt-এর SSLEngine-এর উপরে তৈরি করা হয়েছে।

Scudo Hardened Allocator

Android 11, হিপ অ্যালোকেশন পরিষেবা দিতে ইন্টার্নালি Scudo Hardened Allocator ব্যবহার করে। Scudo কিছু ধরনের মেমরি নিরাপত্তা লঙ্ঘন শনাক্ত ও প্রশমিত করতে সক্ষম। আপনি যদি নেটিভ ক্র্যাশ রিপোর্টে Scudo-সম্পর্কিত ক্র্যাশ (যেমন, Scudo ERROR:) দেখতে পান, তাহলে Scudo সমস্যার সমাধানকরণ ডকুমেন্টেশন দেখুন।

অ্যাপ ব্যবহারের পরিসংখ্যান

ব্যবহারকারীদের আরও ভালোভাবে সুরক্ষিত করতে, Android 11 প্রতিটি ব্যবহারকারীর অ্যাপ ব্যবহারের পরিসংখ্যান ক্রেডেনশিয়াল এনক্রিপ্ট করা স্টোরেজে সেভ করে। তাই, isUserUnlocked() true রিটার্ন না করা পর্যন্ত সিস্টেম বা কোনও অ্যাপই সেই ডেটা অ্যাক্সেস করতে পারবে না, যা নিম্নলিখিতগুলির মধ্যে কোনও একটি ঘটার পরে হয়:

  • সিস্টেম স্টার্টআপের পরে ব্যবহারকারী প্রথমবার তার ডিভাইস আনলক করেন।
  • ব্যবহারকারী ডিভাইসে তার অ্যাকাউন্টে পাল্টে নেন।

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

5G-এর জন্য এমুলেটর সাপোর্ট

Android 11-এ 5G API যোগ করা হয়েছে যাতে আপনার অ্যাপে অত্যাধুনিক ফিচার যোগ করা যায়। ফিচার যোগ করার সাথে সাথে সেগুলি পরীক্ষা করতে, আপনি Android SDK এমুলেটর-এর নতুন ক্ষমতা ব্যবহার করতে পারেন। এমুলেটর ভার্সন 30.0.22-এ নতুন ফাংশনালিটি যোগ করা হয়েছে। 5G নেটওয়ার্ক বেছে নিলে সেটিং TelephonyDisplayInfo-কে OVERRIDE_NETWORK_TYPE_NR_NSA-এ সেট করে, আনুমানিক ব্যান্ডউইথ পরিবর্তন করে এবং আপনাকে মিটার্ডনেস সেট করার অনুমতি দেয় যাতে আপনি যাচাই করতে পারেন যে NET_CAPABILITY_TEMPORARILY_NOT_METERED স্ট্যাটাসে পরিবর্তন হলে আপনার অ্যাপ যথাযথভাবে রেসপন্স করছে কিনা।

পারফর্ম্যান্স ও ডিবাগিং

JobScheduler API কল করার সীমা ডিবাগ করা

Android 11 অ্যাপের জন্য ডিবাগিং সহায়তা প্রদান করে যাতে সম্ভাব্য JobScheduler API ইনভোকেশন শনাক্ত করা যায় যা নির্দিষ্ট রেট সীমা অতিক্রম করেছে। ডেভেলপাররা এই সুবিধা ব্যবহার করে পারফর্ম্যান্স সংক্রান্ত সম্ভাব্য সমস্যা শনাক্ত করতে পারেন। যেসব অ্যাপের debuggable ম্যানিফেস্ট অ্যাট্রিবিউট 'ট্রু' হিসেবে সেট করা আছে, সেগুলির ক্ষেত্রে রেট সীমার বাইরে JobScheduler API ইনভোকেশন RESULT_FAILURE রিটার্ন করবে। সীমা এমনভাবে সেট করা হয় যাতে বৈধ ব্যবহারের ক্ষেত্রে কোনও প্রভাব না পড়ে।

ফাইল ডেসক্রিপটর স্যানিটাইজার (fdsan)

Android 10-এ fdsan (ফাইল ডেসক্রিপটর স্যানিটাইজার) চালু করা হয়েছে। fdsan ফাইল ডেসক্রিপটর মালিকানার অপব্যবহার শনাক্ত করে, যেমন বন্ধ-করার-পরে-ব্যবহার এবং ডবল-ক্লোজ। Android ১১-এ fdsan-এর ডিফল্ট মোড পরিবর্তন করা হচ্ছে। fdsan এখন কোনও সমস্যা শনাক্ত করলে বাতিল করে দেয়; আগে সতর্কতা লগ করে চালিয়ে যেত। আপনার অ্যাপ্লিকেশনে fdsan-এর কারণে ক্র্যাশ দেখতে পেলে, fdsan documentation দেখুন।

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

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

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

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

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

Maps v1 শেয়ার করা লাইব্রেরি সরানো হয়েছে

Android 11-এ Maps-এর শেয়ার করা লাইব্রেরির V1 সম্পূর্ণভাবে সরিয়ে দেওয়া হয়েছে। এই লাইব্রেরিটি আগে বন্ধ করা হয়েছিল এবং Android 10-এ অ্যাপের জন্য কাজ করা বন্ধ করে দিয়েছিল। যেসব অ্যাপ আগে Android 9 (API লেভেল ২৮) বা তার আগের ভার্সন চলছে এমন ডিভাইসের জন্য এই শেয়ার করা লাইব্রেরির উপর নির্ভর করত, সেগুলির পরিবর্তে Maps SDK for Android ব্যবহার করা উচিত।

অন্যান্য অ্যাপের সাথে ইন্টার‍্যাকশন

কন্টেন্ট URI শেয়ার করুন

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

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

লাইব্রেরি লোড হচ্ছে

অ্যাবসোলিউট পাথ সহ ICU কমন লাইব্রেরি লোড করা হচ্ছে

API 28 এবং তার নিচের ভার্সন টার্গেট করা অ্যাপ, "/system/lib/libicuuc.so" অ্যাবসোলিউট পাথের সাথে libicuuc লোড করতে dlopen(3) ব্যবহার করতে পারবে না। এইসব অ্যাপের জন্য, dlopen("/system/lib/libicuuc.so", ...) একটি নাল হ্যান্ডেল ফিরিয়ে দেবে।

পরিবর্তে, লাইব্রেরি লোড করতে, ফাইলের নাম হিসেবে লাইব্রেরির নাম ব্যবহার করুন, যেমন dlopen("libicuuc.so", ...)।