আচরণগত পরিবর্তন: অ্যান্ড্রয়েড ১৭ বা তার উচ্চতর ভার্সনকে লক্ষ্য করে অ্যাপ

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

আপনার অ্যাপের targetSdkVersion নির্বিশেষে Android 17-এ চলমান সমস্ত অ্যাপকে প্রভাবিত করে এমন আচরণগত পরিবর্তনের তালিকাটিও পর্যালোচনা করতে ভুলবেন না।

মূল কার্যকারিতা

অ্যান্ড্রয়েড ১৭-এ নিম্নলিখিত পরিবর্তনগুলো অন্তর্ভুক্ত রয়েছে, যা অ্যান্ড্রয়েড সিস্টেমের বিভিন্ন মূল সক্ষমতাকে সংশোধন বা প্রসারিত করে।

MessageQueue-এর নতুন লক-মুক্ত বাস্তবায়ন

অ্যান্ড্রয়েড ১৭ থেকে শুরু করে, অ্যান্ড্রয়েড ১৭ বা তার উচ্চতর ভার্সনগুলিকে লক্ষ্য করে তৈরি অ্যাপগুলি android.os.MessageQueue এর একটি নতুন লক-মুক্ত বাস্তবায়ন পায়। নতুন বাস্তবায়ন কর্মক্ষমতা উন্নত করে এবং মিস করা ফ্রেমগুলি হ্রাস করে, তবে MessageQueue ব্যক্তিগত ক্ষেত্র এবং পদ্ধতিগুলিতে প্রতিফলিত ক্লায়েন্টগুলিকে ভেঙে ফেলতে পারে।

প্রশমন কৌশল সহ আরও তথ্যের জন্য, MessageQueue আচরণ পরিবর্তন নির্দেশিকা দেখুন।

স্থির চূড়ান্ত ক্ষেত্রগুলি এখন অপরিবর্তনীয়।

Android 17 বা তার বেশি ভার্সনে চলমান অ্যাপগুলি, যেগুলি Android 17 বা তার বেশি ভার্সনকে লক্ষ্য করে, static final ফিল্ড পরিবর্তন করতে পারে না। যদি কোনও অ্যাপ প্রতিফলন ব্যবহার করে static final ফিল্ড পরিবর্তন করার চেষ্টা করে, তাহলে এটি একটি IllegalAccessException তৈরি করবে। JNI API (যেমন SetStaticLongField() ) এর মাধ্যমে এই ফিল্ডগুলির একটি পরিবর্তন করার চেষ্টা করলে অ্যাপটি ক্র্যাশ হবে।

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

অ্যান্ড্রয়েড ১৭ অ্যাক্সেসিবিলিটি উন্নত করতে নিম্নলিখিত পরিবর্তনগুলি এনেছে।

জটিল আইএমই ফিজিক্যাল কীবোর্ড টাইপিংয়ের অ্যাক্সেসিবিলিটি সাপোর্ট

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

অ্যাপ গ্রহণ

  • IME অ্যাপস: সম্পাদনা ক্ষেত্রে লেখা রচনা করার সময়, IME গুলি TextAttribute.Builder.setTextSuggestionSelected() ব্যবহার করে একটি নির্দিষ্ট রূপান্তর প্রার্থী নির্বাচিত হয়েছে কিনা তা নির্দেশ করতে পারে।

  • সম্পাদনা ক্ষেত্র সহ অ্যাপ: যে অ্যাপগুলি একটি কাস্টম InputConnection বজায় রাখে তারা TextAttribute.isTextSuggestionSelected() কল করে প্রার্থী নির্বাচনের ডেটা পুনরুদ্ধার করতে পারে। TYPE_VIEW_TEXT_CHANGED ইভেন্টগুলি প্রেরণ করার সময় এই অ্যাপগুলিকে AccessibilityEvent.setTextChangeTypes() কল করতে হবে। স্ট্যান্ডার্ড TextView ব্যবহার করে এমন Android 17 টার্গেট করা অ্যাপগুলিতে এই বৈশিষ্ট্যটি ডিফল্টরূপে সক্ষম থাকবে। (অর্থাৎ, TextView IME থেকে ডেটা পুনরুদ্ধার এবং অ্যাক্সেসিবিলিটি পরিষেবাগুলিতে ইভেন্টগুলি পাঠানোর সময় টেক্সট পরিবর্তনের ধরণ সেট করার কাজ পরিচালনা করবে)।

  • অ্যাক্সেসিবিলিটি পরিষেবা: TYPE_VIEW_TEXT_CHANGED ইভেন্টগুলি প্রক্রিয়া করে এমন অ্যাক্সেসিবিলিটি পরিষেবাগুলি পরিবর্তনের প্রকৃতি সনাক্ত করতে এবং সেই অনুযায়ী তাদের প্রতিক্রিয়া কৌশলগুলি সামঞ্জস্য করতে AccessibilityEvent.getTextChangeTypes() কল করতে পারে।

