আপনি packageScope সাথে R8 ব্যবহার করে নির্দিষ্ট প্যাকেজ অপ্টিমাইজ করতে পারেন। এটি এমন অ্যাপগুলির জন্য একটি ঐচ্ছিক প্রথম পদক্ষেপ হিসাবে ডিজাইন করা হয়েছে যেগুলি এখনও R8 ব্যবহার করে না এবং যেসব অ্যাপ ইতিমধ্যেই R8 ব্যবহার করে, তাদের জন্য এটি সুপারিশ করা হয় না।
packageScope ব্যবহার করবেন কিনা তা বিবেচনা করুন।
আপনার অ্যাপে যদি আগে থেকেই R8 ব্যবহৃত হয়ে থাকে, তাহলে packageScope ব্যবহার করবেন না, কারণ পারফরম্যান্স এবং অ্যাপের আকারের দিক থেকে এটি একটি নিম্নমানের কনফিগারেশন। এর পরিবর্তে, উন্নত keep rules ব্যবহার করে আপনার অ্যাপের R8 কনফিগারেশনকে আরও উন্নত করুন অথবা, যদি কম্প্যাটিবিলিটি মোড ব্যবহার করেন, তবে R8-এর ফুল মোডে মাইগ্রেট করুন।
যেসব অ্যাপ এখনও R8 ব্যবহার করে না, কিন্তু এটি গ্রহণ করতে চলেছে, তারা পর্যায়ক্রমে এই পরিবর্তনটি পরিচালনা করার জন্য packageScope ব্যবহার করতে পারে। যেহেতু R8 শক্তিশালী অপটিমাইজেশন প্রয়োগ করে যা অ্যাপের আচরণ পরিবর্তন করতে পারে, তাই এই অপটিমাইজেশনগুলোকে AndroidX এবং Kotlin-এর মতো নিরাপদ নির্দিষ্ট প্যাকেজগুলোতে সীমাবদ্ধ রাখলে আপনি ন্যূনতম ঝুঁকিতে পারফরম্যান্সের উন্নতি করতে পারবেন। আপনার অ্যাপটি স্থিতিশীল হয়ে গেলে, আপনি ধীরে ধীরে এই অপটিমাইজেশনগুলোকে আপনার বাকি কোডবেস এবং ডিপেন্ডেন্সিগুলোতে প্রসারিত করতে পারেন এবং প্রতিটি পর্যায়ে স্থিতিশীলতা পরীক্ষা করতে পারেন।
পূর্বশর্ত
packageScope সাথে R8 ব্যবহার করার জন্য প্রয়োজন:
- অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৯.০ বা তার পরবর্তী সংস্করণ।
- R8 ফুল মোডে , কম্প্যাটিবিলিটি মোডে নয়।
অপ্টিমাইজেশন কনফিগার করুন
packageScope ব্যবহার করে অপ্টিমাইজেশন সক্রিয় করতে, নিম্নলিখিত ধাপগুলি সম্পন্ন করুন।
অপ্টিমাইজ করার জন্য লাইব্রেরি নির্বাচন করুন
অপ্টিমাইজ করার জন্য লাইব্রেরিগুলো শনাক্ত করুন। আমরা AndroidX এবং Kotlin লাইব্রেরি androidx.** , kotlin.** , এবং kotlinx.** দিয়ে শুরু করার পরামর্শ দিই, কারণ এগুলো স্থিতিশীল লাইব্রেরি যা R8 সামঞ্জস্যের জন্য কনফিগার করা হয়েছে।
packageScope-এর সাথে R8 ব্যবহারের জন্য সমর্থন সক্রিয় করুন।
আপনার প্রোজেক্টের gradle.properties ফাইলে নিম্নলিখিত বিষয়গুলো যোগ করুন:
android.r8.gradual.support=true
অপ্টিমাইজেশন ব্লক সেট আপ করুন
আপনার মডিউল-স্তরের build.gradle.kts (বা build.gradle ) ফাইলে, আপনার রিলিজ বিল্ড কনফিগারেশনে একটি optimization ব্লক যোগ করুন। এই ব্লকের ভিতরে, আপনি যে নির্দিষ্ট প্যাকেজগুলি অপটিমাইজ করতে চান তার তালিকা করতে packageScope ব্যবহার করুন। আপনার build.gradle.kts ফাইলে, আপনার প্যাকেজ তালিকাটিকে setOf() এর মধ্যে রাখুন।
কোটলিন
android {
buildTypes {
release {
optimization {
enable = true
packageScope = setOf("androidx.**","kotlin.**", "kotlinx.**")
}
}
}
}
গ্রুভি
android {
buildTypes {
release {
optimization {
enable = true
packageScope = ["androidx.**", "kotlin.**", "kotlinx.**"]
}
}
}
}
অপ্টিমাইজেশন পরীক্ষা করুন
packageScope ডিক্লারেশনটি প্রয়োগ বা আপডেট করার পর, আপনার অ্যাপটি পুঙ্খানুপুঙ্খভাবে পরীক্ষা করে দেখুন যে কোনো অপ্রত্যাশিত ক্র্যাশ বা আচরণগত পরিবর্তন ঘটেনি।
নির্দিষ্ট প্যাকেজ অপ্টিমাইজ করা থেকে আপনার সম্পূর্ণ অ্যাপ অপ্টিমাইজ করার দিকে অগ্রসর হোন।
অপ্টিমাইজেশনের সুবিধা সর্বাধিক করতে, আপনার পুরো অ্যাপে packageScope ব্যবহার থেকে ধীরে ধীরে R8 ব্যবহারে স্থানান্তরিত হওয়ার লক্ষ্য রাখা উচিত। এই প্রক্রিয়ার মধ্যে রয়েছে পর্যায়ক্রমে আপনার অপ্টিমাইজেশন কভারেজ প্রসারিত করা:
- স্থিতিশীল লাইব্রেরি দিয়ে শুরু করুন । শুরুতে
packageScopeতালিকায় শুধুমাত্র বহুল ব্যবহৃত ও স্থিতিশীল লাইব্রেরিগুলো অন্তর্ভুক্ত করুন, যেগুলো R8-এর অপটিমাইজেশনের সাথে সামঞ্জস্যপূর্ণ।androidx.**,kotlin.**এবংkotlinx.**এর মতো AndroidX এবং Kotlin লাইব্রেরিগুলো দিয়ে শুরু করুন। - পর্যায়ক্রমে প্যাকেজ যোগ করুন । ধীরে ধীরে
packageScopeএ নতুন প্যাকেজ প্রিফিক্স যোগ করুন:- নির্ভরতাগুলো মূল্যায়ন করুন । আপনার অ্যাপের লাইব্রেরিগুলো পর্যালোচনা করুন।
packageScopeতালিকায় যোগ করার জন্য উপযুক্ত লাইব্রেরিগুলোর মধ্যে রয়েছে অফিসিয়াল গুগল লাইব্রেরি (উদাহরণস্বরূপ,com.google.**) এবংOkHttpমতো অন্যান্য নির্ভরযোগ্য লাইব্রেরি (উদাহরণস্বরূপ,okhttp3.**এবংokio.**)। যেসব লাইব্রেরিতে ব্যাপক রিফ্লেকশন, সিরিয়ালাইজেশন বা নেটিভ কোড কল (JNI) জড়িত নয়, সেগুলোকে অগ্রাধিকার দিন। - প্যাকেজ সাইজের উপর ভিত্তি করে অগ্রাধিকার দিন । আপনার অ্যাপের সাইজের সবচেয়ে বড় অবদানকারী ফাইলগুলো শনাক্ত করতে অ্যান্ড্রয়েড স্টুডিওর এপিকে অ্যানালাইজার ব্যবহার করুন।
- R8 বন্ধ রেখে একটি রিলিজ AAB বা APK তৈরি করুন।
- এটি অ্যানালাইজারে খুলুন এবং
dexফাইলগুলো পরীক্ষা করুন। - প্যাকেজগুলোকে আকার অনুযায়ী সাজান। সবচেয়ে বড় প্যাকেজগুলো অপটিমাইজেশনের জন্য সর্বোচ্চ রিটার্ন অন ইনভেস্টমেন্ট (ROI) প্রদান করে। এগুলোকে প্রথমে টার্গেট করলে প্রক্রিয়ার শুরুতেই আকারের সবচেয়ে উল্লেখযোগ্য হ্রাস ঘটে, যদি না এই লাইব্রেরিগুলোর রাখার নিয়মগুলো অতিরিক্ত বিস্তৃত হয়। আরও তথ্যের জন্য ‘লাইব্রেরি বিচক্ষণতার সাথে নির্বাচন করুন’ দেখুন।
- নির্ভরতাগুলো মূল্যায়ন করুন । আপনার অ্যাপের লাইব্রেরিগুলো পর্যালোচনা করুন।
- আচরণগত পরিবর্তন যাচাই করুন । প্রতিটি নতুন প্যাকেজ প্রিফিক্স যোগ করার পর, যেকোনো রিগ্রেশন বা অপ্রত্যাশিত আচরণ শনাক্ত ও সমাধান করার জন্য ব্যাপক পরীক্ষা চালান।
- অ্যাপ প্যাকেজগুলো সবশেষে যোগ করুন । যদি আপনার অ্যাপ প্যাকেজগুলোতে বেশি রিফ্লেকশন ব্যবহার না হয়, তবে প্যাকেজগুলোকে
packageScopeএর অন্তর্ভুক্ত করুন এবং প্রয়োজন অনুযায়ী পর্যায়ক্রমে `keep rules` যোগ করুন। যদি আপনার অ্যাপ প্যাকেজগুলোতে প্রচুর রিফ্লেকশন ব্যবহার হয়, তবে প্যাকেজগুলোকেpackageScopeএর অন্তর্ভুক্ত করুন এবং প্রয়োজনীয় প্যাকেজগুলোর জন্য প্যাকেজ-ব্যাপী `keep rules` যোগ করুন। `keep rules`-গুলোকে আরও পরিমার্জিত করার জন্য সেগুলোর ওপর পুনরাবৃত্তি করুন। - আপনার সম্পূর্ণ অ্যাপে R8 ব্যবহার শুরু করুন । আপনার অ্যাপের বেশিরভাগ ডিপেন্ডেন্সি
packageScopeডিক্লারেশনে অন্তর্ভুক্ত হয়ে গেলে এবং অ্যাপটি স্থিতিশীল হয়ে গেলে, সম্পূর্ণ অ্যাপটিকে ফুল মোডে অপটিমাইজ করার জন্যpackageScopeটি সরিয়ে দিন।