স্টার্টআপ প্রোফাইল তৈরি করুন

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

আরও তথ্যের জন্য, স্টার্টআপ প্রোফাইলের সংক্ষিপ্ত বিবরণ দেখুন।

প্রয়োজনীয়তা

আমরা নিম্নলিখিত টুলগুলির সাথে স্টার্টআপ প্রোফাইল ব্যবহার করার পরামর্শ দিই:

  • জেটপ্যাক ম্যাক্রোবেঞ্চমার্ক ১.২.০ বা উচ্চতর
  • অ্যান্ড্রয়েড গ্রেডল প্লাগইন (AGP) ৮.২ বা উচ্চতর
  • অ্যান্ড্রয়েড স্টুডিও ইগুয়ানা বা উচ্চতর সংস্করণ

এছাড়াও, আপনার অ্যাপে নিম্নলিখিত সেটিংসগুলো থাকা প্রয়োজন:

  • R8 সক্রিয় করা হয়েছে। আপনার রিলিজ বিল্ডের জন্য, isMinifyEnabled = true সেট করুন।
  • DEX লেআউট অপ্টিমাইজেশন সক্রিয় করা হয়েছে। এটি শুধুমাত্র AGP 8.1 থেকে পাওয়া যায় এবং AGP 8.3 থেকে ডিফল্টরূপে সক্রিয় থাকে। AGP সংস্করণ 8.1 থেকে 8.2-এর জন্য, অ্যাপ মডিউলের বিল্ড ফাইলের baselineProfile {} ব্লকে, dexLayoutOptimization = true সেট করুন।

একটি স্টার্টআপ প্রোফাইল তৈরি করুন

আপনি যখন ডিফল্ট বেসলাইন প্রোফাইল জেনারেটর টেমপ্লেট ব্যবহার করেন, তখন অ্যান্ড্রয়েড স্টুডিও বেসলাইন প্রোফাইলের পাশাপাশি একটি স্টার্টআপ প্রোফাইলও তৈরি করে।

স্টার্টআপ প্রোফাইল তৈরি করার সাধারণ ধাপগুলো বেসলাইন প্রোফাইল তৈরি করার ধাপগুলোর মতোই।

স্টার্টআপ প্রোফাইল তৈরি করার ডিফল্ট উপায় হলো অ্যান্ড্রয়েড স্টুডিওর মধ্যে থাকা বেসলাইন প্রোফাইল জেনারেটর মডিউল টেমপ্লেটটি ব্যবহার করা। এর মধ্যে স্টার্টআপ ইন্টারঅ্যাকশনগুলো অন্তর্ভুক্ত থাকে, যা একটি মৌলিক স্টার্টআপ প্রোফাইল তৈরি করে। এই স্টার্টআপ প্রোফাইলটিকে আরও ক্রিটিক্যাল ইউজার জার্নি (CUJ) দিয়ে সমৃদ্ধ করতে, আপনার অ্যাপের স্টার্টআপ CUJ-গুলোকে এমন একটি rule ব্লকে যুক্ত করুন যেখানে includeInStartupProfile ` true সেট করা আছে। সাধারণ অ্যাপের ক্ষেত্রে, অ্যাপের ` MainActivity চালু করাই যথেষ্ট হতে পারে। আরও জটিল অ্যাপের জন্য, আপনার অ্যাপে সবচেয়ে সাধারণ এন্ট্রি পয়েন্টগুলো যুক্ত করার কথা বিবেচনা করুন, যেমন হোম স্ক্রিন থেকে অ্যাপটি শুরু করা বা কোনো ডিপ লিঙ্কে প্রবেশ করা।

নিম্নলিখিত কোড স্নিপেটটি একটি বেসলাইন প্রোফাইল জেনারেটর (ডিফল্টরূপে BaselineProfileGenerator.kt ফাইল) প্রদর্শন করে, যা আপনার অ্যাপটিকে হোম স্ক্রীন থেকে চালু করে একটি ডিপ লিঙ্কে নিয়ে যায়। ডিপ লিঙ্কটি সরাসরি অ্যাপের নিউজ ফিডে নিয়ে যায়, অ্যাপের হোম স্ক্রীনে নয়।

@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {

    @get:Rule
    val rule = BaselineProfileRule()

    @Test
    fun generate() {
        rule.collect(
            packageName = "com.example.app",
            includeInStartupProfile = true
        ) {
            uiAutomator {
                // Launch directly into the NEWS_FEED using startActivityIntent
                startIntent(Intent().apply {
                    setPackage(packageName)
                    setAction("com.example.app.NEWS_FEED")
                })
        }
    }
}

অ্যাপ কনফিগারেশনের জন্য 'Generate Baseline Profile' চালান এবং src/<variant>/generated/baselineProfiles/startup-prof.txt এ 'Startup Profile' নিয়মগুলো খুঁজুন, যেখানে AGP সেগুলোকে স্বয়ংক্রিয়ভাবে গ্রহণ করে।

স্টার্টআপ প্রোফাইল তৈরির বিবেচ্য বিষয়সমূহ

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

প্রথম ইউজ কেসটি আলোচনা করার পর, অ্যাপ চালুর জন্য ইউজার ফানেল অনুসরণ করুন। অনেক ক্ষেত্রে, অ্যাপ স্টার্টআপ ফানেলগুলো এই তালিকাটি অনুসরণ করে:

  1. প্রধান লঞ্চার কার্যকলাপ
  2. অ্যাপ চালু করার জন্য বিজ্ঞপ্তি
  3. ঐচ্ছিক লঞ্চার কার্যক্রম

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

{% হুবহু %} {% endverbatim %} {% হুবহু %} {% endverbatim %}