গোপনীয়তা

ব্যবহারকারীর গোপনীয়তা উন্নত করার জন্য অ্যান্ড্রয়েড ১৭-এ নিম্নলিখিত পরিবর্তনগুলো অন্তর্ভুক্ত করা হয়েছে।

অ্যান্ড্রয়েড ১৭-এর জন্য তৈরি অ্যাপগুলোর ক্ষেত্রে স্থানীয় নেটওয়ার্কের অনুমতি প্রয়োজন।

পরীক্ষার জন্য উপলব্ধ? (প্রয়োজনীয় বিল্ড) হ্যাঁ (অ্যান্ড্রয়েড ১৭ বা তার পরবর্তী সংস্করণ)
targetSDKVersion পরিবর্তন করার প্রয়োজন আছে কি? (এপিআই স্তর) হ্যাঁ (এপিআই লেভেল "CINNAMON_BUN" )
এই মানটি সম্পর্কে আরও তথ্যের জন্য ম্যানিফেস্ট অ্যাট্রিবিউটের ডকুমেন্টেশন দেখুন।

অ্যান্ড্রয়েড ১৭ ব্যবহারকারীদের অননুমোদিত লোকাল নেটওয়ার্ক অ্যাক্সেস থেকে রক্ষা করার জন্য ACCESS_LOCAL_NETWORK রানটাইম পারমিশন চালু করেছে। যেহেতু এটি বিদ্যমান NEARBY_DEVICES পারমিশন গ্রুপের অধীনে পড়ে, তাই যেসব ব্যবহারকারী ইতিমধ্যেই অন্যান্য NEARBY_DEVICES পারমিশন দিয়েছেন, তাদের কাছে পুনরায় অনুরোধ করা হয় না। এই নতুন আবশ্যকতাটি ক্ষতিকারক অ্যাপগুলোকে অবাধ লোকাল নেটওয়ার্ক অ্যাক্সেসের সুযোগ নিয়ে গোপনে ব্যবহারকারীকে ট্র্যাক করা এবং ফিঙ্গারপ্রিন্টিং করা থেকে বিরত রাখে। এই পারমিশনটি ঘোষণা এবং অনুরোধ করার মাধ্যমে, আপনার অ্যাপ লোকাল এরিয়া নেটওয়ার্ক (LAN)-এ থাকা ডিভাইস, যেমন স্মার্ট হোম ডিভাইস বা কাস্টিং রিসিভার, খুঁজে বের করতে এবং সেগুলোর সাথে সংযোগ স্থাপন করতে পারে।

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

আরও তথ্যের জন্য, স্থানীয় নেটওয়ার্ক অনুমতি সংক্রান্ত ডকুমেন্টেশন দেখুন।

নিরাপত্তা

অ্যান্ড্রয়েড ১৭ ডিভাইস ও অ্যাপ সুরক্ষায় নিম্নলিখিত উন্নতিগুলো এনেছে।

কার্যকলাপ নিরাপত্তা

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

