আপনার তাত্ক্ষণিক অ্যাপের আকার কমিয়ে দিন

সতর্কতা: Google Play Instant আর উপলব্ধ থাকবে না। ডিসেম্বর ২০২৫ থেকে, Google Play এর মাধ্যমে Instant Apps প্রকাশ করা যাবে না এবং সমস্ত Google Play পরিষেবা Instant API আর কাজ করবে না। ব্যবহারকারীদের আর কোনও পদ্ধতি ব্যবহার করে Play দ্বারা Instant Apps পরিবেশন করা হবে না।

গুগল প্লে ইনস্ট্যান্ট চালু হওয়ার পর থেকে আমরা ডেভেলপারদের প্রতিক্রিয়া এবং ইকোসিস্টেম উন্নত করার জন্য আমাদের ক্রমাগত বিনিয়োগের ভিত্তিতে এই পরিবর্তনটি করছি।

ব্যবহারকারী বৃদ্ধির জন্য অপ্টিমাইজেশন অব্যাহত রাখার জন্য, আমরা ডেভেলপারদের তাদের নিয়মিত অ্যাপ বা গেমে ব্যবহারকারীদের রেফার করার জন্য উৎসাহিত করি, প্রাসঙ্গিক হলে নির্দিষ্ট ভ্রমণ বা বৈশিষ্ট্যগুলিতে পুনঃনির্দেশিত করার জন্য ডিপলিঙ্ক ব্যবহার করি।

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

এই ডকুমেন্টটি আপনার অ্যাপের কাঠামো এবং বাইনারি আকার পরিচালনার জন্য সর্বোত্তম অনুশীলনগুলি বর্ণনা করে যাতে একটি মসৃণ তাৎক্ষণিক অ্যাপ অভিজ্ঞতা সম্ভব হয়। আপনি আপনার ইনস্টলযোগ্য অ্যাপের সুবিধার্থে এই একই অনুশীলনগুলি প্রয়োগ করতে পারেন।

একাধিক বৈশিষ্ট্য মডিউলে পুনঃফ্যাক্টর করুন

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

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

সেরা অনুশীলন

আপনার অ্যাপ রিফ্যাক্টর করার সময়, নিম্নলিখিত সেরা অনুশীলনগুলি মনে রাখবেন:

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

অ্যাপ রিসোর্স আপডেট করুন

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

ছবির ফাইলের আকার কমানো

PNG এর পরিবর্তে WebP ফাইল ফর্ম্যাট ব্যবহার করে আপনি আপনার অ্যাপের ড্রয়েবলের মোট আকার উল্লেখযোগ্যভাবে কমাতে পারেন। Google Play Instant WebP-এর জন্য সম্পূর্ণ সমর্থন প্রদান করে, যার মধ্যে রয়েছে স্বচ্ছতা এবং লসলেস কম্প্রেশন, যাতে ছবির মান একই থাকে।

যদি সম্ভব হয়, তাহলে অন্যান্য PNG ছবি ব্যবহারের জন্য সমস্ত ব্যাকওয়ার্ড কম্প্যাটিবিলিটি প্রয়োজনীয়তাগুলি সরিয়ে ফেলুন। যদি আপনার PNG ছবি ব্যবহার করতেই হয়, তাহলে সেগুলিকে আপনার অ্যাপ তৈরি এবং ইনস্টল করার জন্য ব্যবহৃত মডিউলে রাখুন।

অব্যবহৃত ভাষাগুলি সরান

যদি আপনার অ্যাপটি একাধিক ভাষা সমর্থন করে, তাহলে যতটা সম্ভব স্থানীয় রিসোর্স কমিয়ে আনুন। আপনি যদি "অ্যাপ কম্প্যাট" লাইব্রেরি ব্যবহার করেন, যেমন android.support.v7.appcompat , তাহলে এই ধাপটি বিশেষভাবে কার্যকর। এই লাইব্রেরিতে অনেক ভাষায় বার্তা রয়েছে, যার মধ্যে কিছু আপনার অ্যাপ সমর্থন নাও করতে পারে।

