বেসলাইন প্রোফাইল তৈরি করুন

Jetpack Macrobenchmark লাইব্রেরি এবং BaselineProfileRule ব্যবহার করে প্রতিটি অ্যাপ রিলিজের জন্য স্বয়ংক্রিয়ভাবে প্রোফাইল তৈরি করুন। আমরা আপনাকে com.android.tools.build:gradle:8.0.0 বা উচ্চতর ব্যবহার করার পরামর্শ দিচ্ছি, যা বেসলাইন প্রোফাইল ব্যবহার করার সময় বিল্ড উন্নতির সাথে আসে।

একটি নতুন বেসলাইন প্রোফাইল তৈরি করার জন্য এই সাধারণ পদক্ষেপগুলি হল:

  1. বেসলাইন প্রোফাইল মডিউল সেট আপ করুন।
  2. বেসলাইন প্রোফাইল তৈরি করতে সহায়তা করে JUnit পরীক্ষাটি সংজ্ঞায়িত করুন।
  3. আপনি অপ্টিমাইজ করতে চান এমন ক্রিটিক্যাল ইউজার জার্নি (CUJs) যোগ করুন।
  4. বেসলাইন প্রোফাইল তৈরি করুন।

আপনি বেসলাইন প্রোফাইল তৈরি করার পরে, গতির উন্নতি পরিমাপ করতে একটি শারীরিক ডিভাইস ব্যবহার করে বেঞ্চমার্ক করুন।

AGP 8.2 বা উচ্চতর দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

একটি নতুন বেসলাইন প্রোফাইল তৈরি করার সবচেয়ে সহজ উপায় হল বেসলাইন প্রোফাইল মডিউল টেমপ্লেট ব্যবহার করা, যা Android Studio Iguana এবং Android Gradle Plugin (AGP) 8.2 থেকে পাওয়া যায়।

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

বেসলাইন প্রোফাইল মডিউল সেট আপ করুন

বেসলাইন প্রোফাইল মডিউল টেমপ্লেট চালানোর জন্য, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ফাইল > নতুন > নতুন মডিউল নির্বাচন করুন
  2. টেমপ্লেট প্যানেলে বেসলাইন প্রোফাইল জেনারেটর টেমপ্লেট নির্বাচন করুন এবং এটি কনফিগার করুন:
    চিত্র 1. বেসলাইন প্রোফাইল জেনারেটর মডিউল টেমপ্লেট।

    টেমপ্লেটের ক্ষেত্রগুলি নিম্নরূপ:

    • লক্ষ্য অ্যাপ্লিকেশন : বেসলাইন প্রোফাইল কোন অ্যাপের জন্য তৈরি করা হয়েছে তা নির্ধারণ করে। যখন আপনার প্রোজেক্টে শুধুমাত্র একটি অ্যাপ মডিউল থাকে, তখন এই তালিকায় শুধুমাত্র একটি আইটেম থাকে।
    • মডিউল নাম : বেসলাইন প্রোফাইল মডিউল তৈরির জন্য আপনি যে নামটি চান।
    • প্যাকেজের নাম : বেসলাইন প্রোফাইল মডিউলের জন্য আপনি যে প্যাকেজ নামটি চান।
    • ভাষা : আপনি জেনারেট করা কোডটি কোটলিন বা জাভা হতে চান কিনা।
    • কনফিগারেশন ভাষা তৈরি করুন : আপনি আপনার বিল্ড কনফিগারেশন স্ক্রিপ্টগুলির জন্য কোটলিন স্ক্রিপ্ট (কেটিএস) বা গ্রোভি ব্যবহার করতে চান কিনা।
    • Gradle-পরিচালিত ডিভাইস ব্যবহার করুন : আপনি আপনার অ্যাপ পরীক্ষা করতে Gradle-পরিচালিত ডিভাইস ব্যবহার করছেন কিনা।
  3. Finish-এ ক্লিক করুন এবং নতুন মডিউল তৈরি করা হয়েছে। আপনি যদি সোর্স কন্ট্রোল ব্যবহার করেন, তাহলে আপনাকে সোর্স কন্ট্রোলে নতুন তৈরি মডিউল ফাইল যোগ করার জন্য বলা হতে পারে।

বেসলাইন প্রোফাইল জেনারেটর সংজ্ঞায়িত করুন

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

এটি রক্ষণাবেক্ষণে সহায়তা করে যদি আপনি এই CUJগুলিকে তৈরি করা বেসলাইন প্রোফাইল এবং বেঞ্চমার্ক কোডের বাইরে বিমূর্ত করেন যাতে সেগুলি উভয়ের জন্য ব্যবহার করা যেতে পারে। এর মানে হল যে আপনার CUJ-তে পরিবর্তনগুলি ধারাবাহিকভাবে ব্যবহার করা হয়।

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

বেসলাইন প্রোফাইল মডিউল টেমপ্লেট বেসলাইন প্রোফাইল তৈরি করতে একটি নতুন রান কনফিগারেশন যোগ করে। আপনি যদি পণ্যের স্বাদ ব্যবহার করেন, তবে Android স্টুডিও একাধিক রান কনফিগারেশন তৈরি করে যাতে আপনি প্রতিটি স্বাদের জন্য পৃথক বেসলাইন প্রোফাইল তৈরি করতে পারেন।

বেসলাইন প্রোফাইল রান কনফিগারেশন তৈরি করুন।
চিত্র 2. এই কনফিগারেশনটি চালানোর ফলে বেসলাইন প্রোফাইল তৈরি হয়।

যখন জেনারেট বেসলাইন প্রোফাইল রান কনফিগারেশন সম্পূর্ণ হয়, তখন এটি তৈরি করা বেসলাইন প্রোফাইলটিকে src/ variant /generated/baselineProfiles/baseline-prof.txt ফাইলে কপি করে যেটি প্রোফাইল করা হচ্ছে। বৈকল্পিক বিকল্পগুলি হয় রিলিজ বিল্ড টাইপ বা রিলিজ বিল্ড টাইপ জড়িত একটি বিল্ড বৈকল্পিক।

তৈরি করা বেসলাইন প্রোফাইলটি মূলত build/outputs তৈরি করা হয়। সম্পূর্ণ পথটি প্রোফাইল করা অ্যাপের রূপ বা স্বাদ দ্বারা নির্দেশিত হয় এবং আপনি প্রোফাইলিংয়ের জন্য গ্র্যাডল-পরিচালিত ডিভাইস বা সংযুক্ত ডিভাইস ব্যবহার করেন কিনা। আপনি যদি কোড দ্বারা ব্যবহৃত নামগুলি ব্যবহার করেন এবং টেমপ্লেট দ্বারা তৈরি কনফিগারেশনগুলি তৈরি করেন, তাহলে বেসলাইন প্রোফাইলটি build/outputs/managed_device_android_test_additional_output/nonminifiedrelease/pixel6Api31/BaselineProfileGenerator_generate-baseline-prof.txt এ তৈরি করা হয়। আপনি সম্ভবত উত্পন্ন বেসলাইন প্রোফাইলের এই সংস্করণের সাথে সরাসরি ইন্টারঅ্যাক্ট করতে হবে না যদি না আপনি ম্যানুয়ালি লক্ষ্য মডিউলগুলিতে এটি অনুলিপি করছেন (প্রস্তাবিত নয়)।

AGP 8.1 দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

আপনি যদি বেসলাইন প্রোফাইল মডিউল টেমপ্লেট ব্যবহার করতে সক্ষম না হন তবে একটি নতুন বেসলাইন প্রোফাইল তৈরি করতে ম্যাক্রোবেঞ্চমার্ক মডিউল টেমপ্লেট এবং বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করুন। আমরা আপনাকে Android Studio Giraffe এবং AGP 8.1 দিয়ে শুরু করে এই টুলগুলি ব্যবহার করার পরামর্শ দিই।

এখানে ম্যাক্রোবেঞ্চমার্ক মডিউল টেমপ্লেট এবং বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করে একটি নতুন বেসলাইন প্রোফাইল তৈরি করার পদক্ষেপগুলি রয়েছে:

  1. আপনার গ্রেডল প্রকল্পে একটি ম্যাক্রোবেঞ্চমার্ক মডিউল সেট আপ করুন
  2. BaselineProfileGenerator নামে একটি নতুন ক্লাস সংজ্ঞায়িত করুন:
    class BaselineProfileGenerator {
        @get:Rule
        val baselineProfileRule = BaselineProfileRule()
    
        @Test
        fun startup() = baselineProfileRule.collect(
            packageName = "com.example.app",
            profileBlock = {
                startActivityAndWait()
            }
        )
    }

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

  3. বেসলাইন প্রোফাইল গ্রেডল প্লাগইন যোগ করুন ( libs.plugins.androidx.baselineprofile )। প্লাগইনটি বেসলাইন প্রোফাইল তৈরি করা এবং ভবিষ্যতে তাদের বজায় রাখা সহজ করে তোলে।

  4. বেসলাইন প্রোফাইল তৈরি করতে, টার্মিনালে :app:generateBaselineProfile বা :app:generate Variant BaselineProfile গ্রেডল টাস্কগুলি চালান।

    একটি রুটেড ফিজিক্যাল ডিভাইস, এমুলেটর বা গ্র্যাডল ম্যানেজড ডিভাইসে ইন্সট্রুমেন্টেড টেস্ট হিসেবে জেনারেটর চালান। আপনি যদি একটি গ্রেডল ম্যানেজড ডিভাইস ব্যবহার করেন, তাহলে aosp systemImageSource হিসাবে সেট করুন, কারণ বেসলাইন প্রোফাইল জেনারেটরের জন্য আপনার রুট অ্যাক্সেস প্রয়োজন।

    জেনারেশন টাস্কের শেষে, বেসলাইন প্রোফাইল app/src/ variant /generated/baselineProfiles এ কপি করা হয়।

টেমপ্লেট ছাড়াই একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

আমরা অ্যান্ড্রয়েড স্টুডিও বেসলাইন প্রোফাইল মডিউল টেমপ্লেট (পছন্দের) বা ম্যাক্রোবেঞ্চমার্ক টেমপ্লেট ব্যবহার করে একটি বেসলাইন প্রোফাইল তৈরি করার পরামর্শ দিই, তবে আপনি নিজে থেকেই বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করতে পারেন। বেসলাইন প্রোফাইল গ্রেডল প্লাগইন সম্পর্কে আরও পড়তে, আপনার বেসলাইন প্রোফাইল প্রজন্ম কনফিগার করুন দেখুন।

