অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.1.0 (জুলাই 2023)

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.১.০ একটি প্রধান রিলিজ, যাতে বিভিন্ন নতুন ফিচার ও উন্নতি অন্তর্ভুক্ত করা হয়েছে।

সামঞ্জস্যতা

সর্বনিম্ন সংস্করণ ডিফল্ট সংস্করণ নোট
গ্রেডল ৮.০ ৮.০ আরও জানতে, Gradle আপডেট করা দেখুন।
এসডিকে বিল্ড টুলস ৩৩.০.১ ৩৩.০.১ এসডিকে বিল্ড টুলস ইনস্টল বা কনফিগার করুন
এনডিকে প্রযোজ্য নয় ২৫.১.৮৯৩৭৩৯৩ NDK-এর একটি ভিন্ন সংস্করণ ইনস্টল বা কনফিগার করুন
জেডিকে ১৭ ১৭ আরও জানতে, JDK সংস্করণ নির্ধারণ দেখুন।

বিল্ড কনফিগারেশনের জন্য Kotlin DSL হলো ডিফল্ট।

নতুন প্রজেক্টগুলো এখন বিল্ড কনফিগারেশনের জন্য ডিফল্টভাবে কোটলিন ডিএসএল ( build.gradle.kts ) ব্যবহার করে। এটি সিনট্যাক্স হাইলাইটিং, কোড কমপ্লিশন এবং ডিক্লারেশনে নেভিগেশনের মাধ্যমে গ্রুভি ডিএসএল ( build.gradle )-এর চেয়ে উন্নত এডিটিং অভিজ্ঞতা প্রদান করে। উল্লেখ্য যে, আপনি যদি বিল্ড কনফিগারেশনের জন্য এজিপি ৮.১ এবং কোটলিন ডিএসএল ব্যবহার করেন, তবে সেরা অভিজ্ঞতার জন্য আপনার গ্রেডল ৮.১ ব্যবহার করা উচিত। আরও জানতে, কোটলিন ডিএসএল মাইগ্রেশন গাইড দেখুন।

প্রতিটি অ্যাপের জন্য স্বয়ংক্রিয় ভাষা সমর্থন

Android Studio Giraffe Canary 7 এবং AGP 8.1.0-alpha07 থেকে শুরু করে, আপনি আপনার অ্যাপকে স্বয়ংক্রিয়ভাবে প্রতি-অ্যাপ ভাষার পছন্দ সমর্থন করার জন্য কনফিগার করতে পারেন। আপনার প্রোজেক্ট রিসোর্সের উপর ভিত্তি করে, Android Gradle প্লাগইন LocaleConfig ফাইলটি তৈরি করে এবং চূড়ান্ত ম্যানিফেস্ট ফাইলে এর একটি রেফারেন্স যোগ করে, ফলে আপনাকে আর এটি ম্যানুয়ালি করতে হয় না। LocaleConfig ফাইলে কোন লোকেলগুলো অন্তর্ভুক্ত করতে হবে তা নির্ধারণ করার জন্য AGP আপনার অ্যাপ মডিউল এবং যেকোনো লাইব্রেরি মডিউল ডিপেন্ডেন্সির res ফোল্ডারের রিসোর্সগুলো ব্যবহার করে।

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

প্রতিটি অ্যাপের জন্য স্বয়ংক্রিয় ভাষা সমর্থন সক্রিয় করতে, একটি ডিফল্ট লোকেল নির্দিষ্ট করুন:

  1. অ্যাপ মডিউলের res ফোল্ডারে resources.properties নামে একটি নতুন ফাইল তৈরি করুন।
  2. resources.properties ফাইলে, unqualifiedResLocale লেবেলটি দিয়ে ডিফল্ট লোকেল সেট করুন। লোকেলের নাম তৈরি করতে, ল্যাঙ্গুয়েজ কোডের সাথে ঐচ্ছিক স্ক্রিপ্ট এবং রিজিয়ন কোড একত্রিত করুন, এবং প্রতিটিকে একটি ড্যাশ দিয়ে আলাদা করুন:

    • ভাষা: দুই বা তিন অক্ষরের ISO 639-1 কোডটি ব্যবহার করুন।
    • স্ক্রিপ্ট (ঐচ্ছিক): ISO 15924 কোডটি ব্যবহার করুন।
    • অঞ্চল (ঐচ্ছিক): দুই অক্ষরের ISO 3166-1-alpha-2 কোড অথবা তিন অঙ্কের UN_M.49 কোড ব্যবহার করুন।

    উদাহরণস্বরূপ, যদি আপনার ডিফল্ট লোকেল আমেরিকান ইংরেজি হয়:

        unqualifiedResLocale=en-US
        

