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

স্টার্টআপ প্রোফাইল হল বেসলাইন প্রোফাইলের একটি উপসেট। স্টার্টআপ প্রোফাইলগুলি বিল্ড সিস্টেম দ্বারা আপনার APK এর DEX ফাইলগুলিতে কোডের বিন্যাস উন্নত করার মাধ্যমে ক্লাস এবং পদ্ধতিগুলিকে আরও অপ্টিমাইজ করতে ব্যবহার করা হয়৷ স্টার্টআপ প্রোফাইলের সাথে, আপনার অ্যাপ স্টার্টআপ সাধারণত বেসলাইন প্রোফাইলের তুলনায় 15% থেকে 30% দ্রুত হয়।

চিত্র 1. DEX লেআউট অপ্টিমাইজেশান থেকে কোড স্থানীয় উন্নতি।

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

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

  • Jetpack ম্যাক্রোবেঞ্চমার্ক 1.2.0 বা উচ্চতর
  • অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.2 বা উচ্চতর
  • অ্যান্ড্রয়েড স্টুডিও ইগুয়ানা বা উচ্চতর

উপরন্তু, আপনার অ্যাপে নিম্নলিখিত সেটিংস প্রয়োজন:

  • R8 সক্ষম। আপনার রিলিজ বিল্ডের জন্য, isMinifyEnabled = true সেট করুন।
  • DEX লেআউট অপ্টিমাইজেশান সক্ষম করা হয়েছে৷ অ্যাপ মডিউলের বিল্ড ফাইলের baselineProfile {} ব্লকে, dexLayoutOptimization = true সেট করুন।

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

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

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

একটি স্টার্টআপ প্রোফাইল তৈরি করার ডিফল্ট উপায় হল অ্যান্ড্রয়েড স্টুডিও থেকে বেসলাইন প্রোফাইল জেনারেটর মডিউল টেমপ্লেট ব্যবহার করে। এর মধ্যে রয়েছে স্টার্টআপ ইন্টারঅ্যাকশন যা একটি মৌলিক স্টার্টআপ প্রোফাইল গঠন করে। এই স্টার্টআপ প্রোফাইলটিকে আরও ক্রিটিকাল ইউজার জার্নিস (CUJs) দিয়ে বাড়ানোর জন্য, আপনার অ্যাপ স্টার্টআপ 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
        ) {
            // Launch directly into the NEWS_FEED.
            startActivityAndWait(Intent().apply {
                setPackage(packageName)
                setAction("com.example.app.NEWS_FEED")
            })
        }
    }
}

অ্যাপ কনফিগারেশনের জন্য জেনারেট বেসলাইন প্রোফাইল চালান এবং src/<variant>/generated/baselineProfiles/startup-prof.txt এ স্টার্টআপ প্রোফাইলের নিয়মগুলি খুঁজুন।

স্টার্টআপ প্রোফাইল অপ্টিমাইজেশান নিশ্চিত করুন

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

যদি স্টার্টআপ ক্লাসগুলি একটি একক DEX ফাইলে ফিট না হয় তবে Android স্টুডিও আপনাকে সতর্ক করে৷ স্টার্টআপ ক্লাসে নন-স্টার্টআপ পদ্ধতির পরিমাণ অন্তর্ভুক্ত ডায়াগনস্টিক তথ্য পেতে, আপনি স্টার্টআপ প্রয়োগ করার সময় settings.gradle ফাইলে নিম্নলিখিত পরিবর্তনগুলি করে R8 কম্পাইলারটি কমপক্ষে সংস্করণ 8.3.36-dev-এ আপডেট করা হয়েছে তা নিশ্চিত করুন। প্রোফাইল:

কোটলিন

pluginManagement {
    buildscript {
        repositories {
            mavenCentral()
            maven {
                url = uri("https://storage.googleapis.com/r8-releases/raw")
            }
        }
        dependencies {
            classpath("com.android.tools:r8:8.3.6-dev")
        }
    }
}

গ্রোভি

pluginManagement {
    buildscript {
        repositories {
            mavenCentral()
            maven {
                url uri('https://storage.googleapis.com/r8-releases/raw')
            }
        }
        dependencies {
            classpath 'com.android.tools:r8:8.3.6-dev"
        }
    }
}

Gradle দিয়ে তৈরি করার সময় নিম্নলিখিত কমান্ডে assembleRelease পরে --info যোগ করা নিশ্চিত করুন।

./gradlew assembleRelease --info

ডায়গনিস্টিক তারপর টার্মিনালে মুদ্রিত হয়।

যদি আপনার অ্যাপ বা কোনো লাইব্রেরি কোনো desugared API উল্লেখ করে, তাহলে এই ক্লাসগুলির বান্ডিল সামঞ্জস্যপূর্ণ বাস্তবায়ন সর্বদা শেষ DEX ফাইলে থাকে। এই ডিসুগার করা শেষ DEX ফাইলটি DEX লেআউট অপ্টিমাইজেশানে অংশগ্রহণ করে না।

স্টার্টআপ প্রোফাইল তৈরি করার জন্য বিবেচনা

একটি স্টার্টআপ প্রোফাইলের ক্লাস এবং পদ্ধতির আউটপুট প্রথম classes.dex ফাইলের আকার দ্বারা সীমিত। এর মানে হল যে সমস্ত বেসলাইন প্রোফাইল যাত্রাও স্টার্টআপ প্রোফাইল যাত্রা হওয়া উচিত নয়।

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

প্রথম ব্যবহারের কেস কভার করার পরে, অ্যাপ স্টার্টআপের জন্য ব্যবহারকারীর ফানেল অনুসরণ করুন। অনেক ক্ষেত্রে, অ্যাপ স্টার্টআপ ফানেল এই তালিকাটি অনুসরণ করে:

  1. প্রধান লঞ্চার কার্যকলাপ
  2. বিজ্ঞপ্তি যা অ্যাপ স্টার্টআপকে ট্রিগার করে
  3. ঐচ্ছিক লঞ্চার কার্যক্রম

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

{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}