বেসলাইন প্রোফাইল গ্রেডল প্লাগইনটি সরাসরি ব্যবহার করে কীভাবে একটি বেসলাইন প্রোফাইল তৈরি করবেন তা এখানে রয়েছে:

  1. একটি নতুন com.android.test মডিউল তৈরি করুন—উদাহরণস্বরূপ, :baseline-profile
  2. এর জন্য build.gradle.kts ফাইল কনফিগার করুন :baseline-profile :

    1. androidx.baselineprofile প্লাগইন প্রয়োগ করুন।
    2. targetProjectPath :app মডিউলে পয়েন্ট করে তা নিশ্চিত করুন।
    3. ঐচ্ছিকভাবে, একটি গ্রেডল-ম্যানেজড ডিভাইস (GMD) যোগ করুন। নিম্নলিখিত উদাহরণে, এটি pixel6Api31 । যদি নির্দিষ্ট করা না থাকে, প্লাগইনটি একটি সংযুক্ত ডিভাইস ব্যবহার করে, হয় অনুকরণ করা বা শারীরিক।
    4. আপনি যে কনফিগারেশন চান তা প্রয়োগ করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে।

    কোটলিন

    plugins {
        id("com.android.test")
        id("androidx.baselineprofile")
    }
    
    android {
        defaultConfig {
            ...
        }
    
        // Point to the app module, the module that you're generating the Baseline Profile for.
        targetProjectPath = ":app"
        // Configure a GMD (optional).
        testOptions.managedDevices.devices {
            pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                device = "Pixel 6"
                apiLevel = 31
                systemImageSource = "aosp"
            }
        }
    }
    
    dependencies { ... }
    
    // Baseline Profile Gradle plugin configuration. Everything is optional. This
    // example uses the GMD added earlier and disables connected devices.
    baselineProfile {
        // Specifies the GMDs to run the tests on. The default is none.
        managedDevices += "pixel6Api31"
        // Enables using connected devices to generate profiles. The default is
        // `true`. When using connected devices, they must be rooted or API 33 and
        // higher.
        useConnectedDevices = false
    }

    গ্রোভি

    plugins {
        id 'com.android.test'
        id 'androidx.baselineprofile'
    }
    
    android {
        defaultConfig {
            ...
        }
    
        // Point to the app module, the module that you're generating the Baseline Profile for.
        targetProjectPath ':app'
        // Configure a GMD (optional).
        testOptions.managedDevices.devices {
            pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                device 'Pixel 6'
                apiLevel 31
                systemImageSource 'aosp'
            }
        }
    }
    
    dependencies { ... }
    
    // Baseline Profile Gradle plugin configuration. Everything is optional. This
    // example uses the GMD added earlier and disables connected devices.
    baselineProfile {
        // Specifies the GMDs to run the tests on. The default is none.
        managedDevices ['pixel6Api31']
        // Enables using connected devices to generate profiles. The default is
        // `true`. When using connected devices, they must be rooted or API 33 and
        // higher.
        useConnectedDevices false
    }
  3. :baseline-profile টেস্ট মডিউলে একটি বেসলাইন প্রোফাইল পরীক্ষা তৈরি করুন। নিম্নলিখিত উদাহরণটি একটি পরীক্ষা যা অ্যাপটি শুরু করে এবং নিষ্ক্রিয় হওয়ার জন্য অপেক্ষা করে।

    কোটলিন

    class BaselineProfileGenerator {
    
        @get:Rule
        val baselineRule = BaselineProfileRule()
    
        @Test
        fun startupBaselineProfile() {
            baselineRule.collect("com.myapp") {
                startActivityAndWait()
            }
        }
    }

    জাভা

    public class BaselineProfileGenerator {
    
        @Rule
        Public BaselineProfileRule baselineRule = new BaselineProfileRule();
    
        @Test
        Public void startupBaselineProfile() {
            baselineRule.collect(
                "com.myapp",
                (scope -> {
                    scope.startActivityAndWait();
                    Return Unit.INSTANCE;
                })
            )
        }
    }
  4. অ্যাপ মডিউলে build.gradle.kts ফাইলটি আপডেট করুন, উদাহরণস্বরূপ :app

    1. প্লাগইন androidx.baselineprofile প্রয়োগ করুন।
    2. :baseline-profile মডিউলে একটি baselineProfile নির্ভরতা যোগ করুন।

    কোটলিন

    plugins {
        id("com.android.application")
        id("androidx.baselineprofile")
    }
    
    android {
        // There are no changes to the `android` block.
        ...
    }
    
    dependencies {
        ...
        // Add a `baselineProfile` dependency on the `:baseline-profile` module.
        baselineProfile(project(":baseline-profile"))
    }

    গ্রোভি

    plugins {
        id 'com.android.application'
        id 'androidx.baselineprofile'
    }
    
    android {
        // No changes to the `android` block.
        ...
    }
    
    dependencies {
        ...
        // Add a `baselineProfile` dependency on the `:baseline-profile` module.
        baselineProfile ':baseline-profile'
    }
  5. :app:generateBaselineProfile বা :app:generate Variant BaselineProfile গ্রেডল টাস্কগুলি চালিয়ে প্রোফাইল তৈরি করুন৷

  6. জেনারেশন টাস্কের শেষে, বেসলাইন প্রোফাইল app/src/ variant /generated/baselineProfiles এ কপি করা হয়।

AGP 7.3-7.4 দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

AGP 7.3-7.4 দিয়ে বেসলাইন প্রোফাইল তৈরি করা সম্ভব, কিন্তু আমরা দৃঢ়ভাবে অন্তত AGP 8.1-এ আপগ্রেড করার সুপারিশ করছি যাতে আপনি বেসলাইন প্রোফাইল গ্রেডল প্লাগইন এবং এর সর্বশেষ বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন।

আপনি যদি AGP 7.3-7.4 এর সাথে বেসলাইন প্রোফাইল তৈরি করতে চান, তাহলে ধাপগুলি AGP 8.1-এর ধাপগুলির মতোই, নিম্নলিখিত ব্যতিক্রমগুলি সহ:

ম্যানুয়ালি উত্পন্ন নিয়ম প্রয়োগ করুন

বেসলাইন প্রোফাইল জেনারেটর ডিভাইসে একটি হিউম্যান রিডেবল ফরম্যাট (HRF) টেক্সট ফাইল তৈরি করে এবং এটি আপনার হোস্ট মেশিনে কপি করে। আপনার কোডে জেনারেট করা প্রোফাইল প্রয়োগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনি যে মডিউলে প্রোফাইল তৈরি করেন তার বিল্ড ফোল্ডারে HRF ফাইলটি সনাক্ত করুন: [module]/build/outputs/managed_device_android_test_additional_output/[device]

    প্রোফাইলগুলি [class name]-[test method name]-baseline-prof.txt নামকরণের প্যাটার্ন অনুসরণ করে, যা এইরকম দেখায়: BaselineProfileGenerator-startup-baseline-prof.txt

  2. জেনারেট করা প্রোফাইলটিকে src/main/ এ কপি করুন এবং ফাইলটির নাম পরিবর্তন করে baseline-prof.txt করুন।

  3. যেখানে ক্লাউড প্রোফাইল উপলব্ধ নেই সেখানে স্থানীয় বেসলাইন প্রোফাইল সংকলন সক্ষম করতে আপনার অ্যাপের build.gradle.kts ফাইলে ProfileInstaller লাইব্রেরিতে একটি নির্ভরতা যোগ করুন। এটি স্থানীয়ভাবে একটি বেসলাইন প্রোফাইল সাইডলোড করার একমাত্র উপায়।

    dependencies {
         implementation("androidx.profileinstaller:profileinstaller:1.4.1")
    }
    
  4. প্রয়োগকৃত HRF নিয়মগুলি বাইনারি আকারে সংকলিত এবং APK বা AAB-তে অন্তর্ভুক্ত করার সময় আপনার অ্যাপের উত্পাদন সংস্করণ তৈরি করুন। তারপর যথারীতি আপনার অ্যাপ বিতরণ করুন।

বেসলাইন প্রোফাইল বেঞ্চমার্ক

আপনার বেসলাইন প্রোফাইল বেঞ্চমার্ক করতে, গাটার অ্যাকশন থেকে একটি নতুন অ্যান্ড্রয়েড ইন্সট্রুমেন্টেড টেস্ট রান কনফিগারেশন তৈরি করুন যা StartupBenchmarks.kt বা StartupBencharks.java ফাইলে সংজ্ঞায়িত বেঞ্চমার্কগুলি কার্যকর করে৷ বেঞ্চমার্ক পরীক্ষা সম্পর্কে আরও জানতে, একটি ম্যাক্রোবেঞ্চমার্ক ক্লাস তৈরি করুন এবং ম্যাক্রোবেঞ্চমার্ক লাইব্রেরির সাথে স্বয়ংক্রিয় পরিমাপ দেখুন।

চিত্র 3. গাটার অ্যাকশন থেকে অ্যান্ড্রয়েড টেস্ট চালান।

আপনি যখন এটি অ্যান্ড্রয়েড স্টুডিওর মধ্যে চালান, তখন বিল্ড আউটপুটে বেসলাইন প্রোফাইল প্রদান করে গতির উন্নতির বিবরণ থাকে:

StartupBenchmarks_startupCompilationBaselineProfiles
timeToInitialDisplayMs   min 161.8,   median 178.9,   max 194.6
StartupBenchmarks_startupCompilationNone
timeToInitialDisplayMs   min 184.7,   median 196.9,   max 202.9

সমস্ত প্রয়োজনীয় কোড পাথ ক্যাপচার করুন

অ্যাপ শুরুর সময় পরিমাপের জন্য দুটি মূল মেট্রিক নিম্নরূপ:

প্রাথমিক প্রদর্শনের সময় (TTID)
অ্যাপ্লিকেশন UI এর প্রথম ফ্রেমটি প্রদর্শন করতে যে সময় লাগে।
সম্পূর্ণ প্রদর্শনের সময় (TTFD)
TTID প্লাস প্রাথমিক ফ্রেম প্রদর্শিত হওয়ার পরে অ্যাসিঙ্ক্রোনাসভাবে লোড করা সামগ্রী প্রদর্শনের সময়।

ComponentActivity এর reportFullyDrawn() পদ্ধতি কল করা হলে TTFD রিপোর্ট করা হয়। যদি reportFullyDrawn() কখনই কল না করা হয়, তার পরিবর্তে TTID রিপোর্ট করা হয়। অসিঙ্ক্রোনাস লোডিং সম্পূর্ণ না হওয়া পর্যন্ত reportFullyDrawn() কল করা হলে আপনাকে বিলম্ব করতে হতে পারে। উদাহরণস্বরূপ, যদি UI-তে একটি গতিশীল তালিকা থাকে যেমন একটি RecyclerView বা অলস তালিকা , তালিকাটি একটি ব্যাকগ্রাউন্ড টাস্ক দ্বারা পপুলেট হতে পারে যা তালিকাটি প্রথম আঁকার পরে সম্পূর্ণ হয় এবং তাই, UI সম্পূর্ণরূপে আঁকা হিসাবে চিহ্নিত করার পরে। এই ধরনের ক্ষেত্রে, UI সম্পূর্ণরূপে আঁকা অবস্থায় পৌঁছানোর পরে যে কোড চলে তা বেসলাইন প্রোফাইলে অন্তর্ভুক্ত করা হয় না।

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