AGP স্বয়ংক্রিয়ভাবে তৈরি হওয়া LocaleConfig ফাইলে এই ডিফল্ট লোকেল এবং res ফোল্ডারের values-* ডিরেক্টরি ব্যবহার করে আপনার নির্দিষ্ট করা যেকোনো বিকল্প লোকেল যোগ করে।

ডিফল্টরূপে, প্রতি-অ্যাপ স্বয়ংক্রিয় ভাষা সমর্থন বন্ধ থাকে। এই ফিচারটি চালু করতে, মডিউল-স্তরের build.gradle.kts ফাইলের (আপনি Groovy ব্যবহার করলে build.gradle ফাইল) androidResources {} ব্লকে generateLocaleConfig সেটিংটি ব্যবহার করুন:

কোটলিন

android {
  androidResources {
    generateLocaleConfig = true
  }
}

গ্রুভি

android {
  androidResources {
    generateLocaleConfig true
  }
}

অ্যান্ড্রয়েড লিন্টে জেভিএম ১৭ টার্গেট করা বাইটকোড রয়েছে।

AGP 8.1.0-alpha04 থেকে শুরু করে, Android Lint-এ JVM 17-কে লক্ষ্য করে বাইটকোড রয়েছে। আপনি যদি কাস্টম লিন্ট চেক লেখেন, তাহলে আপনাকে JDK 17 বা তার উচ্চতর সংস্করণ দিয়ে কম্পাইল করতে হবে এবং আপনার Kotlin কম্পাইলার অপশনে jvmTarget = '17' উল্লেখ করতে হবে।

লিন্ট টুল সম্পর্কে আরও জানতে, “লিন্ট চেকের মাধ্যমে আপনার কোডের উন্নতি করুন” দেখুন।

নেটিভ লাইব্রেরি কম্প্রেশন সেটিং DSL-এ স্থানান্তরিত করা হয়েছে

AGP 8.1.0-alpha10 থেকে শুরু করে, আপনি যদি ম্যানিফেস্টের পরিবর্তে DSL ব্যবহার করে নেটিভ লাইব্রেরি কম্প্রেশন কনফিগার না করেন, তাহলে একটি সতর্কবার্তা পাবেন। নিম্নলিখিত নির্দেশিকায় ব্যাখ্যা করা হয়েছে কীভাবে আপনার কনফিগারেশন আপডেট করে DSL ব্যবহার করবেন। এই আপডেটগুলি করতে সাহায্যের জন্য, AGP আপগ্রেড অ্যাসিস্ট্যান্ট ( Tools > AGP Upgrade Assistant ) ব্যবহার করুন।

অসংকুচিত নেটিভ লাইব্রেরি ব্যবহার করতে, ম্যানিফেস্ট থেকে android::extractNativeLibs অ্যাট্রিবিউটটি সরিয়ে দিন এবং মডিউল-স্তরের build.gradle.kts ফাইলে (আপনি Groovy ব্যবহার করলে build.gradle ফাইলে) নিম্নলিখিত কোডটি যোগ করুন:

কোটলিন

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging = false
    }
  }
}

গ্রুভি

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging false
    }
  }
}

পরীক্ষামূলক বিল্ড ফ্ল্যাগ

এগুলো AGP 8.1-এ আপনার বিল্ড কনফিগার করার জন্য উপলব্ধ পরীক্ষামূলক ফ্ল্যাগ।