ডেভেলপারদের জন্য মূল প্রভাবগুলির মধ্যে রয়েছে:

  • BAL শক্তকরণ এবং উন্নত অপ্ট-ইন: আমরা IntentSender এ সুরক্ষা সম্প্রসারণ করে ব্যাকগ্রাউন্ড অ্যাক্টিভিটি লঞ্চ (BAL) সীমাবদ্ধতাগুলিকে আরও পরিমার্জন করছি। ডেভেলপারদের অবশ্যই লিগ্যাসি MODE_BACKGROUND_ACTIVITY_START_ALLOWED ধ্রুবক থেকে দূরে সরে যেতে হবে। পরিবর্তে, আপনার MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE এর মতো গ্রানুলার নিয়ন্ত্রণ গ্রহণ করা উচিত, যা কার্যকলাপ শুরু করার জন্য এমন পরিস্থিতিতে সীমাবদ্ধ করে যেখানে কলিং অ্যাপটি দৃশ্যমান, আক্রমণের পৃষ্ঠকে উল্লেখযোগ্যভাবে হ্রাস করে।
  • দত্তক নেওয়ার সরঞ্জাম: ডেভেলপারদের উচিত লিগ্যাসি প্যাটার্ন সনাক্ত করতে এবং ভবিষ্যতের লক্ষ্য SDK প্রয়োজনীয়তার জন্য প্রস্তুতি নিশ্চিত করতে কঠোর মোড এবং আপডেট করা লিন্ট চেক ব্যবহার করা।

ডিফল্টরূপে CT সক্রিয় করুন

যদি কোনও অ্যাপ অ্যান্ড্রয়েড ১৭ বা তার পরবর্তী ভার্সনের জন্য উপযুক্ত হয়, তাহলে সার্টিফিকেট ট্রান্সপারেন্সি (CT) ডিফল্টরূপে সক্রিয় থাকে। (অ্যান্ড্রয়েড ১৬-তে, সিটি উপলব্ধ কিন্তু অ্যাপগুলিকে অপ্ট-ইন করতে হবে।)

নিরাপদ নেটিভ ডিসিএল—সি

যদি আপনার অ্যাপটি অ্যান্ড্রয়েড ১৭ বা তার উচ্চতর ভার্সনের জন্য তৈরি হয়, তাহলে DEX এবং JAR ফাইলের জন্য অ্যান্ড্রয়েড ১৪-তে প্রবর্তিত নিরাপদ ডায়নামিক কোড লোডিং (DCL) সুরক্ষা এখন স্থানীয় লাইব্রেরিগুলিতেও প্রসারিত হবে।

System.load() ব্যবহার করে লোড করা সমস্ত নেটিভ ফাইলগুলিকে কেবল পঠনযোগ্য হিসাবে চিহ্নিত করতে হবে। অন্যথায়, সিস্টেমটি UnsatisfiedLinkError নিক্ষেপ করবে।

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

ডিভাইসের ফর্ম ফ্যাক্টর

বিভিন্ন আকারের ও গঠনের ডিভাইসে ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য অ্যান্ড্রয়েড ১৭-এ নিম্নলিখিত পরিবর্তনগুলো অন্তর্ভুক্ত করা হয়েছে।

বড় স্ক্রিনের (sw>=600dp) ক্ষেত্রে ওরিয়েন্টেশন, রিসাইজেবিলিটি এবং অ্যাসপেক্ট রেশিও সংক্রান্ত সীমাবদ্ধতা উপেক্ষা করার জন্য প্ল্যাটফর্ম API-তে পরিবর্তন আনা হয়েছে।

আমরা Android 16-এ প্ল্যাটফর্ম API পরিবর্তনগুলি চালু করেছি যাতে API লেভেল 36 বা তার বেশি ভার্সনের অ্যাপগুলির জন্য বড় স্ক্রিনে (sw >= 600dp) ওরিয়েন্টেশন, আকৃতির অনুপাত এবং আকার পরিবর্তনের সীমাবদ্ধতা উপেক্ষা করা যায় । ডেভেলপারদের SDK 36 ব্যবহার করে এই পরিবর্তনগুলি থেকে বেরিয়ে আসার বিকল্প রয়েছে, তবে Android 17 বা তার বেশি ভার্সনের অ্যাপগুলির জন্য এই অপ্ট-আউট আর উপলব্ধ থাকবে না।

আরও তথ্যের জন্য, ওরিয়েন্টেশন এবং আকার পরিবর্তনের উপর বিধিনিষেধ উপেক্ষা করা হয়েছে দেখুন।