ব্যবহারকারীরা প্রায়শই খুব বড় মনে হওয়া অ্যাপ ডাউনলোড করা এড়িয়ে যান, বিশেষ করে উদীয়মান বাজারগুলিতে যেখানে ডিভাইসগুলি 2G এবং 3G নেটওয়ার্কের সাথে সংযুক্ত থাকে অথবা ডেটা সীমা সহ পরিকল্পনাগুলিতে কাজ করে। এই পৃষ্ঠাটি বর্ণনা করে যে কীভাবে আপনার অ্যাপের ডাউনলোডের আকার কমানো যায়, যা আরও বেশি ব্যবহারকারীকে আপনার অ্যাপ ডাউনলোড করতে সাহায্য করে।
অ্যান্ড্রয়েড অ্যাপ বান্ডেল ব্যবহার করে আপনার অ্যাপ আপলোড করুন
গুগল প্লেতে প্রকাশ করার সময় অ্যাপের আকার তাৎক্ষণিকভাবে সংরক্ষণ করার জন্য আপনার অ্যাপটিকে অ্যান্ড্রয়েড অ্যাপ বান্ডেল হিসেবে আপলোড করুন। অ্যান্ড্রয়েড অ্যাপ বান্ডেল হল একটি আপলোড ফর্ম্যাট যাতে আপনার অ্যাপের সমস্ত কম্পাইল করা কোড এবং রিসোর্স অন্তর্ভুক্ত থাকে তবে APK জেনারেশন এবং গুগল প্লেতে সাইন ইন করা স্থগিত থাকে।
গুগল প্লে-এর অ্যাপ সার্ভিসিং মডেলটি আপনার অ্যাপ বান্ডেল ব্যবহার করে প্রতিটি ব্যবহারকারীর ডিভাইস কনফিগারেশনের জন্য অপ্টিমাইজড APK তৈরি এবং পরিবেশন করে যাতে তারা কেবল আপনার অ্যাপ চালানোর জন্য প্রয়োজনীয় কোড এবং রিসোর্স ডাউনলোড করতে পারে। বিভিন্ন ডিভাইস সমর্থন করার জন্য আপনাকে একাধিক APK তৈরি, স্বাক্ষর এবং পরিচালনা করতে হবে না এবং ব্যবহারকারীরা ছোট, আরও অপ্টিমাইজড ডাউনলোড পাবেন।
অ্যাপ বান্ডেলের সাথে প্রকাশিত অ্যাপগুলির জন্য গুগল প্লে ২০০ এমবি পর্যন্ত সংকুচিত ডাউনলোড সাইজের সীমাবদ্ধতা আরোপ করে। প্লে ফিচার ডেলিভারি এবং প্লে অ্যাসেট ডেলিভারি ব্যবহার করে বড় আকারের অ্যাপ তৈরি করা সম্ভব, তবে আপনার অ্যাপের আকার বৃদ্ধি করলে ইনস্টলেশনের সাফল্যের উপর নেতিবাচক প্রভাব পড়তে পারে এবং আনইনস্টল বৃদ্ধি পেতে পারে, তাই আমরা আপনাকে এই পৃষ্ঠায় বর্ণিত নির্দেশিকাগুলি প্রয়োগ করার পরামর্শ দিচ্ছি যাতে আপনার অ্যাপের ডাউনলোড সাইজ যতটা সম্ভব কমানো যায়।
APK এর গঠন বুঝুন
আপনার অ্যাপের আকার কমানোর আগে, অ্যাপের APK এর গঠন বোঝা সহায়ক। একটি APK ফাইলে একটি ZIP আর্কাইভ থাকে যাতে আপনার অ্যাপের সমস্ত ফাইল থাকে। এই ফাইলগুলির মধ্যে রয়েছে জাভা ক্লাস ফাইল, রিসোর্স ফাইল এবং কম্পাইল করা রিসোর্স ধারণকারী একটি ফাইল।
একটি APK-তে নিম্নলিখিত ডিরেক্টরিগুলি থাকে:
-
META-INF/:CERT.SFএবংCERT.RSAস্বাক্ষর ফাইল, সেইসাথেMANIFEST.MFম্যানিফেস্ট ফাইল ধারণ করে। -
assets/: অ্যাপের সম্পদ ধারণ করে, যা অ্যাপটি একটিAssetManagerঅবজেক্ট ব্যবহার করে পুনরুদ্ধার করতে পারে। -
res/: এমন রিসোর্স রয়েছে যাresources.arscএ কম্পাইল করা হয় না। -
lib/: তে প্রসেসরের সফটওয়্যার স্তরের জন্য নির্দিষ্ট কম্পাইল করা কোড থাকে। এই ডিরেক্টরিতে প্রতিটি প্ল্যাটফর্মের ধরণের জন্য একটি সাবডিরেক্টরি থাকে, যেমনarmeabi,armeabi-v7a,arm64-v8a,x86,x86_64, এবংmips।
একটি APK-তে নিম্নলিখিত ফাইলগুলিও থাকে। শুধুমাত্র AndroidManifest.xml বাধ্যতামূলক:
-
resources.arsc: কম্পাইল করা রিসোর্স ধারণ করে। এই ফাইলটিতেres/values/ফোল্ডারের সকল কনফিগারেশন থেকে XML কন্টেন্ট রয়েছে। প্যাকেজিং টুলটি এই XML কন্টেন্টটি বের করে, বাইনারি আকারে কম্পাইল করে এবং কন্টেন্টটি আর্কাইভ করে। এই কন্টেন্টটিতে ল্যাঙ্গুয়েজ স্ট্রিং এবং স্টাইল, সেইসাথে এমন কন্টেন্টের পাথ রয়েছে যা সরাসরিresources.arscফাইলে অন্তর্ভুক্ত নয়, যেমন লেআউট ফাইল এবং ছবি। -
classes.dex: ডালভিক বা ART ভার্চুয়াল মেশিন দ্বারা বোঝা যায় এমন DEX ফাইল ফর্ম্যাটে সংকলিত ক্লাসগুলি ধারণ করে। -
AndroidManifest.xml: মূল অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইল ধারণ করে। এই ফাইলটিতে অ্যাপের নাম, সংস্করণ, অ্যাক্সেস অধিকার এবং রেফারেন্স করা লাইব্রেরি ফাইলগুলি তালিকাভুক্ত করা হয়েছে। ফাইলটি অ্যান্ড্রয়েডের বাইনারি XML ফর্ম্যাট ব্যবহার করে।
সম্পদের সংখ্যা এবং আকার হ্রাস করুন
আপনার অ্যাপটি কত দ্রুত লোড হয়, কত মেমোরি ব্যবহার করে এবং কত শক্তি খরচ করে তার উপর আপনার APK-এর আকার প্রভাব ফেলে। আপনি এতে থাকা রিসোর্সের সংখ্যা এবং আকার কমিয়ে আপনার APK-কে ছোট করতে পারেন। বিশেষ করে, আপনি এমন রিসোর্সগুলি সরিয়ে ফেলতে পারেন যা আপনার অ্যাপ আর ব্যবহার করে না, এবং আপনি ইমেজ ফাইলের পরিবর্তে স্কেলেবল Drawable অবজেক্ট ব্যবহার করতে পারেন। এই বিভাগে এই পদ্ধতিগুলি এবং আপনার অ্যাপের রিসোর্সগুলি কমিয়ে আপনার APK-এর সামগ্রিক আকার কমানোর অন্যান্য উপায়গুলি নিয়ে আলোচনা করা হয়েছে।
অব্যবহৃত সম্পদ অপসারণ করুন
lint টুল—অ্যান্ড্রয়েড স্টুডিওতে অন্তর্ভুক্ত একটি স্ট্যাটিক কোড বিশ্লেষক—আপনার res/ ফোল্ডারে এমন রিসোর্স সনাক্ত করে যা আপনার কোড উল্লেখ করে না। যখন lint টুলটি আপনার প্রোজেক্টে একটি সম্ভাব্য অব্যবহৃত রিসোর্স আবিষ্কার করে, তখন এটি নিম্নলিখিত উদাহরণের মতো একটি বার্তা প্রিন্ট করে:
res/layout/preferences.xml: Warning: The resource R.layout.preferences appears
to be unused [UnusedResources]
আপনার কোডে যে লাইব্রেরিগুলি যোগ করবেন তাতে অব্যবহৃত রিসোর্স থাকতে পারে। আপনার অ্যাপের build.gradle.kts ফাইলে shrinkResources সক্ষম করলে Gradle স্বয়ংক্রিয়ভাবে আপনার পক্ষ থেকে রিসোর্সগুলি সরিয়ে ফেলতে পারে।
কোটলিন
android { // Other settings. buildTypes { getByName("release") { minifyEnabled = true shrinkResources = true proguardFiles(getDefaultProguardFile('proguard-android.txt'), "proguard-rules.pro") } } }
খাঁজকাটা
android { // Other settings. buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
shrinkResources ব্যবহার করতে, কোড সঙ্কুচিতকরণ সক্ষম করুন। বিল্ড প্রক্রিয়া চলাকালীন, R8 প্রথমে অব্যবহৃত কোডটি সরিয়ে দেয়। তারপর, Android Gradle প্লাগইনটি অব্যবহৃত রিসোর্সগুলি সরিয়ে দেয়।
কোড এবং রিসোর্স সঙ্কুচিত করা এবং অ্যান্ড্রয়েড স্টুডিও কীভাবে APK সাইজ কমায় সে সম্পর্কে আরও তথ্যের জন্য, আপনার অ্যাপটি সঙ্কুচিত করুন, অস্পষ্ট করুন এবং অপ্টিমাইজ করুন দেখুন।
Android Gradle Plugin 7.0 এবং পরবর্তী সংস্করণে, আপনি আপনার অ্যাপের সমর্থনকারী কনফিগারেশনগুলি ঘোষণা করতে পারেন। Gradle resourceConfigurations flavor এবং defaultConfig বিকল্প ব্যবহার করে বিল্ড সিস্টেমে এই তথ্য প্রেরণ করে। বিল্ড সিস্টেমটি তখন অন্যান্য অসমর্থিত কনফিগারেশনের রিসোর্সগুলিকে APK-তে উপস্থিত হতে বাধা দেয়, যার ফলে APK-এর আকার হ্রাস পায়। এই বৈশিষ্ট্য সম্পর্কে আরও তথ্যের জন্য, অব্যবহৃত বিকল্প রিসোর্সগুলি সরান দেখুন।
লাইব্রেরি থেকে রিসোর্সের ব্যবহার কমিয়ে আনুন
যখন আপনি একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করেন, তখন আপনি সাধারণত আপনার অ্যাপের ব্যবহারযোগ্যতা এবং বহুমুখীতা উন্নত করতে বহিরাগত লাইব্রেরি ব্যবহার করেন। উদাহরণস্বরূপ, আপনি পূর্ববর্তী ডিভাইসগুলিতে ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে AndroidX উল্লেখ করতে পারেন, অথবা আপনি আপনার অ্যাপের মধ্যে থাকা টেক্সটের স্বয়ংক্রিয় অনুবাদ পুনরুদ্ধার করতে Google Play পরিষেবা ব্যবহার করতে পারেন।
যদি একটি লাইব্রেরি একটি সার্ভার বা ডেস্কটপের জন্য ডিজাইন করা হয়, তাহলে এতে এমন অনেক বস্তু এবং পদ্ধতি অন্তর্ভুক্ত থাকতে পারে যা আপনার অ্যাপের প্রয়োজন হয় না। আপনার অ্যাপের প্রয়োজনীয় লাইব্রেরির শুধুমাত্র সেই অংশগুলি অন্তর্ভুক্ত করার জন্য, যদি লাইসেন্স আপনাকে লাইব্রেরি পরিবর্তন করতে দেয় তবে আপনি লাইব্রেরির ফাইলগুলি সম্পাদনা করতে পারেন। আপনার অ্যাপে নির্দিষ্ট কার্যকারিতা যোগ করার জন্য আপনি একটি বিকল্প, মোবাইল-বান্ধব লাইব্রেরিও ব্যবহার করতে পারেন।
নেটিভ অ্যানিমেটেড ছবির ডিকোডিং
অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১) তে, এনডিকে ImageDecoder এপিআই প্রসারিত করা হয়েছে যাতে অ্যানিমেটেড জিআইএফ এবং অ্যানিমেটেড ওয়েবপি ফাইল ফর্ম্যাট ব্যবহার করে এমন চিত্রগুলি থেকে সমস্ত ফ্রেম এবং টাইমিং ডেটা ডিকোড করা যায়।
APK এর আকার আরও কমাতে এবং নিরাপত্তা এবং কর্মক্ষমতা সম্পর্কিত ভবিষ্যতের আপডেটগুলি থেকে উপকৃত হতে তৃতীয় পক্ষের লাইব্রেরির পরিবর্তে ImageDecoder ব্যবহার করুন।
ImageDecoder API সম্পর্কে আরও তথ্যের জন্য, GitHub-এ API reference এবং নমুনাটি দেখুন।
শুধুমাত্র নির্দিষ্ট ঘনত্ব সমর্থন করে
অ্যান্ড্রয়েড বিভিন্ন স্ক্রিন ঘনত্ব সমর্থন করে, যেমন নিম্নলিখিত:
-
ldpi -
mdpi -
tvdpi -
hdpi -
xhdpi -
xxhdpi -
xxxhdpi
যদিও অ্যান্ড্রয়েড পূর্ববর্তী ঘনত্বগুলিকে সমর্থন করে, তবুও আপনাকে প্রতিটি ঘনত্বে আপনার রাস্টারাইজড সম্পদ রপ্তানি করতে হবে না।
যদি আপনি জানেন যে আপনার ব্যবহারকারীদের মধ্যে মাত্র অল্প সংখ্যকের কাছে নির্দিষ্ট ঘনত্বের ডিভাইস রয়েছে, তাহলে বিবেচনা করুন যে আপনার অ্যাপে সেই ঘনত্বগুলিকে একত্রিত করা দরকার কিনা। যদি আপনি একটি নির্দিষ্ট স্ক্রিন ঘনত্বের জন্য সংস্থানগুলি অন্তর্ভুক্ত না করেন, তাহলে অ্যান্ড্রয়েড স্বয়ংক্রিয়ভাবে অন্যান্য স্ক্রিন ঘনত্বের জন্য মূলত ডিজাইন করা বিদ্যমান সংস্থানগুলিকে স্কেল করে।
যদি আপনার অ্যাপের শুধুমাত্র স্কেল করা ছবি প্রয়োজন হয়, তাহলে drawable-nodpi/ তে একটি ছবির একক রূপ ব্যবহার করে আপনি আরও বেশি জায়গা বাঁচাতে পারেন। আমরা আপনাকে আপনার অ্যাপে কমপক্ষে একটি xxhdpi চিত্র রূপ অন্তর্ভুক্ত করার পরামর্শ দিচ্ছি।
স্ক্রিন ঘনত্ব সম্পর্কে আরও তথ্যের জন্য, স্ক্রিনের আকার এবং ঘনত্ব দেখুন।
অঙ্কনযোগ্য বস্তু ব্যবহার করুন
কিছু ছবির জন্য স্ট্যাটিক ইমেজ রিসোর্সের প্রয়োজন হয় না। রানটাইমের সময় ফ্রেমওয়ার্কটি গতিশীলভাবে ছবি আঁকতে পারে। Drawable অবজেক্ট—অথবা XML-এ <shape> —আপনার APK-তে খুব কম জায়গা নিতে পারে। এছাড়াও, XML Drawable অবজেক্টগুলি মেটেরিয়াল ডিজাইন নির্দেশিকা মেনে একরঙা ছবি তৈরি করে।
সম্পদ পুনঃব্যবহার করুন
আপনি একটি ছবির বিভিন্নতার জন্য একটি পৃথক রিসোর্স অন্তর্ভুক্ত করতে পারেন, যেমন একই ছবির টিন্টেড, শেডেড, অথবা রোটেটেড ভার্সন। তবে, আমরা সুপারিশ করছি যে আপনি একই রিসোর্স পুনরায় ব্যবহার করুন এবং রানটাইমের সময় প্রয়োজন অনুসারে সেগুলি কাস্টমাইজ করুন।
অ্যান্ড্রয়েড কোনও সম্পদের রঙ পরিবর্তন করার জন্য বেশ কয়েকটি ইউটিলিটি প্রদান করে, হয় android:tint এবং tintMode বৈশিষ্ট্য ব্যবহার করে।
আপনি এমন রিসোর্সও বাদ দিতে পারেন যা অন্য রিসোর্সের ঘূর্ণিত সমতুল্য। নিচের কোড স্নিপেটটি ছবির মাঝখানে পিভট করে এবং এটিকে 180 ডিগ্রি ঘোরানোর মাধ্যমে "থাম্ব আপ" কে "থাম্ব ডাউন" এ রূপান্তর করার একটি উদাহরণ প্রদান করে:
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/ic_thumb_up" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="180" />
কোড থেকে রেন্ডার করুন
আপনি পদ্ধতিগতভাবে আপনার ছবিগুলি রেন্ডার করে আপনার APK এর আকারও কমাতে পারেন। পদ্ধতিগত রেন্ডারিং স্থান খালি করে কারণ আপনি আর আপনার APK-তে কোনও চিত্র ফাইল সংরক্ষণ করেন না।
পিএনজি ফাইল ক্রাঞ্চ করুন
aapt টুলটি বিল্ড প্রক্রিয়ার সময় লসলেস কম্প্রেশনের মাধ্যমে res/drawable/ এ রাখা ইমেজ রিসোর্সগুলিকে অপ্টিমাইজ করতে পারে। উদাহরণস্বরূপ, aapt টুলটি একটি ট্রু-কালার PNG কে 256 টির বেশি রঙের প্রয়োজন হয় না এমন একটি 8-বিট PNG তে রূপান্তর করতে পারে যার একটি রঙ প্যালেট রয়েছে। এটি করার ফলে সমান মানের একটি ছবি তৈরি হয় কিন্তু মেমোরি ফুটপ্রিন্ট কম থাকে।
aapt এর নিম্নলিখিত সীমাবদ্ধতা রয়েছে:
-
aaptটুলটিasset/ফোল্ডারে থাকা PNG ফাইলগুলিকে সঙ্কুচিত করে না। - ইমেজ ফাইলগুলিকে অপ্টিমাইজ করার জন্য
aaptটুলের জন্য 256 বা তার কম রঙ ব্যবহার করতে হবে। -
aaptটুলটি ইতিমধ্যেই সংকুচিত PNG ফাইলগুলিকে ফুলে তুলতে পারে। এটি প্রতিরোধ করতে, আপনি PNG ফাইলগুলির জন্য এই প্রক্রিয়াটি অক্ষম করতেisCrunchPngsপতাকা ব্যবহার করতে পারেন:
কোটলিন
buildTypes.all { isCrunchPngs = false }
খাঁজকাটা
buildTypes.all { isCrunchPngs = false }
PNG এবং JPEG ফাইল কম্প্রেস করুন
আপনি pngcrush , pngquant , অথবা zopflipng এর মতো টুল ব্যবহার করে ছবির মান না কমিয়ে PNG ফাইলের আকার কমাতে পারেন। এই সমস্ত টুল PNG ফাইলের আকার কমাতে পারে এবং একই সাথে উপলব্ধিযোগ্য ছবির মান বজায় রাখতে পারে।
pngcrush টুলটি বিশেষভাবে কার্যকর। এই টুলটি PNG ফিল্টার এবং zlib (Deflate) প্যারামিটারের উপর পুনরাবৃত্তি করে, প্রতিটি ফিল্টার এবং প্যারামিটারের সংমিশ্রণ ব্যবহার করে ছবিটি সংকুচিত করে। এরপর এটি এমন কনফিগারেশন নির্বাচন করে যা সবচেয়ে ছোট সংকুচিত আউটপুট দেয়।
JPEG ফাইল কম্প্রেস করার জন্য, আপনি packJPG এবং guetzli এর মতো টুল ব্যবহার করতে পারেন।
WebP ফাইল ফর্ম্যাট ব্যবহার করুন
PNG বা JPEG ফাইল ব্যবহার করার পরিবর্তে, আপনি আপনার ছবির জন্য WebP ফাইল ফর্ম্যাটও ব্যবহার করতে পারেন। WebP ফর্ম্যাটটি JPG এবং PNG এর মতো ক্ষতিকারক কম্প্রেশন এবং স্বচ্ছতা প্রদান করে এবং এটি JPEG বা PNG এর চেয়ে ভালো কম্প্রেশন প্রদান করতে পারে।
আপনি Android Studio ব্যবহার করে বিদ্যমান BMP, JPG, PNG অথবা স্ট্যাটিক GIF ছবিগুলিকে WebP ফর্ম্যাটে রূপান্তর করতে পারেন। আরও তথ্যের জন্য, WebP ছবি তৈরি করুন দেখুন।
ভেক্টর গ্রাফিক্স ব্যবহার করুন
আপনি ভেক্টর গ্রাফিক্স ব্যবহার করে রেজোলিউশন-স্বাধীন আইকন এবং অন্যান্য স্কেলেবল মিডিয়া তৈরি করতে পারেন। এই গ্রাফিক্স ব্যবহার করে আপনি আপনার APK ফুটপ্রিন্ট অনেকাংশে কমাতে পারেন। ভেক্টর ছবিগুলিকে অ্যান্ড্রয়েডে VectorDrawable অবজেক্ট হিসেবে উপস্থাপন করা হয়। VectorDrawable অবজেক্টের সাহায্যে, একটি 100-বাইট ফাইল স্ক্রিনের আকারের একটি তীক্ষ্ণ ছবি তৈরি করতে পারে।
তবে, প্রতিটি VectorDrawable অবজেক্ট রেন্ডার করতে সিস্টেমের জন্য উল্লেখযোগ্যভাবে বেশি সময় লাগে এবং বড় ছবিগুলি স্ক্রিনে প্রদর্শিত হতে আরও বেশি সময় নেয়। অতএব, ছোট ছবিগুলি প্রদর্শনের সময় কেবল এই ভেক্টর গ্রাফিক্সগুলি ব্যবহার করার কথা বিবেচনা করুন।
VectorDrawable অবজেক্টের সাথে কাজ করার বিষয়ে আরও তথ্যের জন্য, Drawables দেখুন।
অ্যানিমেটেড ছবির জন্য ভেক্টর গ্রাফিক্স ব্যবহার করুন
ফ্রেম-বাই-ফ্রেম অ্যানিমেশন তৈরি করতে AnimationDrawable ব্যবহার করবেন না, কারণ এটি করার জন্য আপনাকে অ্যানিমেশনের প্রতিটি ফ্রেমের জন্য একটি পৃথক বিটম্যাপ ফাইল অন্তর্ভুক্ত করতে হবে, যা আপনার APK এর আকার নাটকীয়ভাবে বৃদ্ধি করে।
পরিবর্তে, অ্যানিমেটেড ভেক্টর ড্রয়েবল তৈরি করতে AnimatedVectorDrawableCompat ব্যবহার করুন।
নেটিভ এবং জাভা কোড কমানো
আপনার অ্যাপে জাভা এবং নেটিভ কোডবেসের আকার কমাতে আপনি নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করতে পারেন।
অপ্রয়োজনীয় জেনারেট করা কোডটি সরান
স্বয়ংক্রিয়ভাবে তৈরি হওয়া যেকোনো কোডের ফুটপ্রিন্ট বুঝতে ভুলবেন না। উদাহরণস্বরূপ, অনেক প্রোটোকল বাফার টুল অত্যধিক সংখ্যক পদ্ধতি এবং ক্লাস তৈরি করে, যা আপনার অ্যাপের আকার দ্বিগুণ বা তিনগুণ করতে পারে।
গণনা এড়িয়ে চলুন
একটি একক enum আপনার অ্যাপের classes.dex ফাইলে প্রায় 1.0 থেকে 1.4 KB যোগ করতে পারে। জটিল সিস্টেম বা শেয়ার্ড লাইব্রেরির জন্য এই সংযোজনগুলি দ্রুত জমা হতে পারে। যদি সম্ভব হয়, তাহলে @IntDef অ্যানোটেশন এবং কোড সঙ্কুচিত করার মাধ্যমে এনুমারেশনগুলি বাদ দিয়ে পূর্ণসংখ্যায় রূপান্তর করার কথা বিবেচনা করুন। এই ধরণের রূপান্তর এনুমের সমস্ত ধরণের সুরক্ষা সুবিধা সংরক্ষণ করে।
নেটিভ বাইনারিগুলির আকার হ্রাস করুন
যদি আপনার অ্যাপটি নেটিভ কোড এবং অ্যান্ড্রয়েড এনডিকে ব্যবহার করে, তাহলে আপনি আপনার কোডটি অপ্টিমাইজ করে আপনার অ্যাপের রিলিজ ভার্সনের আকারও কমাতে পারেন। দুটি কার্যকর কৌশল হল ডিবাগ প্রতীকগুলি অপসারণ করা এবং নেটিভ লাইব্রেরিগুলি এক্সট্র্যাক্ট না করা।
ডিবাগ প্রতীকগুলি সরান
আপনার অ্যাপটি যদি ডেভেলপমেন্টের অধীনে থাকে এবং এখনও ডিবাগিং প্রয়োজন হয়, তাহলে ডিবাগ প্রতীক ব্যবহার করা যুক্তিসঙ্গত। নেটিভ লাইব্রেরি থেকে অপ্রয়োজনীয় ডিবাগ প্রতীকগুলি সরাতে অ্যান্ড্রয়েড এনডিকে-তে প্রদত্ত arm-eabi-strip টুলটি ব্যবহার করুন। পরে, আপনি আপনার রিলিজ বিল্ড কম্পাইল করতে পারেন।
নেটিভ লাইব্রেরিগুলি এক্সট্র্যাক্ট করা এড়িয়ে চলুন
আপনার অ্যাপের রিলিজ ভার্সন তৈরি করার সময়, আপনার অ্যাপের build.gradle.kts ফাইলে useLegacyPackaging false এ সেট করে APK-তে আনকম্প্রেসড .so ফাইল প্যাকেজ করুন। এই ফ্ল্যাগটি অক্ষম করলে PackageManager ইনস্টলেশনের সময় APK থেকে ফাইল সিস্টেমে .so ফাইল কপি করতে পারবে না। এই পদ্ধতিটি আপনার অ্যাপের আপডেটগুলিকে ছোট করে তোলে।
একাধিক লিন APK বজায় রাখুন
আপনার APK-তে এমন কিছু কন্টেন্ট থাকতে পারে যা ব্যবহারকারীরা ডাউনলোড করে কিন্তু কখনও ব্যবহার করে না, যেমন অতিরিক্ত ভাষা বা প্রতি-স্ক্রিন-ঘনত্বের রিসোর্স। আপনার ব্যবহারকারীদের জন্য ন্যূনতম ডাউনলোড নিশ্চিত করতে, Android অ্যাপ বান্ডেল ব্যবহার করে আপনার অ্যাপটি Google Play-তে আপলোড করুন। অ্যাপ বান্ডেল আপলোড করার মাধ্যমে Google Play প্রতিটি ব্যবহারকারীর ডিভাইস কনফিগারেশনের জন্য অপ্টিমাইজ করা APK তৈরি এবং পরিবেশন করতে পারে যাতে তারা কেবল আপনার অ্যাপ চালানোর জন্য প্রয়োজনীয় কোড এবং রিসোর্স ডাউনলোড করে। বিভিন্ন ডিভাইস সমর্থন করার জন্য আপনাকে একাধিক APK তৈরি, স্বাক্ষর এবং পরিচালনা করতে হবে না এবং ব্যবহারকারীরা ছোট, আরও অপ্টিমাইজ করা ডাউনলোড পাবেন।
যদি আপনি আপনার অ্যাপটি Google Play তে প্রকাশ না করেন, তাহলে আপনি আপনার অ্যাপটিকে স্ক্রিন সাইজ বা GPU টেক্সচার সাপোর্টের মতো বিষয়গুলির উপর ভিত্তি করে কয়েকটি APK-তে ভাগ করতে পারেন।
যখন কোনও ব্যবহারকারী আপনার অ্যাপ ডাউনলোড করেন, তখন তাদের ডিভাইসটি ডিভাইসের বৈশিষ্ট্য এবং সেটিংসের উপর ভিত্তি করে সঠিক APK পায়। এইভাবে, ডিভাইসগুলি এমন বৈশিষ্ট্যগুলির জন্য সম্পদ গ্রহণ করে না যা ডিভাইসগুলিতে নেই। উদাহরণস্বরূপ, যদি কোনও ব্যবহারকারীর একটি hdpi ডিভাইস থাকে, তবে তাদের xxxhdpi রিসোর্সের প্রয়োজন হয় না যা আপনি উচ্চ ঘনত্বের ডিসপ্লে সহ ডিভাইসগুলির জন্য অন্তর্ভুক্ত করতে পারেন।
আরও তথ্যের জন্য, একাধিক APK তৈরি করুন এবং একাধিক APK সমর্থন দেখুন।