পতাকা যোগ করা হয়েছে ডিফল্ট মান নোট
android.experimental.useDefaultDebugSigningConfigForProfileableBuildtypes এজিপি ৮.০ false কোনো সাইনিং কনফিগারেশন নির্দিষ্ট না করে এটি সক্রিয় করলে, একটি প্রোফাইলেবল বা ডিবাগেবল বিল্ড চালানোর সময় AGP ডিফল্ট ডিবাগ সাইনিং কনফিগারেশন ব্যবহার করে। বিল্ড লেখকদের নির্দিষ্ট প্রোফাইলিং সাইনিং কনফিগারেশন ঘোষণা করতে উৎসাহিত করার জন্য এই ফ্ল্যাগটি ডিফল্টরূপে নিষ্ক্রিয় থাকে।
android.experimental.library.desugarAndroidTest এজিপি ৮.০ false এই ফ্ল্যাগটি লাইব্রেরি নির্মাতাদেরকে, উদাহরণস্বরূপ লিন্টিংয়ের মাধ্যমে, উৎপাদিত AAR-কে প্রভাবিত না করেই টেস্ট APK-গুলোর জন্য কোর লাইব্রেরির ডিসুগারিং সক্ষম করতে দেয়। আমরা অবশেষে ভ্যারিয়েন্ট এপিআই-তে এই আচরণটি সমর্থন করার পরিকল্পনা করছি।
android.experimental.testOptions.managedDevices.customDevice এজিপি ৮.০ false সক্রিয় করা থাকলে, গ্রেডল ম্যানেজড ডিভাইস একটি ব্যবহারকারী-সংজ্ঞায়িত কাস্টম ডিভাইস টাইপের অনুমতি দেয় যা একটি প্লাগইন দ্বারা সরবরাহ করা যেতে পারে। আপনি যদি ফায়ারবেস টেস্ট ল্যাব প্লাগইন ব্যবহার করতে চান তবে এই ফ্ল্যাগটি অবশ্যই সক্রিয় করতে হবে।
android.lint.printStackTrace এজিপি ৮.০ false সক্রিয় করা থাকলে, অ্যান্ড্রয়েড লিন্ট ক্র্যাশ করলে একটি স্ট্যাকট্রেস প্রিন্ট করে। এই ফ্ল্যাগটির ক্ষমতা LINT_PRINT_STACKTRACE এনভায়রনমেন্ট ভেরিয়েবলের মতোই।
android.experimental.testOptions.managedDevices.maxConcurrentDevices এজিপি ৮.০ কোনোটিই না যেকোনো একটি নির্দিষ্ট সময়ে সর্বাধিক কতগুলো গ্রেডল ম্যানেজড ডিভাইস (AVD) সক্রিয় থাকবে তা নির্দিষ্ট করে। যদি মানটি ০ বা ঋণাত্মক হয়, তবে ডিভাইসের কোনো সর্বোচ্চ সংখ্যা থাকে না।
android.experimental.testOptions.installApkTimeout এজিপি ৮.০ কোনোটিই না একটি APK ইনস্টল করার জন্য সময়সীমা (সেকেন্ডে)। যদি মানটি ০ বা ঋণাত্মক হয়, তবে UTP এটিকে একটি ডিফল্ট মানে সেট করবে।

সমাধান করা সমস্যাগুলি

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.১.৪

সমাধান করা সমস্যাগুলি
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
সাবপ্রজেক্টের ক্লাসগুলো আর্টিফ্যাক্ট ট্রান্সফর্মের মাধ্যমে ইতিমধ্যে ডেক্স করা হয়ে গেলে সেগুলোর উপর ডেক্সিং টাস্ক চালাবেন না।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.১.৩

সমাধান করা সমস্যাগুলি
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
[AGP 8.1.0] যদি splits.abi.isEnable এবং testOptions.unitTests.isIncludeAndroidResources উভয়ই true হয়, তাহলে ./gradlew test "Unable to find manifest output" ত্রুটির সাথে ব্যর্থ হয়।
AGP 8.1-এ আপডেট করার পর বিল্ড ব্যর্থ হয়েছে।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.১.২

