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

আপনি Android স্টুডিও ব্যবহার করে বা R8 বিল্ড মেটাডেটা দেখে আপনার স্টার্টআপ প্রোফাইলগুলি কাজ করছে কিনা তা পরীক্ষা করতে পারেন।

অ্যান্ড্রয়েড স্টুডিও দিয়ে নিশ্চিত করুন

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 লেআউট অপ্টিমাইজেশানে অংশগ্রহণ করে না।

বান্ডেল মেটাডেটা দিয়ে নিশ্চিত করুন

AGP 8.8 দিয়ে শুরু করে, R8 আপনার Android অ্যাপ বান্ডেলে (AAB) মেটাডেটা আউটপুট করে যা আপনি DEX লেআউট অপ্টিমাইজেশন সফল হয়েছে কিনা তা পরীক্ষা করতে ব্যবহার করতে পারেন। অপ্টিমাইজেশান কাজ করেছে কিনা তা পরীক্ষা করতে, নিম্নলিখিতগুলি করুন:

  1. আপনার অ্যাপের AAB তৈরি করুন:

    ./gradlew app:bundleRelease
    
  2. পরীক্ষা করুন যে অন্তত একটি DEX ফাইল আছে যাতে "startup": true

    1. মেটাডেটা খুলুন:

      unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.json
      

      আপনার AAB-এর পথটি app/build/outputs/bundle/release/app-release.aab মত কিছু হতে পারে।

    2. আউটপুট পরীক্ষা করুন, যা এই মত কিছু দেখতে হবে:

          inflating: r8.json
      [
        {
          "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951",
          "startup": true
        }
      ]
      

    আপনি যদি শুধুমাত্র "startup": false , আপনাকে স্টার্টআপ প্রোফাইলগুলি সক্ষম করতে হবে এবং নিশ্চিত করতে হবে যে আপনার স্টার্টআপ প্রোফাইলটি অস্পষ্ট নয়৷

  3. মেটাডেটা থেকে SHA-256 মানগুলি AAB-এর মানগুলির সাথে মেলে কিনা তা পরীক্ষা করুন৷ আপনার সমস্ত DEX ফাইলের জন্য SHA-256 মান পেতে নিম্নলিখিতগুলি চালান:

    unzip -o path-to-aab */dex/*.dex && sha256sum */dex/*
    

    আউটপুট এই মত কিছু দেখতে হবে:

    Archive: app/build/outputs/bundle/release/myapp-release.aab
      inflating: base/dex/classes.dex
    f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951  base/dex/classes.dex
    

    ধাপ 1 থেকে "চেকসাম" মানগুলির সাথে হ্যাশ মানগুলির তুলনা করুন৷ যদি SHA-256 মানগুলি মেলে না, তবে একটি সংকলন পদক্ষেপ হতে পারে যা R8 এর DEX ফাইলগুলি আউটপুট করার ক্ষমতার সাথে হস্তক্ষেপ করে৷