অ্যান্ড্রয়েড স্টুডিওতে ChromeOS লিন্ট নিয়ম

ChromeOS-এ, আমরা এমন ডেভেলপার টুল এবং ফ্রেমওয়ার্ক উন্নত করতে প্রতিশ্রুতিবদ্ধ যা অ্যান্ড্রয়েড অ্যাপ ডেভেলপারদের Chromebook-এর জন্য তাদের অ্যাপগুলিকে নির্বিঘ্নে অপ্টিমাইজ করতে সক্ষম করে। এটি করার জন্য, আমাদের ধারাবাহিকভাবে ডেভেলপারদের কাছে প্রভাবশালী টুল সেট আনার উপায়গুলি দেখতে হবে যাতে বড় স্ক্রিন এবং ChromeOS-এর জন্য নির্মাণের অভিজ্ঞতা উন্নত করা যায়।

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

এই লিন্ট নিয়মগুলির অস্তিত্ব এবং তাদের গুরুত্ব সম্পর্কে আরও পটভূমির প্রেক্ষাপট জানতে, আমাদের ব্লগ পোস্টটি পড়ুন।

এই লিন্ট নিয়মগুলি কোথায়?

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

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

নতুন লিন্ট নিয়ম (ফ্লেমিঙ্গো ক্যানারি ৩ অনুসারে আপডেট করা হয়েছে)

x86/x86_64 ABI সাপোর্ট

বেশিরভাগ Chromebook ইন্টেল আর্কিটেকচারে চলে, যার ফলে এগুলি মূলত x86 আর্কিটেকচারাল প্ল্যাটফর্মে পরিণত হয়। NDK কোড বাইনারির অংশ হিসেবে অন্তর্ভুক্ত করার সময় ChromeOS সঠিকভাবে সমর্থিত হওয়ার জন্য, ARM লাইব্রেরি থেকে প্রয়োজনীয় অনুবাদ অপসারণের কারণে x86 থাকা কর্মক্ষমতা বৃদ্ধি করে। অতএব, আপনার ডেভেলপমেন্ট টিমকে x86 বা পছন্দসই x86_64 আর্কিটেকচার সাপোর্ট যোগ করার জন্য দৃঢ়ভাবে সুপারিশ করা হচ্ছে কারণ এটি ChromeOS বা যেকোনো Intel ডিভাইসের যেকোনো নেটিভ কোডের জন্য একটি পারফরম্যান্স বর হবে।

প্রতিকার

যদি সম্ভব হয়, তাহলে আপনার build.gradle এর মধ্যে abiSplits এর ভিতরে x86 এবং x86_64 যোগ করুন। এছাড়াও, নিশ্চিত করুন যে আপনি এই ABI গুলিকে সমর্থন করার জন্য উপযুক্ত ফোল্ডারগুলিতে কোডটি যোগ করছেন। আরও তথ্যের জন্য, Android ABI গুলির ডকুমেন্টেশন এবং ADS এর ABI সাপোর্ট সম্পর্কিত আলোচনাটি দেখুন।

দ্রষ্টব্য: নিশ্চিত করুন যে ব্যবহৃত তৃতীয় পক্ষের লাইব্রেরিগুলিতে x86 এবং x86_64 বাইনারি রয়েছে।

ChromeOS হার্ডওয়্যার সীমাবদ্ধতা

বেশিরভাগ ChromeOS ডিভাইসে Android ফোনের তুলনায় হার্ডওয়্যার সেন্সর এবং অন্যান্য বৈশিষ্ট্যের নমুনা সেট ছোট থাকে। এই নিয়মের লক্ষ্য হল ডেভেলপারদের জানানো যে আপনি যদি android:required=true সহ <uses-feature> ফ্ল্যাগ ব্যবহার করেন, তাহলে আপনার অ্যাপটি ChromeOS-এর Google Play Store-এ উপলব্ধ হবে না। আপনার অ্যাপটি যতটা সম্ভব ডিভাইসে অ্যাক্সেস করা যায় তা নিশ্চিত করার জন্য একটি জোরালো সুপারিশ হল ডিফল্টরূপে হার্ডওয়্যার বৈশিষ্ট্যটির প্রয়োজন নেই তা নিশ্চিত করা। পরিবর্তে, আপনি রান টাইমে নির্দিষ্ট হার্ডওয়্যার পরীক্ষা করার জন্য প্রতিরক্ষামূলক কোড যোগ করতে পারেন। এর একটি উদাহরণ হতে পারে