সমাধান করা সমস্যাগুলি
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
android লাইব্রেরি মডিউলে androidResources উপলব্ধ নেই।
[AGP 8.1.0] যদি splits.abi.isEnable এবং testOptions.unitTests.isIncludeAndroidResources উভয়ই true হয়, তাহলে ./gradlew test "Unable to find manifest output" ত্রুটির সাথে ব্যর্থ হয়।
সঙ্কোচনকারী (R8)
কোটলিন ১.৯-এর কারণে, নালচেক বাদ দেওয়া হলে R8 দ্বারা কোটলিন ল্যাম্বডাগুলো ধ্বংস হয়ে যায়।
play-services-measurement-21.3.0-runtime.jar-এর ক্ষেত্রে R8 "Undefined value encountered during compilation" ত্রুটির কারণে ব্যর্থ হয়েছে।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.১.১

সমাধান করা সমস্যাগুলি
ডেক্সার (ডি৮)
জাভা ১৬ রেকর্ডস: equals(null) ব্যবহার করলে NullPointerException থ্রো করে
সঙ্কোচনকারী (R8)
java.lang.VerifyError: যাচাইকারী ক্লাস প্রত্যাখ্যান করেছে
অ্যাপাচি POI লাইব্রেরি ব্যবহার করার সময় বিল্ডটি :minifyReleaseWithR8 ধাপে আটকে যায়।
r8 অপ্টিমাইজ সক্ষম করা হলে আহ্বান প্রত্যাখ্যান করা হচ্ছে
java.lang.reflect.Executable এর জন্য NoClassDefFoundError।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.১.০

