আপনার স্টার্টআপ প্রোফাইলগুলো ঠিকমতো কাজ করছে কিনা, তা আপনি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে অথবা R8 বিল্ড মেটাডেটা দেখে যাচাই করতে পারেন।
অ্যান্ড্রয়েড স্টুডিও দিয়ে নিশ্চিত করুন
DEX লেআউট অপ্টিমাইজেশন নিশ্চিত করতে, Android Studio ব্যবহার করে APK ফাইলটি খুলুন এবং DEX ফাইলগুলির ক্লাসগুলি যাচাই করুন। খেয়াল রাখবেন যেন মূল classes.dex ফাইলটি সম্পূর্ণ ভর্তি না থাকে। যদি আপনার অ্যাপে একটিমাত্র DEX ফাইল থাকে, তাহলে স্টার্টআপ প্রোফাইল চালু করার পর অ্যাপটিতে দুটি DEX ফাইল আছে কিনা তা আপনি পরীক্ষা করে দেখতে পারেন।
স্টার্টআপ ক্লাসগুলো একটিমাত্র DEX ফাইলে না ধরলে Android Studio আপনাকে সতর্ক করে। স্টার্টআপ ক্লাসগুলোতে থাকা নন-স্টার্টআপ মেথডের সংখ্যাসহ ডায়াগনস্টিক তথ্য পেতে, স্টার্টআপ প্রোফাইল প্রয়োগ করার সময় settings.gradle ফাইলে নিম্নলিখিত পরিবর্তনগুলো করে নিশ্চিত করুন যে R8 কম্পাইলারটি অন্তত 8.3.21 সংস্করণে আপডেট করা আছে:
কোটলিন
pluginManagement { buildscript { repositories { mavenCentral() maven { url = uri("https://storage.googleapis.com/r8-releases/raw") } } dependencies { classpath("com.android.tools:r8:8.3.21") } } }
গ্রুভি
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
এরপর ডায়াগনস্টিকটি টার্মিনালে প্রিন্ট করা হয়।
যদি আপনার অ্যাপ বা কোনো লাইব্রেরি কোনো ডিসুগারড এপিআই (API) রেফারেন্স করে, তাহলে এই ক্লাসগুলোর বান্ডেল করা কম্প্যাটিবিলিটি ইমপ্লিমেন্টেশনগুলো সর্বদা শেষ DEX ফাইলে অন্তর্ভুক্ত থাকে। এই ডিসুগারড শেষ DEX ফাইলটি DEX লেআউট অপটিমাইজেশনে অংশগ্রহণ করে না।
বান্ডেল মেটাডেটা দিয়ে নিশ্চিত করুন
AGP 8.8 থেকে শুরু করে, R8 আপনার অ্যান্ড্রয়েড অ্যাপ বান্ডেল (AAB)-এ মেটাডেটা আউটপুট করে, যা ব্যবহার করে আপনি DEX লেআউট অপ্টিমাইজেশন সফল হয়েছে কিনা তা পরীক্ষা করতে পারেন। অপ্টিমাইজেশনটি কাজ করেছে কিনা তা পরীক্ষা করতে, নিম্নলিখিতগুলি করুন:
আপনার অ্যাপের AAB তৈরি করুন:
./gradlew app:bundleReleaseযাচাই করুন যে অন্তত একটি DEX ফাইলে
"startup": trueলেখাটি আছে।মেটাডেটা খুলুন:
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এর মতো হতে পারে।আউটপুটটি পরীক্ষা করুন, যা দেখতে অনেকটা এইরকম হবে:
inflating: r8.json [ { "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951", "startup": true } ]
যদি আপনি মেটাডেটাতে শুধু
"startup": falseদেখতে পান, তাহলে আপনাকে স্টার্টআপ প্রোফাইল সক্রিয় করতে হবে এবং নিশ্চিত করতে হবে যে আপনার স্টার্টআপ প্রোফাইলটি অবফাসকেটেড নয়।মেটাডেটা থেকে প্রাপ্ত 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ধাপ ১ থেকে প্রাপ্ত 'চেকসাম' মানগুলোর সাথে হ্যাশ মানগুলো তুলনা করুন। যদি SHA-256 মানগুলো না মেলে, তাহলে সম্ভবত কোনো কম্পাইলেশন ধাপ R8-এর DEX ফাইল আউটপুট করার ক্ষমতায় বাধা দিচ্ছে।