যদি আপনার অ্যাপ জেটপ্যাক কম্পোজ ব্যবহার করে, তাহলে সম্পূর্ণভাবে আঁকা অবস্থা নির্দেশ করতে নিম্নলিখিত API ব্যবহার করুন:

  • ReportDrawn নির্দেশ করে যে আপনার কম্পোজেবল অবিলম্বে ইন্টারঅ্যাকশনের জন্য প্রস্তুত।
  • ReportDrawnWhen একটি predicate নেয়, যেমন list.count > 0 , কখন আপনার কম্পোজেবল ইন্টারঅ্যাকশনের জন্য প্রস্তুত তা নির্দেশ করতে।
  • ReportDrawnAfter একটি স্থগিত পদ্ধতি গ্রহণ করে যা, এটি সম্পূর্ণ হলে, নির্দেশ করে যে আপনার কম্পোজেবল মিথস্ক্রিয়া করার জন্য প্রস্তুত।
{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %} ,

Jetpack Macrobenchmark লাইব্রেরি এবং BaselineProfileRule ব্যবহার করে প্রতিটি অ্যাপ রিলিজের জন্য স্বয়ংক্রিয়ভাবে প্রোফাইল তৈরি করুন। আমরা আপনাকে com.android.tools.build:gradle:8.0.0 বা উচ্চতর ব্যবহার করার পরামর্শ দিচ্ছি, যা বেসলাইন প্রোফাইল ব্যবহার করার সময় বিল্ড উন্নতির সাথে আসে।

একটি নতুন বেসলাইন প্রোফাইল তৈরি করার জন্য এই সাধারণ পদক্ষেপগুলি হল:

  1. বেসলাইন প্রোফাইল মডিউল সেট আপ করুন।
  2. বেসলাইন প্রোফাইল তৈরি করতে সহায়তা করে JUnit পরীক্ষাটি সংজ্ঞায়িত করুন।
  3. আপনি অপ্টিমাইজ করতে চান এমন ক্রিটিক্যাল ইউজার জার্নি (CUJs) যোগ করুন।
  4. বেসলাইন প্রোফাইল তৈরি করুন।

আপনি বেসলাইন প্রোফাইল তৈরি করার পরে, গতির উন্নতি পরিমাপ করতে একটি শারীরিক ডিভাইস ব্যবহার করে বেঞ্চমার্ক করুন।

AGP 8.2 বা উচ্চতর দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

একটি নতুন বেসলাইন প্রোফাইল তৈরি করার সবচেয়ে সহজ উপায় হল বেসলাইন প্রোফাইল মডিউল টেমপ্লেট ব্যবহার করা, যা Android Studio Iguana এবং Android Gradle Plugin (AGP) 8.2 থেকে পাওয়া যায়।

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

বেসলাইন প্রোফাইল মডিউল সেট আপ করুন

বেসলাইন প্রোফাইল মডিউল টেমপ্লেট চালানোর জন্য, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ফাইল > নতুন > নতুন মডিউল নির্বাচন করুন
  2. টেমপ্লেট প্যানেলে বেসলাইন প্রোফাইল জেনারেটর টেমপ্লেট নির্বাচন করুন এবং এটি কনফিগার করুন:
    চিত্র 1. বেসলাইন প্রোফাইল জেনারেটর মডিউল টেমপ্লেট।

    টেমপ্লেটের ক্ষেত্রগুলি নিম্নরূপ:

    • লক্ষ্য অ্যাপ্লিকেশন : বেসলাইন প্রোফাইল কোন অ্যাপের জন্য তৈরি করা হয়েছে তা নির্ধারণ করে। যখন আপনার প্রোজেক্টে শুধুমাত্র একটি অ্যাপ মডিউল থাকে, তখন এই তালিকায় শুধুমাত্র একটি আইটেম থাকে।
    • মডিউল নাম : বেসলাইন প্রোফাইল মডিউল তৈরির জন্য আপনি যে নামটি চান।
    • প্যাকেজের নাম : বেসলাইন প্রোফাইল মডিউলের জন্য আপনি যে প্যাকেজ নামটি চান।
    • ভাষা : আপনি জেনারেট করা কোডটি কোটলিন বা জাভা হতে চান কিনা।
    • কনফিগারেশন ভাষা তৈরি করুন : আপনি আপনার বিল্ড কনফিগারেশন স্ক্রিপ্টগুলির জন্য কোটলিন স্ক্রিপ্ট (কেটিএস) বা গ্রোভি ব্যবহার করতে চান কিনা।
    • Gradle-পরিচালিত ডিভাইস ব্যবহার করুন : আপনি আপনার অ্যাপ পরীক্ষা করতে Gradle-পরিচালিত ডিভাইস ব্যবহার করছেন কিনা।
  3. Finish-এ ক্লিক করুন এবং নতুন মডিউল তৈরি করা হয়েছে। আপনি যদি সোর্স কন্ট্রোল ব্যবহার করেন, তাহলে আপনাকে সোর্স কন্ট্রোলে নতুন তৈরি মডিউল ফাইল যোগ করার জন্য বলা হতে পারে।

বেসলাইন প্রোফাইল জেনারেটর সংজ্ঞায়িত করুন

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

এটি রক্ষণাবেক্ষণে সহায়তা করে যদি আপনি এই CUJগুলিকে তৈরি করা বেসলাইন প্রোফাইল এবং বেঞ্চমার্ক কোডের বাইরে বিমূর্ত করেন যাতে সেগুলি উভয়ের জন্য ব্যবহার করা যেতে পারে। এর মানে হল যে আপনার CUJ-তে পরিবর্তনগুলি ধারাবাহিকভাবে ব্যবহার করা হয়।

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

বেসলাইন প্রোফাইল মডিউল টেমপ্লেট বেসলাইন প্রোফাইল তৈরি করতে একটি নতুন রান কনফিগারেশন যোগ করে। আপনি যদি পণ্যের স্বাদ ব্যবহার করেন, তবে Android স্টুডিও একাধিক রান কনফিগারেশন তৈরি করে যাতে আপনি প্রতিটি স্বাদের জন্য পৃথক বেসলাইন প্রোফাইল তৈরি করতে পারেন।

বেসলাইন প্রোফাইল রান কনফিগারেশন তৈরি করুন।
চিত্র 2. এই কনফিগারেশনটি চালানোর ফলে বেসলাইন প্রোফাইল তৈরি হয়।

যখন জেনারেট বেসলাইন প্রোফাইল রান কনফিগারেশন সম্পূর্ণ হয়, তখন এটি তৈরি করা বেসলাইন প্রোফাইলটিকে src/ variant /generated/baselineProfiles/baseline-prof.txt ফাইলে কপি করে যেটি প্রোফাইল করা হচ্ছে। বৈকল্পিক বিকল্পগুলি হয় রিলিজ বিল্ড টাইপ বা রিলিজ বিল্ড টাইপ জড়িত একটি বিল্ড বৈকল্পিক।

তৈরি করা বেসলাইন প্রোফাইলটি মূলত build/outputs তৈরি করা হয়। সম্পূর্ণ পথটি প্রোফাইল করা অ্যাপের রূপ বা স্বাদ দ্বারা নির্দেশিত হয় এবং আপনি প্রোফাইলিংয়ের জন্য গ্র্যাডল-পরিচালিত ডিভাইস বা সংযুক্ত ডিভাইস ব্যবহার করেন কিনা। আপনি যদি কোড দ্বারা ব্যবহৃত নামগুলি ব্যবহার করেন এবং টেমপ্লেট দ্বারা তৈরি কনফিগারেশনগুলি তৈরি করেন, তাহলে বেসলাইন প্রোফাইলটি build/outputs/managed_device_android_test_additional_output/nonminifiedrelease/pixel6Api31/BaselineProfileGenerator_generate-baseline-prof.txt এ তৈরি করা হয়। আপনি সম্ভবত উত্পন্ন বেসলাইন প্রোফাইলের এই সংস্করণের সাথে সরাসরি ইন্টারঅ্যাক্ট করতে হবে না যদি না আপনি ম্যানুয়ালি লক্ষ্য মডিউলগুলিতে এটি অনুলিপি করছেন (প্রস্তাবিত নয়)।

AGP 8.1 দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

আপনি যদি বেসলাইন প্রোফাইল মডিউল টেমপ্লেট ব্যবহার করতে সক্ষম না হন তবে একটি নতুন বেসলাইন প্রোফাইল তৈরি করতে ম্যাক্রোবেঞ্চমার্ক মডিউল টেমপ্লেট এবং বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করুন। আমরা আপনাকে Android Studio Giraffe এবং AGP 8.1 দিয়ে শুরু করে এই টুলগুলি ব্যবহার করার পরামর্শ দিই।

এখানে ম্যাক্রোবেঞ্চমার্ক মডিউল টেমপ্লেট এবং বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করে একটি নতুন বেসলাইন প্রোফাইল তৈরি করার পদক্ষেপগুলি রয়েছে:

  1. আপনার গ্রেডল প্রকল্পে একটি ম্যাক্রোবেঞ্চমার্ক মডিউল সেট আপ করুন
  2. BaselineProfileGenerator নামে একটি নতুন ক্লাস সংজ্ঞায়িত করুন:
    class BaselineProfileGenerator {
        @get:Rule
        val baselineProfileRule = BaselineProfileRule()
    
        @Test
        fun startup() = baselineProfileRule.collect(
            packageName = "com.example.app",
            profileBlock = {
                startActivityAndWait()
            }
        )
    }

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

  3. বেসলাইন প্রোফাইল গ্রেডল প্লাগইন যোগ করুন ( libs.plugins.androidx.baselineprofile )। প্লাগইনটি বেসলাইন প্রোফাইল তৈরি করা এবং ভবিষ্যতে তাদের বজায় রাখা সহজ করে তোলে।

  4. বেসলাইন প্রোফাইল তৈরি করতে, টার্মিনালে :app:generateBaselineProfile বা :app:generate Variant BaselineProfile গ্রেডল টাস্কগুলি চালান।

    একটি রুটেড ফিজিক্যাল ডিভাইস, এমুলেটর বা গ্র্যাডল ম্যানেজড ডিভাইসে ইন্সট্রুমেন্টেড টেস্ট হিসেবে জেনারেটর চালান। আপনি যদি একটি গ্রেডল ম্যানেজড ডিভাইস ব্যবহার করেন, তাহলে aosp systemImageSource হিসাবে সেট করুন, কারণ বেসলাইন প্রোফাইল জেনারেটরের জন্য আপনার রুট অ্যাক্সেস প্রয়োজন।

    জেনারেশন টাস্কের শেষে, বেসলাইন প্রোফাইল app/src/ variant /generated/baselineProfiles এ কপি করা হয়।

টেমপ্লেট ছাড়াই একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

আমরা অ্যান্ড্রয়েড স্টুডিও বেসলাইন প্রোফাইল মডিউল টেমপ্লেট (পছন্দের) বা ম্যাক্রোবেঞ্চমার্ক টেমপ্লেট ব্যবহার করে একটি বেসলাইন প্রোফাইল তৈরি করার পরামর্শ দিই, তবে আপনি নিজে থেকেই বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করতে পারেন। বেসলাইন প্রোফাইল গ্রেডল প্লাগইন সম্পর্কে আরও পড়তে, আপনার বেসলাইন প্রোফাইল প্রজন্ম কনফিগার করুন দেখুন।