সমাধান করা সমস্যাগুলি
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
`com.android.build.gradle.tasks.ShaderCompile` কনফিগারেশন ক্যাশে সংক্রান্ত সমস্যা
AGP API ব্যবহার করে জাভা রিসোর্সে কিছু যোগ করলে কনফিগারেশন ক্যাশে নষ্ট হয়ে যায়।
[অ্যান্ড্রয়েড স্টুডিও : ফ্লেমিঙ্গো | ২০২২.২.১ ক্যানারি ৮] liblog.so ফাইলটি APK-এর ভেতরে প্যাকেজ করা আছে।
KGP কনফিগারেশনের সময় ম্যানিফেস্ট পড়ে, এবং ম্যানিফেস্ট পরিবর্তনের সময় কনফিগারেশন ক্যাশে বাতিল করে দেয়।
মার্জ করা ম্যানিফেস্টে সমস্যা থাকলে বিল্ড সতর্কীকরণ বার্তাটি অস্পষ্ট থাকে।
AGP 7.4-এ আপগ্রেড করার ফলে একটি StackOverflowError দেখা দেয়।
কোটলিন লাইব্রেরি সাবপ্রজেক্টের উপর সরাসরি নির্ভরশীল ডাইনামিক ফিচারে ClassNotFoundException।
টেস্ট ভ্যারিয়েন্টগুলির জন্য ম্যানিফেস্ট প্লেসহোল্ডার থাকার কারণে processDebugUnitTestManifest ব্যর্থ হচ্ছে।
টেস্ট ভ্যারিয়েন্টগুলির জন্য ম্যানিফেস্ট প্লেসহোল্ডার থাকার কারণে processDebugUnitTestManifest ব্যর্থ হচ্ছে।
নেমস্পেস প্রপার্টিটি সম্ভবত HasAndroidResources-এর অন্তর্গত।
"শেষ প্রজেক্ট সিঙ্কের পর গ্রেডল ফাইল পরিবর্তিত হয়েছে" বার্তাটি নিষ্ক্রিয় করা যাচ্ছে না।
যখন কোনো নতুন প্লাগইন উপলব্ধ না থাকে, তখন "আমরা একটি নতুন অ্যান্ড্রয়েড গ্রেডল প্লাগইন ব্যবহার করার পরামর্শ দিই"।
টেস্ট ভ্যারিয়েন্টগুলির জন্য ম্যানিফেস্ট প্লেসহোল্ডার থাকার কারণে processDebugUnitTestManifest ব্যর্থ হচ্ছে।
CheckAarMetadataTask-এ কম্পাইল SDK চেক নিষ্ক্রিয় করার জন্য বুলিয়ান ফ্ল্যাগ।
বিল্ড ত্রুটিটি এপিআই লেভেল ৩৪-কে নির্দেশ করছে, যার কোনো অস্তিত্ব নেই।
JVM টুলচেইন সেট করা JavaCompile targetCompatibility মানকে প্রভাবিত করে না।
ওয়াইল্ডকার্ড ডোমেইন সহ নেভিগেশন ডিপলিঙ্ক এন্ট্রিগুলিতে মার্জড ম্যানিফেস্টে `android:host` অ্যাট্রিবিউট থাকে না।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.১ থেকে processDebugMainManifest টাস্কটি ব্যর্থ হচ্ছে।
আমরা কি AnalyticsRecordingTask সরিয়ে ফেলতে পারি?
আউটপুট-মেটাডেটা.json ফাইলের বিষয়বস্তু সামঞ্জস্যপূর্ণ নয়
আমরা কি AnalyticsRecordingTask সরিয়ে ফেলতে পারি?
আউটপুট-মেটাডেটা.json ফাইলের বিষয়বস্তু সামঞ্জস্যপূর্ণ নয়
JVM টুলচেইন সেট করা JavaCompile targetCompatibility মানকে প্রভাবিত করে না।
ওয়াইল্ডকার্ড ডোমেইন সহ নেভিগেশন ডিপলিঙ্ক এন্ট্রিগুলিতে মার্জড ম্যানিফেস্টে `android:host` অ্যাট্রিবিউট থাকে না।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.১ থেকে processDebugMainManifest টাস্কটি ব্যর্থ হচ্ছে।
অ্যান্ড্রয়েড স্টুডিও STUDIO_GRADLE_JDK এনভায়রনমেন্ট ভেরিয়েবলকে সম্মান করে না।
কাস্টম সোর্স টাইপগুলো মাল্টি-ফ্লেভার সোর্সসেট তৈরি করবে।
DependenciesInfoBuilder-এর জন্য API আপডেট ও ডকুমেন্টেশন প্রয়োজন।
নেস্ট মেম্বার অনুপস্থিত থাকার কারণে জাভা ১১ টার্গেটের সাথে DexingNoClasspathTransform (minSdk >= 24) ব্যর্থ হয়।
Groovy-তে বর্ণিত পদ্ধতি অনুযায়ী DslExtension.Builder.extendProjectWith() কাজ করছে না।
এমন VariantSelector.withFlavor API যোগ করুন যা kotlin.Pair ব্যবহার করে না।
অ্যান্ড্রয়েডলিন্টঅ্যানালাইসিসটাস্ক ( `proguard.txt` পরিবর্তিত হওয়ায় `:lintAnalyzeExternalRelease`-এর ক্যাশে মিস হয়েছে।
অ্যাপের মার্জ করা ম্যানিফেস্টে ডিপেন্ডেন্সিগুলো থেকে extractNativeLibs এবং useEmbeddedDex অ্যাট্রিবিউটগুলো অন্তর্ভুক্ত রয়েছে।
AGP: AIDL টুল এবং ফ্রেমওয়ার্ক AIDL ফাইলের পাথ পাবলিক API হিসেবে প্রকাশ করুন
অনুরোধ: IDE যেন "PermittedSubclasses requires ASM9" সমস্যাটির একটি সমাধান দেয়।
বাগ: "এই ডিপেন্ডেন্সির জন্য KSP সক্রিয় করুন এবং পরিবর্তে KSP প্রসেসর ব্যবহার করুন" বিকল্পটি শুধু একটি ওয়েবসাইটে নিয়ে যায়।
.gradle/.android/analytics.settings-এর কারণে Gradle 8.1 কনফিগারেশন ক্যাশিং ভেঙে দেয়।
agp 8.1.0-এর generateLocaleConfig অনির্দিষ্ট ক্রম ব্যবহার করে, যা পুনরুৎপাদনযোগ্য বিল্ডগুলোকে ভেঙে দেয়।
ডেক্সার (ডি৮)
সাম্প্রতিক আপডেটের পর কোর লাইব্রেরি ডিসুগারিংয়ের কারণে অ্যাপটি ক্র্যাশ করছে।
এপিআই ২১ এর সাথে এজিপি ৮.১.০ রিগ্রেশন - এফ/ডেক্স২ওট (৪১৭৬): art/compiler/driver/compiler_driver.cc:১১৮১] চেক ব্যর্থ হয়েছে: !method->IsAbstract()
লিন্ট
লিন্ট শুধুমাত্র সরাসরি ইমপ্লিমেন্টেড ইন্টারফেসের জন্য সেফ কাস্ট পরীক্ষা করে, ইনহেরিটেড ইন্টারফেসের জন্য নয়।
লিন্ট কল রিসিভারদের জন্য বৈধ কাস্ট পরীক্ষা করে না।
TypedArray#close (API 31) ডিসুগার করা হয়নি, কিন্তু try-with-resources-এ ব্যবহার করা হলে AS কোনো সতর্কবার্তা প্রদর্শন করে না।
বাগ: "'BC' প্রোভাইডারটি অপ্রচলিত এবং Android P থেকে..." এই মর্মে একটি ভুল সতর্কবার্তা।
Kotlin 1.8.0-এ আপগ্রেড করার পর 'remember' সংক্রান্ত Lint-এ ভুল পজিটিভ পাওয়া গেছে।
enum প্যারামিটারযুক্ত কোনো মেথডের ভিতরে SDK_INT চেক করার ক্ষেত্রে ফলস পজিটিভ লিন্ট ওয়ার্নিং।
TypeographyQuotes লিন্ট চেক এস্কেপড কোটসের ক্ষেত্রে কাজ করে না।
TrustAllX509TrustManager লিন্ট চেকটি X509TrustManager-কে এক্সটেন্ড করে এমন ইন্টারফেসগুলোকে ভুলভাবে ফ্ল্যাগ করে।
রিপ্লেস ফিক্সের শুধু সন্নিবেশিত কোডটির রিফরম্যাটিং
Lint: ইনটেনশন প্রিভিউ ReplaceStringQuickFix-এর জন্য এক্সেপশন থ্রো করে।
সঙ্কোচনকারী (R8)
Kotlin 1.8.20-এর সাথে R8 ব্যবহার করার সময় VerifyError: Verifier ক্লাসটি প্রত্যাখ্যান করেছে।
AGP 8-এ R8 গুগল ফিট পরিষেবা ভেঙে দেয়।
ইনপুট নামের সাথে ওভারল্যাপ করে এমন রেসিডুয়াল নামের সাথে সোর্স ফাইলের তথ্য অন্তর্ভুক্ত করা সঠিকভাবে উপস্থাপন করা হয় না।
Compose বিল্ড চলাকালীন ArrayIndexOutOfBoundsException ত্রুটির কারণে R8 ব্যর্থ হয়।
রিলিজ বা ডিবাগেবল=ফলস মোডে সাধারণ স্ট্রিংবিল্ডার সম্পর্কিত কোডে অ্যাপেন্ড করার জন্য টেইল কলটি বাদ পড়ে যায়।
VirtualDispatchMethodArgumentPropagator.shouldActivateMethodStateGuardedByBounds() পদ্ধতির একটি বিশেষ পরিস্থিতি
dex-startup-optimization এর ফলে java.lang.VerifyError: Rejecting class ত্রুটি দেখা দিচ্ছে।
অ্যান্ড্রয়েড ১২+ এ ভেরিফিকেশন ত্রুটির কারণে ক্র্যাশ।