আরও জানতে, অব্যবহৃত বিকল্প সম্পদ, বিশেষ করে অব্যবহৃত ভাষাগুলি কীভাবে অপসারণ করবেন তা দেখুন।

অতিরিক্ত ফাইলগুলি সরান

আপনার প্রোজেক্টে আমদানি করা কিছু রিসোর্স আপনার অ্যাপ আর ব্যবহার নাও করতে পারে। এই রিসোর্সগুলি সরাতে সাহায্য করার জন্য, Android Studio-তে এই নির্দিষ্ট পরিস্থিতির জন্য একটি Lint চেক রয়েছে। টুলটি ব্যবহার করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. Control+Alt+Shift+I ( Mac OS এ Command+Alt+Shift+I ) টিপুন।
  2. যে ডায়ালগটি প্রদর্শিত হবে, তাতে "unused resources" টাইপ করুন।
  3. সম্পদ ব্যবহার পরিদর্শন প্রক্রিয়া শুরু করতে অব্যবহৃত সম্পদ বিকল্পটি নির্বাচন করুন।

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

অব্যবহৃত লাইব্রেরিগুলি সরান

একটি অ্যাপের পরিধি বাড়ার সাথে সাথে এটি আশ্চর্যজনকভাবে অনেক নির্ভরশীলতার সম্মুখীন হতে পারে, বিশেষ করে নিম্নলিখিত ধরণের একটি:

  • নেটিভ লাইব্রেরি: যেসব লাইব্রেরিতে নেটিভ কোড থাকে এবং আপনার তাৎক্ষণিক অ্যাপ কখনোই চালায় না।
  • ট্রানজিটিভ ডিপেন্ডেন্সি: যেসব লাইব্রেরির উপর আপনার অ্যাপের আমদানি করা লাইব্রেরি নির্ভর করে।

আপনার অ্যাপের প্রজেক্টে যেকোনো বহিরাগত নির্ভরতা সনাক্ত করার জন্য অ্যান্ড্রয়েড স্টুডিওতে বেশ কিছু কার্যকর টুল রয়েছে:

বহিরাগত লাইব্রেরি

অ্যান্ড্রয়েড স্টুডিওর প্রজেক্ট ভিউতে একটি এক্সটার্নাল লাইব্রেরি বিভাগ অন্তর্ভুক্ত রয়েছে।

এই বিভাগে আপনার অ্যাপ ব্যবহার করে এমন প্রতিটি লাইব্রেরি রয়েছে, যার মধ্যে নেটিভ কোড এবং সমস্ত ট্রানজিটিভ নির্ভরতা অন্তর্ভুক্ত। এই ভিউতে, অব্যবহৃত বা সদৃশ লাইব্রেরিগুলি সন্ধান করুন যা আপনার অ্যাপের প্রয়োজন হয় না।

APK বিশ্লেষক

আপনি APK অ্যানালাইজার টুল ব্যবহার করে বিভিন্ন বিল্ডের তুলনা করতে পারেন, যার মধ্যে তাৎক্ষণিক অ্যাপ বিল্ডও রয়েছে।

আপনার অ্যাপের কোন লাইব্রেরির প্রয়োজন নেই তা নির্ধারণ করার পরে, আপনার Gradle বিল্ড ফাইলে নিম্নলিখিত লাইনগুলির মতো লাইন যুক্ত করে সেগুলি বাদ দিন:

<feature_module>/build.gradle>

খাঁজকাটা

dependencies {
    implementation('some-important-but-large-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

কোটলিন

dependencies {
    implementation('some-important-but-large-library') {
        exclude(group = "com.example.imgtools", module = "native")
    }
}

আপনার অ্যাপের নির্ভরতার মোট আমদানির আকার হ্রাস করার বিষয়ে আরও তথ্যের জন্য, গ্র্যাডেলের নির্ভরতা ব্যবস্থাপনার নির্দেশিকা দেখুন।

সম্পদের ক্লাউড ডেলিভারি বাস্তবায়ন করুন

যদি আপনার আকার আরও কমাতে হয়, তাহলে আপনাকে ক্লাউড ডেলিভারি অফ অ্যাসেটের উপর নির্ভর করতে হতে পারে।