বেসলাইন প্রোফাইল গ্রেডল প্লাগইনটি সরাসরি ব্যবহার করে কীভাবে একটি বেসলাইন প্রোফাইল তৈরি করবেন তা এখানে রয়েছে:

  1. একটি নতুন com.android.test মডিউল তৈরি করুন—উদাহরণস্বরূপ, :baseline-profile
  2. এর জন্য build.gradle.kts ফাইল কনফিগার করুন :baseline-profile :

    1. androidx.baselineprofile প্লাগইন প্রয়োগ করুন।
    2. targetProjectPath :app মডিউলে পয়েন্ট করে তা নিশ্চিত করুন।
    3. ঐচ্ছিকভাবে, একটি গ্রেডল-ম্যানেজড ডিভাইস (GMD) যোগ করুন। নিম্নলিখিত উদাহরণে, এটি pixel6Api31 । যদি নির্দিষ্ট করা না থাকে, প্লাগইনটি একটি সংযুক্ত ডিভাইস ব্যবহার করে, হয় অনুকরণ করা বা শারীরিক।
    4. আপনি যে কনফিগারেশন চান তা প্রয়োগ করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে।

    কোটলিন

    plugins {
        id("com.android.test")
        id("androidx.baselineprofile")
    }
    
    android {
        defaultConfig {
            ...
        }
    
        // Point to the app module, the module that you're generating the Baseline Profile for.
        targetProjectPath = ":app"
        // Configure a GMD (optional).
        testOptions.managedDevices.devices {
            pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                device = "Pixel 6"
                apiLevel = 31
                systemImageSource = "aosp"
            }
        }
    }
    
    dependencies { ... }
    
    // Baseline Profile Gradle plugin configuration. Everything is optional. This
    // example uses the GMD added earlier and disables connected devices.
    baselineProfile {
        // Specifies the GMDs to run the tests on. The default is none.
        managedDevices += "pixel6Api31"
        // Enables using connected devices to generate profiles. The default is
        // `true`. When using connected devices, they must be rooted or API 33 and
        // higher.
        useConnectedDevices = false
    }

    গ্রোভি

    plugins {
        id 'com.android.test'
        id 'androidx.baselineprofile'
    }
    
    android {
        defaultConfig {
            ...
        }
    
        // Point to the app module, the module that you're generating the Baseline Profile for.
        targetProjectPath ':app'
        // Configure a GMD (optional).
        testOptions.managedDevices.devices {
            pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                device 'Pixel 6'
                apiLevel 31
                systemImageSource 'aosp'
            }
        }
    }
    
    dependencies { ... }
    
    // Baseline Profile Gradle plugin configuration. Everything is optional. This
    // example uses the GMD added earlier and disables connected devices.
    baselineProfile {
        // Specifies the GMDs to run the tests on. The default is none.
        managedDevices ['pixel6Api31']
        // Enables using connected devices to generate profiles. The default is
        // `true`. When using connected devices, they must be rooted or API 33 and
        // higher.
        useConnectedDevices false
    }
  3. :baseline-profile টেস্ট মডিউলে একটি বেসলাইন প্রোফাইল পরীক্ষা তৈরি করুন। নিম্নলিখিত উদাহরণটি একটি পরীক্ষা যা অ্যাপটি শুরু করে এবং নিষ্ক্রিয় হওয়ার জন্য অপেক্ষা করে।

    কোটলিন

    class BaselineProfileGenerator {
    
        @get:Rule
        val baselineRule = BaselineProfileRule()
    
        @Test
        fun startupBaselineProfile() {
            baselineRule.collect("com.myapp") {
                startActivityAndWait()
            }
        }
    }

    জাভা

    public class BaselineProfileGenerator {
    
        @Rule
        Public BaselineProfileRule baselineRule = new BaselineProfileRule();
    
        @Test
        Public void startupBaselineProfile() {
            baselineRule.collect(
                "com.myapp",
                (scope -> {
                    scope.startActivityAndWait();
                    Return Unit.INSTANCE;
                })
            )
        }
    }
  4. অ্যাপ মডিউলে build.gradle.kts ফাইলটি আপডেট করুন, উদাহরণস্বরূপ :app

    1. প্লাগইন androidx.baselineprofile প্রয়োগ করুন।
    2. :baseline-profile মডিউলে একটি baselineProfile নির্ভরতা যোগ করুন।

    কোটলিন

    plugins {
        id("com.android.application")
        id("androidx.baselineprofile")
    }
    
    android {
        // There are no changes to the `android` block.
        ...
    }
    
    dependencies {
        ...
        // Add a `baselineProfile` dependency on the `:baseline-profile` module.
        baselineProfile(project(":baseline-profile"))
    }

    গ্রোভি

    plugins {
        id 'com.android.application'
        id 'androidx.baselineprofile'
    }
    
    android {
        // No changes to the `android` block.
        ...
    }
    
    dependencies {
        ...
        // Add a `baselineProfile` dependency on the `:baseline-profile` module.
        baselineProfile ':baseline-profile'
    }
  5. :app:generateBaselineProfile বা :app:generate Variant BaselineProfile গ্রেডল টাস্কগুলি চালিয়ে প্রোফাইল তৈরি করুন৷

  6. জেনারেশন টাস্কের শেষে, বেসলাইন প্রোফাইল app/src/ variant /generated/baselineProfiles এ কপি করা হয়।

AGP 7.3-7.4 দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

AGP 7.3-7.4 দিয়ে বেসলাইন প্রোফাইল তৈরি করা সম্ভব, কিন্তু আমরা দৃঢ়ভাবে অন্তত AGP 8.1-এ আপগ্রেড করার সুপারিশ করছি যাতে আপনি বেসলাইন প্রোফাইল গ্রেডল প্লাগইন এবং এর সর্বশেষ বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন।

আপনি যদি AGP 7.3-7.4 এর সাথে বেসলাইন প্রোফাইল তৈরি করতে চান, তাহলে ধাপগুলি AGP 8.1-এর ধাপগুলির মতোই, নিম্নলিখিত ব্যতিক্রমগুলি সহ:

ম্যানুয়ালি উত্পন্ন নিয়ম প্রয়োগ করুন

বেসলাইন প্রোফাইল জেনারেটর ডিভাইসে একটি হিউম্যান রিডেবল ফরম্যাট (HRF) টেক্সট ফাইল তৈরি করে এবং এটি আপনার হোস্ট মেশিনে কপি করে। আপনার কোডে জেনারেট করা প্রোফাইল প্রয়োগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনি যে মডিউলে প্রোফাইল তৈরি করেন তার বিল্ড ফোল্ডারে HRF ফাইলটি সনাক্ত করুন: [module]/build/outputs/managed_device_android_test_additional_output/[device]

    প্রোফাইলগুলি [class name]-[test method name]-baseline-prof.txt নামকরণের প্যাটার্ন অনুসরণ করে, যা এইরকম দেখায়: BaselineProfileGenerator-startup-baseline-prof.txt

  2. জেনারেট করা প্রোফাইলটিকে src/main/ এ কপি করুন এবং ফাইলটির নাম পরিবর্তন করে baseline-prof.txt করুন।

  3. যেখানে ক্লাউড প্রোফাইল উপলব্ধ নেই সেখানে স্থানীয় বেসলাইন প্রোফাইল সংকলন সক্ষম করতে আপনার অ্যাপের build.gradle.kts ফাইলে ProfileInstaller লাইব্রেরিতে একটি নির্ভরতা যোগ করুন। এটি স্থানীয়ভাবে একটি বেসলাইন প্রোফাইল সাইডলোড করার একমাত্র উপায়।

    dependencies {
         implementation("androidx.profileinstaller:profileinstaller:1.4.1")
    }
    
  4. প্রয়োগকৃত HRF নিয়মগুলি বাইনারি আকারে সংকলিত এবং APK বা AAB-তে অন্তর্ভুক্ত করার সময় আপনার অ্যাপের উত্পাদন সংস্করণ তৈরি করুন। তারপর যথারীতি আপনার অ্যাপ বিতরণ করুন।

বেসলাইন প্রোফাইল বেঞ্চমার্ক

আপনার বেসলাইন প্রোফাইল বেঞ্চমার্ক করতে, গাটার অ্যাকশন থেকে একটি নতুন অ্যান্ড্রয়েড ইন্সট্রুমেন্টেড টেস্ট রান কনফিগারেশন তৈরি করুন যা StartupBenchmarks.kt বা StartupBencharks.java ফাইলে সংজ্ঞায়িত বেঞ্চমার্কগুলি কার্যকর করে৷ বেঞ্চমার্ক পরীক্ষা সম্পর্কে আরও জানতে, একটি ম্যাক্রোবেঞ্চমার্ক ক্লাস তৈরি করুন এবং ম্যাক্রোবেঞ্চমার্ক লাইব্রেরির সাথে স্বয়ংক্রিয় পরিমাপ দেখুন।

চিত্র 3. গাটার অ্যাকশন থেকে অ্যান্ড্রয়েড টেস্ট চালান।

আপনি যখন এটি অ্যান্ড্রয়েড স্টুডিওর মধ্যে চালান, তখন বিল্ড আউটপুটে বেসলাইন প্রোফাইল প্রদান করে গতির উন্নতির বিবরণ থাকে:

StartupBenchmarks_startupCompilationBaselineProfiles
timeToInitialDisplayMs   min 161.8,   median 178.9,   max 194.6
StartupBenchmarks_startupCompilationNone
timeToInitialDisplayMs   min 184.7,   median 196.9,   max 202.9

সমস্ত প্রয়োজনীয় কোড পাথ ক্যাপচার করুন

অ্যাপ শুরুর সময় পরিমাপের জন্য দুটি মূল মেট্রিক নিম্নরূপ:

প্রাথমিক প্রদর্শনের সময় (TTID)
অ্যাপ্লিকেশন UI এর প্রথম ফ্রেমটি প্রদর্শন করতে যে সময় লাগে।
সম্পূর্ণ প্রদর্শনের সময় (TTFD)
TTID প্লাস প্রাথমিক ফ্রেম প্রদর্শিত হওয়ার পরে অ্যাসিঙ্ক্রোনাসভাবে লোড করা সামগ্রী প্রদর্শনের সময়।

ComponentActivity এর reportFullyDrawn() পদ্ধতি কল করা হলে TTFD রিপোর্ট করা হয়। যদি reportFullyDrawn() কখনই কল না করা হয়, তার পরিবর্তে TTID রিপোর্ট করা হয়। অসিঙ্ক্রোনাস লোডিং সম্পূর্ণ না হওয়া পর্যন্ত reportFullyDrawn() কল করা হলে আপনাকে বিলম্ব করতে হতে পারে। উদাহরণস্বরূপ, যদি UI-তে একটি গতিশীল তালিকা থাকে যেমন একটি RecyclerView বা অলস তালিকা , তালিকাটি একটি ব্যাকগ্রাউন্ড টাস্ক দ্বারা পপুলেট হতে পারে যা তালিকাটি প্রথম আঁকার পরে সম্পূর্ণ হয় এবং তাই, UI সম্পূর্ণরূপে আঁকা হিসাবে চিহ্নিত করার পরে। এই ধরনের ক্ষেত্রে, UI সম্পূর্ণরূপে আঁকা অবস্থায় পৌঁছানোর পরে যে কোড চলে তা বেসলাইন প্রোফাইলে অন্তর্ভুক্ত করা হয় না।

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

