ছোট অ্যাপের আকার সরাসরি ডাউনলোডের সাফল্যের সাথে সম্পর্কিত, বিশেষ করে দুর্বল নেটওয়ার্ক ডিভাইস সংযোগ বা কম নেটওয়ার্ক গতি সহ উদীয়মান বাজারে। এর ফলে অ্যাপ ব্যবহারের হার কম হতে পারে, যা ফলস্বরূপ আপনার দর্শকদের সুযোগ এবং নাগাল কমিয়ে দেয়। যাইহোক, আপনার অ্যাপের আকার কমাতে সাহায্য করার একাধিক উপায় রয়েছে।
সর্বোত্তম অনুশীলন
অ্যান্ড্রয়েড অ্যাপ বান্ডেল হিসাবে অ্যাপ আপলোড করুন
Google Play-তে প্রকাশ করার সময় তাত্ক্ষণিক অ্যাপের আকার সঞ্চয় করার সবচেয়ে সহজ উপায় হল আপনার অ্যাপটিকে একটি Android অ্যাপ বান্ডেল হিসাবে আপলোড করা, যা একটি নতুন প্রকাশনার ফর্ম্যাট যাতে আপনার অ্যাপের সমস্ত সংকলিত কোড এবং সংস্থান অন্তর্ভুক্ত থাকে এবং APK তৈরি করা এবং Google Play-তে সাইন করাকে পিছিয়ে দেয় .
রানটাইম কোড আকার হ্রাস করুন
আপনার অ্যাপ রানটাইমে ব্যবহার করে না এমন কোডের জন্য পরীক্ষা করুন, উদাহরণস্বরূপ কোনো বড় ক্লাস বা স্বয়ংক্রিয়ভাবে তৈরি করা কোড। R8 এর মতো কোড অপ্টিমাইজারগুলি কোডের আকার অপ্টিমাইজ এবং সঙ্কুচিত করতে সাহায্য করতে পারে, কিন্তু তারা রানটাইম-কনস্ট্যান্ট দ্বারা সুরক্ষিত কোডের সাথে মোকাবিলা করতে পারে না। বিভিন্ন অপ্টিমাইজেশান টুলের সর্বোত্তম ব্যবহার করতে কম্পাইল-টাইম কনস্ট্যান্ট দিয়ে চেক ফ্ল্যাগগুলি প্রতিস্থাপন করুন। আপনি আপনার গ্রেডল কনফিগারেশন ফাইলে কোড এবং সংস্থান সঙ্কুচিত সক্ষম করতে পারেন:
android {
buildTypes {
getByName("release") {
isMinifyEnabled = true
isShrinkResources = true
}
}
}
অপ্রয়োজনীয় লেআউট সরান
অব্যবহৃত লেআউটগুলিকে ছোট UI পরিবর্তনের সাথে মার্জ করুন এবং সামগ্রিক অ্যাপ কোডের আকার কমাতে অপ্রয়োজনীয় লেআউটগুলি সরান৷ উপরন্তু, যেখানেই সম্ভব আপনি গতিশীলভাবে লেআউট এবং ভিউ রেন্ডার করতে পারেন। এটি আপনাকে স্ট্যাটিক টেমপ্লেট আঁকা এড়াতে এবং প্রযুক্তিগত ওভারহেড ছাড়া বিকল্প লেআউট প্রয়োগ করতে দেয়।
কদাচিৎ ব্যবহৃত বৈশিষ্ট্য পুনরায় মূল্যায়ন
কম দৈনিক সক্রিয় ব্যবহারকারী (DAU) মেট্রিক আছে এমন বৈশিষ্ট্যগুলি অক্ষম করে Android (Go সংস্করণ) এর জন্য বিশেষভাবে অপ্টিমাইজ করুন। এর উদাহরণগুলির মধ্যে রয়েছে জটিল অ্যানিমেশন, বৃহৎ GIF ফাইল, বা অ্যাপের সাফল্যের জন্য প্রয়োজনীয় নয় এমন অন্য কোনো নান্দনিক সংযোজন অপসারণ করা।
গতিশীল ডেলিভারি ব্যবহার করুন
প্লে ফিচার ডেলিভারি অ্যাপ বান্ডেলের উন্নত ক্ষমতা ব্যবহার করে, যা আপনার অ্যাপের কিছু ফিচার শর্তসাপেক্ষে ডেলিভারি বা চাহিদা অনুযায়ী ডাউনলোড করার অনুমতি দেয়। আপনি কাস্টম ডেলিভারির জন্য বৈশিষ্ট্য মডিউল ব্যবহার করতে পারেন. বৈশিষ্ট্য মডিউলগুলির একটি অনন্য সুবিধা হল Android 5.0 (API স্তর 21) বা উচ্চতর চলমান ডিভাইসগুলিতে কীভাবে এবং কখন আপনার অ্যাপের বিভিন্ন বৈশিষ্ট্যগুলি ডাউনলোড করা হয় তা কাস্টমাইজ করার ক্ষমতা।
অনুবাদযোগ্য স্ট্রিং আকার হ্রাস করুন
আপনার অ্যাপের প্রয়োজন নেই এমন বিকল্প রিসোর্স ফাইলগুলি সরাতে আপনি Android Gradle resConfigs
সম্পত্তি ব্যবহার করতে পারেন। আপনি যদি এমন একটি লাইব্রেরি ব্যবহার করেন যাতে ভাষা সংস্থান (যেমন AppCompat বা Google Play পরিষেবা) অন্তর্ভুক্ত থাকে, তাহলে আপনার অ্যাপটিতে লাইব্রেরি বার্তাগুলির জন্য সমস্ত অনুবাদিত ভাষা স্ট্রিং অন্তর্ভুক্ত থাকে, অ্যাপের অনুবাদ নির্বিশেষে। আপনি যদি শুধুমাত্র সেই ভাষাগুলি রাখতে চান যেগুলি আপনার অ্যাপ আনুষ্ঠানিকভাবে সমর্থন করে, আপনি resConfig
বৈশিষ্ট্য ব্যবহার করে সেই ভাষাগুলি নির্দিষ্ট করতে পারেন৷ নির্দিষ্ট না করা ভাষার জন্য কোনো সংস্থান সরানো হয়।
আপনার ভাষা সংস্থানগুলিকে শুধুমাত্র ইংরেজি এবং ফ্রেঞ্চের মধ্যে সীমাবদ্ধ করতে, আপনি নীচে দেখানো হিসাবে defaultConfig
সম্পাদনা করতে পারেন:
android {
defaultConfig {
...
resConfigs "en", "fr"
}
}
নির্বাচনী অনুবাদ ব্যবহার করুন
যদি একটি প্রদত্ত স্ট্রিং অ্যাপের UI এ দৃশ্যমান না হয়, তাহলে আপনাকে এটি অনুবাদ করতে হবে না। ডিবাগিংয়ের উদ্দেশ্যে স্ট্রিং, ব্যতিক্রম বার্তা, বা ইউআরএলগুলি কোডে স্ট্রিং লিটারেল হওয়া উচিত, সম্পদ নয়।
উদাহরণস্বরূপ, ইউআরএল অনুবাদ করতে বিরক্ত করবেন না।
<string name="car_frx_device_incompatible_sol_message">
This device doesn\'t support Android Auto.\n
<a href="https://support.google.com/androidauto/answer/6395843">Learn more</a>
</string>
আপনি চিনতে পারেন <
এবং >
, কারণ এগুলি হল <
এবং >
এর জন্য escape অক্ষর। এগুলি এখানে প্রয়োজন কারণ আপনি যদি একটি <string>
ট্যাগের ভিতরে একটি <a>
ট্যাগ রাখেন, তাহলে Android রিসোর্স কম্পাইলার সেগুলিকে ফেলে দেয় কারণ এটি ট্যাগটিকে চিনতে পারে না। যাইহোক, এর মানে হল আপনি HTML ট্যাগ এবং URL 78 টি ভাষায় অনুবাদ করছেন। পরিবর্তে, আপনি HTML সরাতে পারেন:
<string name="car_frx_device_incompatible_sol_message">
This device doesn\'t support Android Auto.
</string>
সাধারণ নির্ভরতার সাথে নেটিভ বাইনারিগুলিকে একত্রিত করুন
আপনার অ্যাপে যদি সাধারণ অন্তর্নিহিত নির্ভরতা সহ বিভিন্ন জাভা নেটিভ ইন্টারফেস (জেএনআই) বাস্তবায়ন থাকে, তাহলে বিভিন্ন বাইনারি অপ্রয়োজনীয় উপাদান সহ APK আকার বৃদ্ধি করছে। জাভা এবং জেএনআই ফাইলগুলিকে আলাদা রাখার সময় আপনি একটি একক JNI বাইনারি ফাইলে একাধিক JNI বাইনারি একত্রিত করতে পারেন। এটি আপনার APK আকারকে বেশ নাটকীয়ভাবে হ্রাস করতে পারে।