বেশিরভাগ অ্যান্ড্রয়েড ফোনেই ARM চিপসেট থাকে। তবে, অনেক ChromeOS ডিভাইস x86 চিপ ব্যবহার করে। Kotlin বা Java তে লেখা অ্যাপের ক্ষেত্রে এই পার্থক্যটি গুরুত্বপূর্ণ নয়। তবে, Android NDK তে লেখা অ্যাপের ক্ষেত্রে, গেম ইঞ্জিন দিয়ে তৈরি অ্যাপ সহ, ডিভাইসের চিপসেট একটি গুরুত্বপূর্ণ উদ্বেগের বিষয় হতে পারে।
আদর্শভাবে, Android NDK কোড সহ সমস্ত অ্যাপ চারটি প্রধান Android ABI (অ্যাপ্লিকেশন বাইনারি ইন্টারফেস) সহ পাঠানো উচিত: armeabi-v7a (arm32), arm64-v8a (arm64), x86 (x86_32), এবং x86_64।
এটি প্রতিটি ডিভাইসের জন্য সর্বোত্তম কর্মক্ষমতা এবং সর্বনিম্ন ব্যাটারি খরচ প্রদান করে। উদাহরণস্বরূপ, একটি cmake-ভিত্তিক build.gradle ফাইলে থাকতে পারে:
externalNativeBuild {
cmake {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}APK আকার
একটি একক APK-তে প্রতিটি ABI এর আকার বৃদ্ধি করে। এটি আপনার ব্যবহারকারীদের ডিস্ক ব্যবহার, অ্যাপ ডাউনলোডের আকারকে প্রভাবিত করতে পারে এবং প্লে স্টোরের আকারের সীমার সাথেও সম্পর্কিত হতে পারে। এটি এড়াতে সবচেয়ে ভালো উপায় হল Android অ্যাপ বান্ডেল ব্যবহার করা। অ্যাপ বান্ডেলগুলি আপনাকে Android স্টুডিওর মধ্যে থেকে চারটি ABI সহজেই বান্ডেল করতে দেয়, তবে আপনার ব্যবহারকারীদের জন্য ডাউনলোডের আকার বাড়ায় না। তারা Dynamic Delivery- এর সুবিধা নেওয়াও সহজ করে তোলে যার ফলে ব্যবহারকারীরা অনুরোধ করলেই বড় গেমের সামগ্রী ডাউনলোড করতে পারেন। যদি অ্যাপ বান্ডেলগুলি আপনার জন্য সম্ভব না হয়, তাহলে আপনি একই আচরণের জন্য পুরানো মাল্টি-APK ব্যবহার করতে পারেন।
৩২ বনাম ৬৪-বিট
সমস্ত অ্যান্ড্রয়েড অ্যাপের অবশ্যই একটি 64-বিট বিল্ড সংস্করণ থাকতে হবে। ARM এবং x86 উভয় ডিভাইসের জন্য 32-বিট বিল্ড ঐচ্ছিক। আরও তথ্যের জন্য অ্যান্ড্রয়েড 64-বিট ডকুমেন্টেশন দেখুন।
শুধুমাত্র ৬৪-বিট বিল্ড প্রদান করলে বিল্ড টার্গেটের সংখ্যা এবং আপনার পরীক্ষার পৃষ্ঠ হ্রাস পায়, তবে এটি আপনার গেমটি চালাতে পারে এমন ডিভাইসের ধরণকেও সীমিত করে। উদাহরণস্বরূপ, অন্যান্য হার্ডওয়্যার সীমাবদ্ধতার কারণে অনেক পুরানো ক্রোমবুক ৬৪-বিট সিপিইউ থাকা সত্ত্বেও কেবল ৩২-বিট অ্যান্ড্রয়েড অ্যাপ চালাতে পারে। আপনার অ্যাপটি এই ডিভাইসগুলিতে চলতে পারে তা নিশ্চিত করার জন্য, ৩২ এবং ৬৪-বিট উভয় সমর্থন অন্তর্ভুক্ত করুন।
দ্রষ্টব্য: সমস্ত নতুন এবং আপডেট করা অ্যাপের জন্য 64-বিট অ্যাপ ভার্সন অন্তর্ভুক্ত করা বাধ্যতামূলক। প্লে স্টোর 64-বিট পরিচালনা করতে সক্ষম ডিভাইসগুলিতে 32-বিট অ্যাপ পরিবেশন করা বন্ধ করে দিয়েছে। অনেক Chromebook-এ 64-বিট সাপোর্ট থাকে এবং ChromeOS-এ আপনার অ্যাপ ব্যবহারকারীদের জন্য ধারাবাহিকতা নিশ্চিত করার জন্য আমরা যত তাড়াতাড়ি সম্ভব 64-বিট সংস্করণ অন্তর্ভুক্ত করার জন্য আপনার অ্যাপটি আপডেট করার পরামর্শ দিচ্ছি।
এআরএম অনুবাদ
x86 Chromebook গুলি যখনই সম্ভব ARM কোড অনুবাদ করার চেষ্টা করে। তবে, অনুবাদ কর্মক্ষমতা ধীর করে দেয় এবং ব্যাটারির ব্যবহার বাড়ায়। এমনকি সাধারণ গেমগুলিতেও সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতার জন্য x86 বিল্ড প্রদানের কথা বিবেচনা করা উচিত। যদি আপনি x86 বিল্ড প্রদান করতে না পারেন তবে মনে রাখবেন যে কিছু x86 Chromebook arm64 কোড অনুবাদ করতে পারে না। এই ক্ষেত্রে আপনার বিল্ডগুলিতে arm32 এবং arm64 ABI উভয়ই অন্তর্ভুক্ত করা উচিত।
যদিও সমস্ত অ্যান্ড্রয়েড-সক্ষম Chromebook-এ arm32 অনুবাদ উপলব্ধ, সমস্ত Chromebook arm64 কোড অনুবাদ করতে পারে না। এর অর্থ হল যদি আপনার গেমটিতে কেবল arm64 বিল্ড টার্গেট থাকে, তবে এটি প্রচুর সংখ্যক ChromeOS ডিভাইসের জন্য উপলব্ধ হবে না। যদি আপনি x86 বাইনারি পাঠাতে অক্ষম হন, তাহলে আপনার বিল্ডগুলিতে arm32 এবং arm64 ABI উভয়ই অন্তর্ভুক্ত করুন।
| অন্তর্ভুক্ত ABI গুলি | ChromeOS এর জন্য সমর্থন |
|---|---|
আর্ম৬৪ | দরিদ্র |
arm32/arm64 সম্পর্কে | ঠিক আছে (অনুবাদ সহ) |
আর্ম৩২/আর্ম৬৪/x৮৬_৩২/x৮৬_৬৪ | সেরা |