যদি আপনার অ্যাপ জেটপ্যাক কম্পোজ ব্যবহার করে, তাহলে সম্পূর্ণভাবে আঁকা অবস্থা নির্দেশ করতে নিম্নলিখিত API ব্যবহার করুন:

  • ReportDrawn নির্দেশ করে যে আপনার কম্পোজেবল অবিলম্বে ইন্টারঅ্যাকশনের জন্য প্রস্তুত।
  • ReportDrawnWhen একটি predicate নেয়, যেমন list.count > 0 , কখন আপনার কম্পোজেবল ইন্টারঅ্যাকশনের জন্য প্রস্তুত তা নির্দেশ করতে।
  • ReportDrawnAfter একটি স্থগিত পদ্ধতি গ্রহণ করে যা, এটি সম্পূর্ণ হলে, নির্দেশ করে যে আপনার কম্পোজেবল মিথস্ক্রিয়া করার জন্য প্রস্তুত।
{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %} ,

Jetpack Macrobenchmark লাইব্রেরি এবং BaselineProfileRule ব্যবহার করে প্রতিটি অ্যাপ রিলিজের জন্য স্বয়ংক্রিয়ভাবে প্রোফাইল তৈরি করুন। আমরা আপনাকে com.android.tools.build:gradle:8.0.0 বা উচ্চতর ব্যবহার করার পরামর্শ দিচ্ছি, যা বেসলাইন প্রোফাইল ব্যবহার করার সময় বিল্ড উন্নতির সাথে আসে।

একটি নতুন বেসলাইন প্রোফাইল তৈরি করার জন্য এই সাধারণ পদক্ষেপগুলি হল:

  1. বেসলাইন প্রোফাইল মডিউল সেট আপ করুন।
  2. বেসলাইন প্রোফাইল তৈরি করতে সহায়তা করে JUnit পরীক্ষাটি সংজ্ঞায়িত করুন।
  3. আপনি অপ্টিমাইজ করতে চান এমন ক্রিটিক্যাল ইউজার জার্নি (CUJs) যোগ করুন।
  4. বেসলাইন প্রোফাইল তৈরি করুন।

আপনি বেসলাইন প্রোফাইল তৈরি করার পরে, গতির উন্নতি পরিমাপ করতে একটি শারীরিক ডিভাইস ব্যবহার করে বেঞ্চমার্ক করুন।

AGP 8.2 বা উচ্চতর দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

একটি নতুন বেসলাইন প্রোফাইল তৈরি করার সবচেয়ে সহজ উপায় হল বেসলাইন প্রোফাইল মডিউল টেমপ্লেট ব্যবহার করা, যা Android Studio Iguana এবং Android Gradle Plugin (AGP) 8.2 থেকে পাওয়া যায়।

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

বেসলাইন প্রোফাইল মডিউল সেট আপ করুন

বেসলাইন প্রোফাইল মডিউল টেমপ্লেট চালানোর জন্য, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ফাইল > নতুন > নতুন মডিউল নির্বাচন করুন
  2. টেমপ্লেট প্যানেলে বেসলাইন প্রোফাইল জেনারেটর টেমপ্লেট নির্বাচন করুন এবং এটি কনফিগার করুন:
    চিত্র 1. বেসলাইন প্রোফাইল জেনারেটর মডিউল টেমপ্লেট।

    টেমপ্লেটের ক্ষেত্রগুলি নিম্নরূপ:

    • লক্ষ্য অ্যাপ্লিকেশন : বেসলাইন প্রোফাইল কোন অ্যাপের জন্য তৈরি করা হয়েছে তা নির্ধারণ করে। যখন আপনার প্রোজেক্টে শুধুমাত্র একটি অ্যাপ মডিউল থাকে, তখন এই তালিকায় শুধুমাত্র একটি আইটেম থাকে।
    • মডিউল নাম : বেসলাইন প্রোফাইল মডিউল তৈরির জন্য আপনি যে নামটি চান।
    • প্যাকেজের নাম : বেসলাইন প্রোফাইল মডিউলের জন্য আপনি যে প্যাকেজ নামটি চান।
    • ভাষা : আপনি জেনারেট করা কোডটি কোটলিন বা জাভা হতে চান কিনা।
    • কনফিগারেশন ভাষা তৈরি করুন : আপনি আপনার বিল্ড কনফিগারেশন স্ক্রিপ্টগুলির জন্য কোটলিন স্ক্রিপ্ট (কেটিএস) বা গ্রোভি ব্যবহার করতে চান কিনা।
    • Gradle-পরিচালিত ডিভাইস ব্যবহার করুন : আপনি আপনার অ্যাপ পরীক্ষা করতে Gradle-পরিচালিত ডিভাইস ব্যবহার করছেন কিনা।
  3. Finish-এ ক্লিক করুন এবং নতুন মডিউল তৈরি করা হয়েছে। আপনি যদি সোর্স কন্ট্রোল ব্যবহার করেন, তাহলে আপনাকে সোর্স কন্ট্রোলে নতুন তৈরি মডিউল ফাইল যোগ করার জন্য বলা হতে পারে।

বেসলাইন প্রোফাইল জেনারেটর সংজ্ঞায়িত করুন

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

এটি রক্ষণাবেক্ষণে সহায়তা করে যদি আপনি এই CUJগুলিকে তৈরি করা বেসলাইন প্রোফাইল এবং বেঞ্চমার্ক কোডের বাইরে বিমূর্ত করেন যাতে সেগুলি উভয়ের জন্য ব্যবহার করা যেতে পারে। এর মানে হল যে আপনার CUJ-তে পরিবর্তনগুলি ধারাবাহিকভাবে ব্যবহার করা হয়।

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

বেসলাইন প্রোফাইল মডিউল টেমপ্লেট বেসলাইন প্রোফাইল তৈরি করতে একটি নতুন রান কনফিগারেশন যোগ করে। আপনি যদি পণ্যের স্বাদ ব্যবহার করেন, তবে Android স্টুডিও একাধিক রান কনফিগারেশন তৈরি করে যাতে আপনি প্রতিটি স্বাদের জন্য পৃথক বেসলাইন প্রোফাইল তৈরি করতে পারেন।

বেসলাইন প্রোফাইল রান কনফিগারেশন তৈরি করুন।
চিত্র 2. এই কনফিগারেশনটি চালানোর ফলে বেসলাইন প্রোফাইল তৈরি হয়।

যখন জেনারেট বেসলাইন প্রোফাইল রান কনফিগারেশন সম্পূর্ণ হয়, তখন এটি তৈরি করা বেসলাইন প্রোফাইলটিকে src/ variant /generated/baselineProfiles/baseline-prof.txt ফাইলে কপি করে যেটি প্রোফাইল করা হচ্ছে। বৈকল্পিক বিকল্পগুলি হয় রিলিজ বিল্ড টাইপ বা রিলিজ বিল্ড টাইপ জড়িত একটি বিল্ড বৈকল্পিক।

তৈরি করা বেসলাইন প্রোফাইলটি মূলত build/outputs তৈরি করা হয়। সম্পূর্ণ পথটি প্রোফাইল করা অ্যাপের রূপ বা স্বাদ দ্বারা নির্দেশিত হয় এবং আপনি প্রোফাইলিংয়ের জন্য গ্র্যাডল-পরিচালিত ডিভাইস বা সংযুক্ত ডিভাইস ব্যবহার করেন কিনা। আপনি যদি কোড দ্বারা ব্যবহৃত নামগুলি ব্যবহার করেন এবং টেমপ্লেট দ্বারা তৈরি কনফিগারেশনগুলি তৈরি করেন, তাহলে বেসলাইন প্রোফাইলটি build/outputs/managed_device_android_test_additional_output/nonminifiedrelease/pixel6Api31/BaselineProfileGenerator_generate-baseline-prof.txt এ তৈরি করা হয়। আপনি সম্ভবত উত্পন্ন বেসলাইন প্রোফাইলের এই সংস্করণের সাথে সরাসরি ইন্টারঅ্যাক্ট করতে হবে না যদি না আপনি ম্যানুয়ালি লক্ষ্য মডিউলগুলিতে এটি অনুলিপি করছেন (প্রস্তাবিত নয়)।

AGP 8.1 দিয়ে একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

আপনি যদি বেসলাইন প্রোফাইল মডিউল টেমপ্লেট ব্যবহার করতে সক্ষম না হন তবে একটি নতুন বেসলাইন প্রোফাইল তৈরি করতে ম্যাক্রোবেঞ্চমার্ক মডিউল টেমপ্লেট এবং বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করুন। আমরা আপনাকে Android Studio Giraffe এবং AGP 8.1 দিয়ে শুরু করে এই টুলগুলি ব্যবহার করার পরামর্শ দিই।

এখানে ম্যাক্রোবেঞ্চমার্ক মডিউল টেমপ্লেট এবং বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করে একটি নতুন বেসলাইন প্রোফাইল তৈরি করার পদক্ষেপগুলি রয়েছে:

  1. আপনার গ্রেডল প্রকল্পে একটি ম্যাক্রোবেঞ্চমার্ক মডিউল সেট আপ করুন
  2. BaselineProfileGenerator নামে একটি নতুন ক্লাস সংজ্ঞায়িত করুন:
    class BaselineProfileGenerator {
        @get:Rule
        val baselineProfileRule = BaselineProfileRule()
    
        @Test
        fun startup() = baselineProfileRule.collect(
            packageName = "com.example.app",
            profileBlock = {
                startActivityAndWait()
            }
        )
    }

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

  3. বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ( libs.plugins.androidx.baselineprofile ) যুক্ত করুন। প্লাগইনটি বেসলাইন প্রোফাইল তৈরি করা এবং ভবিষ্যতে সেগুলি বজায় রাখা সহজ করে তোলে।

  4. বেসলাইন প্রোফাইল তৈরি করতে, চালান :app:generateBaselineProfile বা :app:generate Variant BaselineProfile

    মূল শারীরিক ডিভাইস, এমুলেটর বা গ্রেড ম্যানেজড ডিভাইসে একটি সরঞ্জামযুক্ত পরীক্ষা হিসাবে জেনারেটরটি চালান। আপনি যদি কোনও গ্রেড ম্যানেজড ডিভাইস ব্যবহার করেন তবে aosp systemImageSource হিসাবে সেট করুন, কারণ আপনার বেসলাইন প্রোফাইল জেনারেটরের জন্য রুট অ্যাক্সেসের প্রয়োজন।

    প্রজন্মের টাস্কের শেষে, বেসলাইন প্রোফাইলটি app/src/ variant /generated/baselineProfiles অনুলিপি করা হয়।

টেমপ্লেট ছাড়াই একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

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