<uses-feature android:name="android.hardware.camera" android:required="true">

প্রতিকার

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

আকার পরিবর্তন করা যাবে না এমন কার্যকলাপ

ডিফল্টরূপে, Chromebook-এ Android R বা উচ্চতর ভার্সন চালানো ChromeOS-এর জন্য Android Runtime, ডিফল্ট UI অবস্থার উপর ভিত্তি করে অ্যাপ্লিকেশনের ফোন বা ট্যাবলেট সংস্করণে একটি Android অ্যাপ শুরু করে। তবে, ChromeOS ব্যবহারকারীদের জন্য আরও ভালো অভিজ্ঞতা প্রদানকারী তৃতীয় বিকল্প রয়েছে, তা হল Resizable মোড। আপনার কার্যকলাপের অংশ হিসেবে এই ফ্ল্যাগটি সক্ষম করে, যে ব্যবহারকারীরা যেকোনো মাল্টি-উইন্ডো পরিবেশে আপনার অ্যাপ্লিকেশনটি ব্যবহার করতে পারেন তারা আপনার অ্যাপ্লিকেশনটিকে উপযুক্ত আকারে পুনরায় আকার দেওয়ার সুবিধা নিতে পারেন। এই পরিবর্তনগুলি ব্যবহারকারীদের তাদের চাহিদা পূরণের জন্য UI স্কেল করার অনুমতি দেবে। আপনার ম্যানিফেস্টে এই পরিবর্তনগুলি যোগ করার পরে, নীচে উল্লেখিত ডেস্কটপ এমুলেটরের বিরুদ্ধে আপনার অ্যাপ্লিকেশনটি পরীক্ষা করুন।

ডেস্কটপ এমুলেটরে আপনার অ্যাপ্লিকেশনটি পরীক্ষা করুন।

প্রতিকার

আপনার AndroidManifest.xml ফাইলে আপনার Activity-তে resizableActivity="true" অ্যাট্রিবিউট যোগ করুন। আরও তথ্যের জন্য, large screen restrictions এর ডকুমেন্টেশন দেখুন।

কনফিগারেশন পরিবর্তন

আকার পরিবর্তনযোগ্য স্ক্রিনের ক্ষেত্রে একটি প্রধান সতর্কতা হল, ব্যবহারকারী যখনই অ্যাপ্লিকেশনের আকার পরিবর্তন করেন, তখন onConfigurationChanged() কল করা হয়। যদি আপনার অ্যাপটি সেই পদ্ধতির ভিতরে একটি সম্পূর্ণ redraw ইস্যু করে, তাহলে এর সাথে সম্পর্কিত কর্মক্ষমতা সম্পর্কিত প্রভাব থাকবে। বর্তমানে, আমরা নিশ্চিত করছি যে onConfigurationChanged মধ্যে finish() কল করা হয়নি, কারণ আপনার savedInstanceState সম্পূর্ণ redraw প্রয়োগ করার পরিবর্তে আরও গ্র্যানুলারিটি সহ পরিচালনা করা উচিত। আমরা এমন কেসগুলি খুঁজে বের করব যেখানে কর্মক্ষমতা হ্রাস ঘটবে এবং সেই অনুযায়ী এই নিয়মটি আপডেট করব।

প্রতিকার

আপনার Activities and Fragments-এ onConfigurationChanged() API-এর মধ্যে finish() কল করা না আছে কিনা তা নিশ্চিত করুন। আরও তথ্যের জন্য, কনফিগারেশন পরিবর্তন পরিচালনার ডকুমেন্টেশন দেখুন।

কীবোর্ড এবং মাউস সাপোর্ট

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

প্রতিকার

androidx.compose.foundation:foundation কে ন্যূনতম ১.২ সংস্করণে আপডেট করুন। আরও তথ্যের জন্য, compose version রিলিজ নোট দেখুন।

পরামর্শ: ৯০% ব্যবহারকারী কিবোর্ড এবং মাউস ব্যবহার করে Chromebook-এ অ্যাপের সাথে ইন্টারঅ্যাক্ট করেন। (সূত্র: ২০২২ গুগল ইন্টারনাল ডেটা* )

প্রতিক্রিয়া

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

অ্যান্ড্রয়েড স্টুডিওতে প্রতিক্রিয়া ডায়ালগ প্রদান করুন