বেসলাইন প্রোফাইল গ্রেডল প্লাগইনটি সরাসরি ব্যবহার করে কীভাবে একটি বেসলাইন প্রোফাইল তৈরি করবেন তা এখানে:

  1. একটি নতুন com.android.test মডিউল তৈরি করুন example উদাহরণস্বরূপ :baseline-profile
  2. এর জন্য build.gradle.kts ফাইলটি কনফিগার করুন :baseline-profile :

    1. androidx.baselineprofile প্লাগইন প্রয়োগ করুন।
    2. targetProjectPath :app মডিউলটি নির্দেশ করে তা নিশ্চিত করুন।
    3. Ally চ্ছিকভাবে, একটি গ্রেডল-ম্যানেজড ডিভাইস (জিএমডি) যুক্ত করুন। নিম্নলিখিত উদাহরণে, এটি pixel6Api31 । যদি নির্দিষ্ট না করা হয় তবে প্লাগইনটি একটি সংযুক্ত ডিভাইস ব্যবহার করে, হয় অনুকরণীয় বা শারীরিক।
    4. নিম্নলিখিত উদাহরণে দেখানো হিসাবে আপনি চান কনফিগারেশনটি প্রয়োগ করুন।

    কোটলিন

    plugins {
        id("com.android.test")
        id("androidx.baselineprofile")
    }
    
    android {
        defaultConfig {
            ...
        }
    
        // Point to the app module, the module that you're generating the Baseline Profile for.
        targetProjectPath = ":app"
        // Configure a GMD (optional).
        testOptions.managedDevices.devices {
            pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                device = "Pixel 6"
                apiLevel = 31
                systemImageSource = "aosp"
            }
        }
    }
    
    dependencies { ... }
    
    // Baseline Profile Gradle plugin configuration. Everything is optional. This
    // example uses the GMD added earlier and disables connected devices.
    baselineProfile {
        // Specifies the GMDs to run the tests on. The default is none.
        managedDevices += "pixel6Api31"
        // Enables using connected devices to generate profiles. The default is
        // `true`. When using connected devices, they must be rooted or API 33 and
        // higher.
        useConnectedDevices = false
    }

    গ্রোভি

    plugins {
        id 'com.android.test'
        id 'androidx.baselineprofile'
    }
    
    android {
        defaultConfig {
            ...
        }
    
        // Point to the app module, the module that you're generating the Baseline Profile for.
        targetProjectPath ':app'
        // Configure a GMD (optional).
        testOptions.managedDevices.devices {
            pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                device 'Pixel 6'
                apiLevel 31
                systemImageSource 'aosp'
            }
        }
    }
    
    dependencies { ... }
    
    // Baseline Profile Gradle plugin configuration. Everything is optional. This
    // example uses the GMD added earlier and disables connected devices.
    baselineProfile {
        // Specifies the GMDs to run the tests on. The default is none.
        managedDevices ['pixel6Api31']
        // Enables using connected devices to generate profiles. The default is
        // `true`. When using connected devices, they must be rooted or API 33 and
        // higher.
        useConnectedDevices false
    }
  3. :baseline-profile পরীক্ষা তৈরি করুন। নিম্নলিখিত উদাহরণটি এমন একটি পরীক্ষা যা অ্যাপ্লিকেশনটি শুরু করে এবং নিষ্ক্রিয়ের জন্য অপেক্ষা করে।

    কোটলিন

    class BaselineProfileGenerator {
    
        @get:Rule
        val baselineRule = BaselineProfileRule()
    
        @Test
        fun startupBaselineProfile() {
            baselineRule.collect("com.myapp") {
                startActivityAndWait()
            }
        }
    }

    জাভা

    public class BaselineProfileGenerator {
    
        @Rule
        Public BaselineProfileRule baselineRule = new BaselineProfileRule();
    
        @Test
        Public void startupBaselineProfile() {
            baselineRule.collect(
                "com.myapp",
                (scope -> {
                    scope.startActivityAndWait();
                    Return Unit.INSTANCE;
                })
            )
        }
    }
  4. অ্যাপ মডিউলে build.gradle.kts ফাইলটি আপডেট করুন, উদাহরণস্বরূপ :app

    1. প্লাগইন androidx.baselineprofile প্রয়োগ করুন।
    2. :baseline-profile মডিউলটিতে একটি baselineProfile নির্ভরতা যুক্ত করুন।

    কোটলিন

    plugins {
        id("com.android.application")
        id("androidx.baselineprofile")
    }
    
    android {
        // There are no changes to the `android` block.
        ...
    }
    
    dependencies {
        ...
        // Add a `baselineProfile` dependency on the `:baseline-profile` module.
        baselineProfile(project(":baseline-profile"))
    }

    গ্রোভি

    plugins {
        id 'com.android.application'
        id 'androidx.baselineprofile'
    }
    
    android {
        // No changes to the `android` block.
        ...
    }
    
    dependencies {
        ...
        // Add a `baselineProfile` dependency on the `:baseline-profile` module.
        baselineProfile ':baseline-profile'
    }
  5. প্রোফাইলটি চালিয়ে প্রোফাইল তৈরি করুন :app:generateBaselineProfile বা :app:generate Variant BaselineProfile

  6. প্রজন্মের টাস্কের শেষে, বেসলাইন প্রোফাইলটি app/src/ variant /generated/baselineProfiles অনুলিপি করা হয়।

Agp 7.3-7.4 সহ একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

এজিপি 7.3-7.4 এর সাথে বেসলাইন প্রোফাইলগুলি উত্পন্ন করা সম্ভব, তবে আমরা কমপক্ষে এজিপি 8.1 এ আপগ্রেড করার পরামর্শ দিচ্ছি যাতে আপনি বেসলাইন প্রোফাইল গ্রেডল প্লাগইন এবং এর সর্বশেষ বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন।

আপনার যদি এজিপি 7.3-7.4 দিয়ে বেসলাইন প্রোফাইল তৈরি করতে হয় তবে পদক্ষেপগুলি নিম্নলিখিত ব্যতিক্রমগুলি সহ এজিপি 8.1 এর পদক্ষেপগুলির সমান:

ম্যানুয়ালি উত্পন্ন নিয়ম প্রয়োগ করুন

বেসলাইন প্রোফাইল জেনারেটর ডিভাইসে একটি হিউম্যান রিডেবল ফর্ম্যাট (এইচআরএফ) পাঠ্য ফাইল তৈরি করে এবং এটি আপনার হোস্ট মেশিনে অনুলিপি করে। আপনার কোডে উত্পন্ন প্রোফাইল প্রয়োগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনি মডিউলটির বিল্ড ফোল্ডারে এইচআরএফ ফাইলটি সন্ধান করুন: [module]/build/outputs/managed_device_android_test_additional_output/[device]

    প্রোফাইলগুলি [class name]-[test method name]-baseline-prof.txt নামকরণের প্যাটার্ন, যা দেখতে এটির মতো দেখায়: BaselineProfileGenerator-startup-baseline-prof.txt

  2. উত্পন্ন প্রোফাইলটি src/main/ অনুলিপি করুন এবং ফাইলটি baseline-prof.txt -তে নামকরণ করুন।

  3. আপনার অ্যাপের build.gradle.kts ফাইলটিতে প্রোফাইলইনস্টলার লাইব্রেরিতে একটি নির্ভরতা যুক্ত করুন স্থানীয় বেসলাইন প্রোফাইল সংকলন সক্ষম করতে যেখানে ক্লাউড প্রোফাইলগুলি উপলব্ধ নেই। স্থানীয়ভাবে একটি বেসলাইন প্রোফাইলকে সাইডলোড করার একমাত্র উপায়।

    dependencies {
         implementation("androidx.profileinstaller:profileinstaller:1.4.1")
    }
    
  4. প্রয়োগিত এইচআরএফ বিধিগুলি বাইনারি আকারে সংকলিত এবং এপিকে বা এএবিতে অন্তর্ভুক্ত করার সময় আপনার অ্যাপ্লিকেশনটির উত্পাদন সংস্করণ তৈরি করুন। তারপরে যথারীতি আপনার অ্যাপটি বিতরণ করুন।

বেসলাইন প্রোফাইল বেঞ্চমার্ক

আপনার বেসলাইন প্রোফাইলটি বেঞ্চমার্ক করতে, গটার অ্যাকশন থেকে একটি নতুন অ্যান্ড্রয়েড ইনস্ট্রুমেন্টড টেস্ট রান কনফিগারেশন তৈরি করুন যা StartupBenchmarks.kt বা StartupBencharks.java ফাইলটিতে সংজ্ঞায়িত বেঞ্চমার্কগুলি সম্পাদন করে। বেঞ্চমার্ক পরীক্ষা সম্পর্কে আরও জানতে, একটি ম্যাক্রোব্যাঞ্চমার্ক শ্রেণি তৈরি করুন এবং ম্যাক্রোব্যাঞ্চমার্ক লাইব্রেরির সাথে স্বয়ংক্রিয় পরিমাপ দেখুন।

চিত্র 3। গটার অ্যাকশন থেকে অ্যান্ড্রয়েড পরীক্ষা চালান।

আপনি যখন অ্যান্ড্রয়েড স্টুডিওর মধ্যে এটি চালান, বিল্ড আউটপুটটিতে বেসলাইন প্রোফাইল সরবরাহ করে এমন গতির উন্নতির বিশদ রয়েছে:

StartupBenchmarks_startupCompilationBaselineProfiles
timeToInitialDisplayMs   min 161.8,   median 178.9,   max 194.6
StartupBenchmarks_startupCompilationNone
timeToInitialDisplayMs   min 184.7,   median 196.9,   max 202.9

সমস্ত প্রয়োজনীয় কোড পাথ ক্যাপচার করুন

অ্যাপ্লিকেশন স্টার্টআপ সময়গুলি পরিমাপের জন্য দুটি মূল মেট্রিকগুলি নিম্নরূপ:

প্রাথমিক প্রদর্শনের সময় (টিটিআইডি)
অ্যাপ্লিকেশন ইউআইয়ের প্রথম ফ্রেমটি প্রদর্শন করতে সময় লাগে।
পুরো ডিসপ্লে থেকে সময় (টিটিএফডি)
টিটিআইডি প্লাস প্রাথমিক ফ্রেম প্রদর্শিত হওয়ার পরে অ্যাসিঙ্ক্রোনালি লোড করা সামগ্রী প্রদর্শনের সময়।

টিটিএফডি রিপোর্ট করা হয় যখন ComponentActivity reportFullyDrawn() পদ্ধতিটি বলা হয়। যদি reportFullyDrawn() কখনও কল করা হয় না, পরিবর্তে টিটিআইডি রিপোর্ট করা হয়। অ্যাসিঙ্ক্রোনাস লোডিং সম্পূর্ণ না হওয়া পর্যন্ত আপনাকে reportFullyDrawn() ডাকা যখন আপনাকে বিলম্ব করতে হবে। উদাহরণস্বরূপ, যদি ইউআইতে একটি গতিশীল তালিকা যেমন একটি RecyclerView বা অলস তালিকার মতো থাকে তবে তালিকাটি একটি ব্যাকগ্রাউন্ড টাস্ক দ্বারা জনবহুল হতে পারে যা তালিকাটি প্রথম আঁকার পরে সম্পূর্ণ হয় এবং তাই, ইউআই সম্পূর্ণরূপে আঁকা হিসাবে চিহ্নিত হওয়ার পরে। এই জাতীয় ক্ষেত্রে, ইউআই সম্পূর্ণরূপে আঁকা অবস্থায় পৌঁছানোর পরে যে কোডটি চালিত হয় তা বেসলাইন প্রোফাইলে অন্তর্ভুক্ত নয়।

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

যদি আপনার অ্যাপ্লিকেশনটি জেটপ্যাক রচনা ব্যবহার করে তবে সম্পূর্ণ আঁকা অবস্থা নির্দেশ করতে নিম্নলিখিত এপিআইগুলি ব্যবহার করুন:

  • ReportDrawn ইঙ্গিত দেয় যে আপনার কমপোজেবল তাত্ক্ষণিকভাবে মিথস্ক্রিয়াটির জন্য প্রস্তুত।
  • যখন আপনার কমপোজেবল ইন্টারঅ্যাকশনটির জন্য প্রস্তুত থাকে তা নির্দেশ করতে ReportDrawnWhen একটি ভবিষ্যদ্বাণী নেয়, যেমন list.count > 0
  • ReportDrawnAfter একটি স্থগিতকরণ পদ্ধতি গ্রহণ করে যা এটি সম্পূর্ণ হয়ে গেলে, ইঙ্গিত দেয় যে আপনার কম্পোজেবল মিথস্ক্রিয়াটির জন্য প্রস্তুত।
{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %} ,

জেটপ্যাক ম্যাক্রোব্যাঞ্চমার্ক লাইব্রেরি এবং BaselineProfileRule ব্যবহার করে প্রতিটি অ্যাপ্লিকেশন রিলিজের জন্য স্বয়ংক্রিয়ভাবে প্রোফাইল তৈরি করুন। আমরা আপনাকে সুপারিশ করি যে আপনি com.android.tools.build:gradle:8.0.0 : gradle:8.0.0 বা উচ্চতর ব্যবহার করুন, যা বেসলাইন প্রোফাইলগুলি ব্যবহার করার সময় বিল্ড উন্নতি নিয়ে আসে।

এটি একটি নতুন বেসলাইন প্রোফাইল তৈরি করার সাধারণ পদক্ষেপ:

  1. বেসলাইন প্রোফাইল মডিউলটি সেট আপ করুন।
  2. জুনিট পরীক্ষার সংজ্ঞা দিন যা বেসলাইন প্রোফাইল তৈরি করতে সহায়তা করে।
  3. আপনি অনুকূল করতে চান এমন সমালোচনামূলক ব্যবহারকারী ভ্রমণ (সিইউজেএস) যুক্ত করুন।
  4. বেসলাইন প্রোফাইল তৈরি করুন।

আপনি বেসলাইন প্রোফাইল তৈরি করার পরে, গতির উন্নতিগুলি পরিমাপ করতে এটি একটি শারীরিক ডিভাইস ব্যবহার করে এটি বেঞ্চমার্ক করুন।

এজিপি 8.2 বা উচ্চতর সহ একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

একটি নতুন বেসলাইন প্রোফাইল তৈরির সবচেয়ে সহজ উপায় হ'ল বেসলাইন প্রোফাইল মডিউল টেম্পলেট ব্যবহার করা, উপলব্ধ অ্যান্ড্রয়েড স্টুডিও ইগুয়ানা এবং অ্যান্ড্রয়েড গ্রেডল প্লাগইন (এজিপি) 8.2 উপলভ্য।

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

বেসলাইন প্রোফাইল মডিউল সেট আপ করুন

বেসলাইন প্রোফাইল মডিউল টেম্পলেট চালাতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ফাইল> নতুন> নতুন মডিউল নির্বাচন করুন
  2. টেমপ্লেট প্যানেলে বেসলাইন প্রোফাইল জেনারেটর টেম্পলেট নির্বাচন করুন এবং এটি কনফিগার করুন:
    চিত্র 1। বেসলাইন প্রোফাইল জেনারেটর মডিউল টেম্পলেট।

    টেমপ্লেটের ক্ষেত্রগুলি নিম্নলিখিতগুলি:

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

বেসলাইন প্রোফাইল জেনারেটর সংজ্ঞায়িত করুন

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

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

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

বেসলাইন প্রোফাইল মডিউল টেম্পলেট বেসলাইন প্রোফাইল তৈরি করতে একটি নতুন রান কনফিগারেশন যুক্ত করে। আপনি যদি পণ্যের স্বাদ ব্যবহার করেন তবে অ্যান্ড্রয়েড স্টুডিও একাধিক রান কনফিগারেশন তৈরি করে যাতে আপনি প্রতিটি গন্ধের জন্য পৃথক বেসলাইন প্রোফাইল তৈরি করতে পারেন।

জেনারেট বেসলাইন প্রোফাইল রান কনফিগারেশন।
চিত্র 2। এই কনফিগারেশনটি চালানো বেসলাইন প্রোফাইল উত্পন্ন করে।

জেনারেট বেসলাইন প্রোফাইল রান কনফিগারেশনটি সম্পূর্ণ হয়ে গেলে, এটি প্রোফাইল করা হচ্ছে এমন মডিউলটিতে src/ variant /generated/baselineProfiles/baseline-prof.txt ফাইলটিতে উত্পন্ন বেসলাইন প্রোফাইলটি অনুলিপি করে। বৈকল্পিক বিকল্পগুলি হ'ল রিলিজ বিল্ড টাইপ বা রিলিজ বিল্ড টাইপের সাথে জড়িত একটি বিল্ড বৈকল্পিক।

উত্পন্ন বেসলাইন প্রোফাইলটি মূলত build/outputs তৈরি করা হয়। সম্পূর্ণ পথটি অ্যাপ্লিকেশনটির প্রোফাইলযুক্ত হওয়ার বৈচিত্র বা স্বাদ দ্বারা নির্ধারিত হয় এবং আপনি প্রোফাইলিংয়ের জন্য গ্রেডল-ম্যানেজড ডিভাইস বা সংযুক্ত ডিভাইস ব্যবহার করেন কিনা। আপনি যদি কোড দ্বারা ব্যবহৃত নামগুলি ব্যবহার করেন এবং টেমপ্লেট দ্বারা উত্পাদিত কনফিগারেশনগুলি তৈরি করেন তবে বেসলাইন প্রোফাইলটি build/outputs/managed_device_android_test_additional_output/nonminifiedrelease/pixel6Api31/BaselineProfileGenerator_generate-baseline-prof.txt তৈরি করা হয়। আপনি যদি লক্ষ্য মডিউলগুলিতে ম্যানুয়ালি এটি অনুলিপি না করেন (প্রস্তাবিত নয়) আপনাকে সরাসরি উত্পন্ন বেসলাইন প্রোফাইলের এই সংস্করণটির সাথে যোগাযোগ করতে হবে না।

এজিপি 8.1 সহ একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

আপনি যদি বেসলাইন প্রোফাইল মডিউল টেম্পলেটটি ব্যবহার করতে সক্ষম না হন তবে একটি নতুন বেসলাইন প্রোফাইল তৈরি করতে ম্যাক্রোব্যাঞ্চমার্ক মডিউল টেম্পলেট এবং বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করুন। আমরা আপনাকে অ্যান্ড্রয়েড স্টুডিও জিরাফ এবং এজিপি 8.1 দিয়ে শুরু করে এই সরঞ্জামগুলি ব্যবহার করার পরামর্শ দিচ্ছি।

ম্যাক্রোব্যাঞ্চমার্ক মডিউল টেম্পলেট এবং বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করে একটি নতুন বেসলাইন প্রোফাইল তৈরি করার পদক্ষেপগুলি এখানে রয়েছে:

  1. আপনার গ্রেডল প্রকল্পে একটি ম্যাক্রোব্যাঞ্চমার্ক মডিউল সেট আপ করুন
  2. BaselineProfileGenerator নামে একটি নতুন শ্রেণি সংজ্ঞায়িত করুন:
    class BaselineProfileGenerator {
        @get:Rule
        val baselineProfileRule = BaselineProfileRule()
    
        @Test
        fun startup() = baselineProfileRule.collect(
            packageName = "com.example.app",
            profileBlock = {
                startActivityAndWait()
            }
        )
    }

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

  3. বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ( libs.plugins.androidx.baselineprofile ) যুক্ত করুন। প্লাগইনটি বেসলাইন প্রোফাইল তৈরি করা এবং ভবিষ্যতে সেগুলি বজায় রাখা সহজ করে তোলে।

  4. বেসলাইন প্রোফাইল তৈরি করতে, চালান :app:generateBaselineProfile বা :app:generate Variant BaselineProfile

    মূল শারীরিক ডিভাইস, এমুলেটর বা গ্রেড ম্যানেজড ডিভাইসে একটি সরঞ্জামযুক্ত পরীক্ষা হিসাবে জেনারেটরটি চালান। আপনি যদি কোনও গ্রেড ম্যানেজড ডিভাইস ব্যবহার করেন তবে aosp systemImageSource হিসাবে সেট করুন, কারণ আপনার বেসলাইন প্রোফাইল জেনারেটরের জন্য রুট অ্যাক্সেসের প্রয়োজন।

    প্রজন্মের টাস্কের শেষে, বেসলাইন প্রোফাইলটি app/src/ variant /generated/baselineProfiles অনুলিপি করা হয়।

টেমপ্লেট ছাড়াই একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

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

বেসলাইন প্রোফাইল গ্রেডল প্লাগইনটি সরাসরি ব্যবহার করে কীভাবে একটি বেসলাইন প্রোফাইল তৈরি করবেন তা এখানে:

  1. একটি নতুন com.android.test মডিউল তৈরি করুন example উদাহরণস্বরূপ :baseline-profile
  2. এর জন্য build.gradle.kts ফাইলটি কনফিগার করুন :baseline-profile :

    1. androidx.baselineprofile প্লাগইন প্রয়োগ করুন।
    2. targetProjectPath :app মডিউলটি নির্দেশ করে তা নিশ্চিত করুন।
    3. Ally চ্ছিকভাবে, একটি গ্রেডল-ম্যানেজড ডিভাইস (জিএমডি) যুক্ত করুন। নিম্নলিখিত উদাহরণে, এটি pixel6Api31 । যদি নির্দিষ্ট না করা হয় তবে প্লাগইনটি একটি সংযুক্ত ডিভাইস ব্যবহার করে, হয় অনুকরণীয় বা শারীরিক।
    4. নিম্নলিখিত উদাহরণে দেখানো হিসাবে আপনি চান কনফিগারেশনটি প্রয়োগ করুন।

    কোটলিন

    plugins {
        id("com.android.test")
        id("androidx.baselineprofile")
    }
    
    android {
        defaultConfig {
            ...
        }
    
        // Point to the app module, the module that you're generating the Baseline Profile for.
        targetProjectPath = ":app"
        // Configure a GMD (optional).
        testOptions.managedDevices.devices {
            pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                device = "Pixel 6"
                apiLevel = 31
                systemImageSource = "aosp"
            }
        }
    }
    
    dependencies { ... }
    
    // Baseline Profile Gradle plugin configuration. Everything is optional. This
    // example uses the GMD added earlier and disables connected devices.
    baselineProfile {
        // Specifies the GMDs to run the tests on. The default is none.
        managedDevices += "pixel6Api31"
        // Enables using connected devices to generate profiles. The default is
        // `true`. When using connected devices, they must be rooted or API 33 and
        // higher.
        useConnectedDevices = false
    }

    গ্রোভি

    plugins {
        id 'com.android.test'
        id 'androidx.baselineprofile'
    }
    
    android {
        defaultConfig {
            ...
        }
    
        // Point to the app module, the module that you're generating the Baseline Profile for.
        targetProjectPath ':app'
        // Configure a GMD (optional).
        testOptions.managedDevices.devices {
            pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                device 'Pixel 6'
                apiLevel 31
                systemImageSource 'aosp'
            }
        }
    }
    
    dependencies { ... }
    
    // Baseline Profile Gradle plugin configuration. Everything is optional. This
    // example uses the GMD added earlier and disables connected devices.
    baselineProfile {
        // Specifies the GMDs to run the tests on. The default is none.
        managedDevices ['pixel6Api31']
        // Enables using connected devices to generate profiles. The default is
        // `true`. When using connected devices, they must be rooted or API 33 and
        // higher.
        useConnectedDevices false
    }
  3. :baseline-profile পরীক্ষা তৈরি করুন। নিম্নলিখিত উদাহরণটি এমন একটি পরীক্ষা যা অ্যাপ্লিকেশনটি শুরু করে এবং নিষ্ক্রিয়ের জন্য অপেক্ষা করে।

    কোটলিন

    class BaselineProfileGenerator {
    
        @get:Rule
        val baselineRule = BaselineProfileRule()
    
        @Test
        fun startupBaselineProfile() {
            baselineRule.collect("com.myapp") {
                startActivityAndWait()
            }
        }
    }

    জাভা

    public class BaselineProfileGenerator {
    
        @Rule
        Public BaselineProfileRule baselineRule = new BaselineProfileRule();
    
        @Test
        Public void startupBaselineProfile() {
            baselineRule.collect(
                "com.myapp",
                (scope -> {
                    scope.startActivityAndWait();
                    Return Unit.INSTANCE;
                })
            )
        }
    }
  4. অ্যাপ মডিউলে build.gradle.kts ফাইলটি আপডেট করুন, উদাহরণস্বরূপ :app

    1. প্লাগইন androidx.baselineprofile প্রয়োগ করুন।
    2. :baseline-profile মডিউলটিতে একটি baselineProfile নির্ভরতা যুক্ত করুন।

    কোটলিন

    plugins {
        id("com.android.application")
        id("androidx.baselineprofile")
    }
    
    android {
        // There are no changes to the `android` block.
        ...
    }
    
    dependencies {
        ...
        // Add a `baselineProfile` dependency on the `:baseline-profile` module.
        baselineProfile(project(":baseline-profile"))
    }

    গ্রোভি

    plugins {
        id 'com.android.application'
        id 'androidx.baselineprofile'
    }
    
    android {
        // No changes to the `android` block.
        ...
    }
    
    dependencies {
        ...
        // Add a `baselineProfile` dependency on the `:baseline-profile` module.
        baselineProfile ':baseline-profile'
    }
  5. প্রোফাইলটি চালিয়ে প্রোফাইল তৈরি করুন :app:generateBaselineProfile বা :app:generate Variant BaselineProfile

  6. প্রজন্মের টাস্কের শেষে, বেসলাইন প্রোফাইলটি app/src/ variant /generated/baselineProfiles অনুলিপি করা হয়।

Agp 7.3-7.4 সহ একটি নতুন বেসলাইন প্রোফাইল তৈরি করুন

এজিপি 7.3-7.4 এর সাথে বেসলাইন প্রোফাইলগুলি উত্পন্ন করা সম্ভব, তবে আমরা কমপক্ষে এজিপি 8.1 এ আপগ্রেড করার পরামর্শ দিচ্ছি যাতে আপনি বেসলাইন প্রোফাইল গ্রেডল প্লাগইন এবং এর সর্বশেষ বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন।

আপনার যদি এজিপি 7.3-7.4 দিয়ে বেসলাইন প্রোফাইল তৈরি করতে হয় তবে পদক্ষেপগুলি নিম্নলিখিত ব্যতিক্রমগুলি সহ এজিপি 8.1 এর পদক্ষেপগুলির সমান:

ম্যানুয়ালি উত্পন্ন নিয়ম প্রয়োগ করুন

বেসলাইন প্রোফাইল জেনারেটর ডিভাইসে একটি হিউম্যান রিডেবল ফর্ম্যাট (এইচআরএফ) পাঠ্য ফাইল তৈরি করে এবং এটি আপনার হোস্ট মেশিনে অনুলিপি করে। আপনার কোডে উত্পন্ন প্রোফাইল প্রয়োগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনি মডিউলটির বিল্ড ফোল্ডারে এইচআরএফ ফাইলটি সন্ধান করুন: [module]/build/outputs/managed_device_android_test_additional_output/[device]

    প্রোফাইলগুলি [class name]-[test method name]-baseline-prof.txt নামকরণের প্যাটার্ন, যা দেখতে এটির মতো দেখায়: BaselineProfileGenerator-startup-baseline-prof.txt

  2. উত্পন্ন প্রোফাইলটি src/main/ অনুলিপি করুন এবং ফাইলটি baseline-prof.txt -তে নামকরণ করুন।

  3. আপনার অ্যাপের build.gradle.kts ফাইলটিতে প্রোফাইলইনস্টলার লাইব্রেরিতে একটি নির্ভরতা যুক্ত করুন স্থানীয় বেসলাইন প্রোফাইল সংকলন সক্ষম করতে যেখানে ক্লাউড প্রোফাইলগুলি উপলব্ধ নেই। স্থানীয়ভাবে একটি বেসলাইন প্রোফাইলকে সাইডলোড করার একমাত্র উপায়।

    dependencies {
         implementation("androidx.profileinstaller:profileinstaller:1.4.1")
    }
    
  4. প্রয়োগিত এইচআরএফ বিধিগুলি বাইনারি আকারে সংকলিত এবং এপিকে বা এএবিতে অন্তর্ভুক্ত করার সময় আপনার অ্যাপ্লিকেশনটির উত্পাদন সংস্করণ তৈরি করুন। তারপরে যথারীতি আপনার অ্যাপটি বিতরণ করুন।

বেসলাইন প্রোফাইল বেঞ্চমার্ক

আপনার বেসলাইন প্রোফাইলটি বেঞ্চমার্ক করতে, গটার অ্যাকশন থেকে একটি নতুন অ্যান্ড্রয়েড ইনস্ট্রুমেন্টড টেস্ট রান কনফিগারেশন তৈরি করুন যা StartupBenchmarks.kt বা StartupBencharks.java ফাইলটিতে সংজ্ঞায়িত বেঞ্চমার্কগুলি সম্পাদন করে। বেঞ্চমার্ক পরীক্ষা সম্পর্কে আরও জানতে, একটি ম্যাক্রোব্যাঞ্চমার্ক শ্রেণি তৈরি করুন এবং ম্যাক্রোব্যাঞ্চমার্ক লাইব্রেরির সাথে স্বয়ংক্রিয় পরিমাপ দেখুন।

চিত্র 3। গটার অ্যাকশন থেকে অ্যান্ড্রয়েড পরীক্ষা চালান।

আপনি যখন অ্যান্ড্রয়েড স্টুডিওর মধ্যে এটি চালান, বিল্ড আউটপুটটিতে বেসলাইন প্রোফাইল সরবরাহ করে এমন গতির উন্নতির বিশদ রয়েছে:

StartupBenchmarks_startupCompilationBaselineProfiles
timeToInitialDisplayMs   min 161.8,   median 178.9,   max 194.6
StartupBenchmarks_startupCompilationNone
timeToInitialDisplayMs   min 184.7,   median 196.9,   max 202.9

সমস্ত প্রয়োজনীয় কোড পাথ ক্যাপচার করুন

অ্যাপ্লিকেশন স্টার্টআপ সময়গুলি পরিমাপের জন্য দুটি মূল মেট্রিকগুলি নিম্নরূপ:

প্রাথমিক প্রদর্শনের সময় (টিটিআইডি)
অ্যাপ্লিকেশন ইউআইয়ের প্রথম ফ্রেমটি প্রদর্শন করতে সময় লাগে।
পুরো ডিসপ্লে থেকে সময় (টিটিএফডি)
টিটিআইডি প্লাস প্রাথমিক ফ্রেম প্রদর্শিত হওয়ার পরে অ্যাসিঙ্ক্রোনালি লোড করা সামগ্রী প্রদর্শনের সময়।

টিটিএফডি রিপোর্ট করা হয় যখন ComponentActivity reportFullyDrawn() পদ্ধতিটি বলা হয়। যদি reportFullyDrawn() কখনও কল করা হয় না, পরিবর্তে টিটিআইডি রিপোর্ট করা হয়। অ্যাসিঙ্ক্রোনাস লোডিং সম্পূর্ণ না হওয়া পর্যন্ত আপনাকে reportFullyDrawn() ডাকা যখন আপনাকে বিলম্ব করতে হবে। উদাহরণস্বরূপ, যদি ইউআইতে একটি গতিশীল তালিকা যেমন একটি RecyclerView বা অলস তালিকার মতো থাকে তবে তালিকাটি একটি ব্যাকগ্রাউন্ড টাস্ক দ্বারা জনবহুল হতে পারে যা তালিকাটি প্রথম আঁকার পরে সম্পূর্ণ হয় এবং তাই, ইউআই সম্পূর্ণরূপে আঁকা হিসাবে চিহ্নিত হওয়ার পরে। এই জাতীয় ক্ষেত্রে, ইউআই সম্পূর্ণরূপে আঁকা অবস্থায় পৌঁছানোর পরে যে কোডটি চালিত হয় তা বেসলাইন প্রোফাইলে অন্তর্ভুক্ত নয়।

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

যদি আপনার অ্যাপ্লিকেশনটি জেটপ্যাক রচনা ব্যবহার করে তবে সম্পূর্ণ আঁকা অবস্থা নির্দেশ করতে নিম্নলিখিত এপিআইগুলি ব্যবহার করুন:

  • ReportDrawn ইঙ্গিত দেয় যে আপনার কমপোজেবল তাত্ক্ষণিকভাবে মিথস্ক্রিয়াটির জন্য প্রস্তুত।
  • যখন আপনার কমপোজেবল ইন্টারঅ্যাকশনটির জন্য প্রস্তুত থাকে তা নির্দেশ করতে ReportDrawnWhen একটি ভবিষ্যদ্বাণী নেয়, যেমন list.count > 0
  • ReportDrawnAfter একটি স্থগিতকরণ পদ্ধতি গ্রহণ করে যা এটি সম্পূর্ণ হয়ে গেলে, ইঙ্গিত দেয় যে আপনার কম্পোজেবল মিথস্ক্রিয়াটির জন্য প্রস্তুত।
{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}