অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.০.০ একটি প্রধান রিলিজ যাতে বিভিন্ন ধরণের নতুন বৈশিষ্ট্য এবং উন্নতি অন্তর্ভুক্ত রয়েছে।
সামঞ্জস্য
| সর্বনিম্ন সংস্করণ | ডিফল্ট সংস্করণ | মন্তব্য | |
|---|---|---|---|
| গ্রেডল | ৮.০ | ৮.০ | আরও জানতে, Gradle আপডেট করা দেখুন। |
| SDK বিল্ড টুলস | ৩০.০.৩ | ৩০.০.৩ | SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন । |
| এনডিকে | নিষিদ্ধ | ২৫.১.৮৯৩৭৩৯৩ | NDK এর একটি ভিন্ন সংস্করণ ইনস্টল বা কনফিগার করুন । |
| জেডিকে | ১৭ | ১৭ | আরও জানতে, JDK সংস্করণ সেটিং দেখুন। |
প্যাচ রিলিজ
অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.০ এর জন্য প্যাচ রিলিজের একটি তালিকা নিচে দেওয়া হল।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.০.২ (মে ২০২৩)
AGP 8.0.2-এ সংশোধন করা বাগগুলির তালিকার জন্য, Android Studio 2022.2.1 বন্ধ হওয়া সমস্যাগুলি দেখুন।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.০.১ (মে ২০২৩)
এই ছোট আপডেটে নিম্নলিখিত বাগ সংশোধনগুলি অন্তর্ভুক্ত রয়েছে:
| সমস্যা সমাধান করা হয়েছে | |
|---|---|
ত্রুটি: AGP 7.2.2 -> 7.4.0 আপগ্রেড করার পরে "টেবিলে প্রদত্ত আইডি সহ কোনও সংস্করণের প্রয়োজন নেই" | |
markTypeAsLive AGP 7.4.1-এ R8 NullPointerException | |
[R8 4.0.53] Android 11-এ হার্ড ক্লাস যাচাইকরণ ব্যর্থতা | |
ব্রেকিং পরিবর্তন: মডিউল-স্তরের বিল্ড স্ক্রিপ্টে নেমস্পেস প্রয়োজন
ম্যানিফেস্ট ফাইলের পরিবর্তে আপনাকে মডিউল-লেভেল build.gradle.kts ফাইলে নেমস্পেস সেট করতে হবে। আপনি AGP 7.3 দিয়ে শুরু করে namespace DSL প্রোপার্টি ব্যবহার শুরু করতে পারেন। আরও জানতে, একটি নেমস্পেস সেট করুন দেখুন।
নেমস্পেস DSL-এ মাইগ্রেট করার সময়, নিম্নলিখিত বিষয়গুলি সম্পর্কে সচেতন থাকুন:
- AGP-এর পূর্ববর্তী সংস্করণগুলি কিছু ক্ষেত্রে ভুলভাবে প্রধান নেমস্পেস বা অ্যাপ্লিকেশন আইডি থেকে পরীক্ষামূলক নেমস্পেস অনুমান করে। AGP আপগ্রেড সহকারী যদি আপনার প্রকল্পের প্রধান নেমস্পেস এবং পরীক্ষামূলক নেমস্পেস একই দেখতে পায় তবে আপগ্রেডটি ব্লক করে। যদি আপগ্রেডটি ব্লক করা থাকে, তাহলে আপনাকে ম্যানুয়ালি
testNamespaceপরিবর্তন করতে হবে এবং সেই অনুযায়ী আপনার সোর্স কোড পরিবর্তন করতে হবে। - পরীক্ষার নেমস্পেস পরিবর্তন করার পরে, আপনার কোড কম্পাইল হতে পারে কিন্তু রানটাইমে আপনার ইন্সট্রুমেন্টেড টেস্ট ব্যর্থ হতে পারে। যদি আপনার ইন্সট্রুমেন্টেড টেস্ট সোর্স কোড আপনার
androidTestএবং অ্যাপ সোর্স উভয়ের মধ্যেই সংজ্ঞায়িত কোনও রিসোর্স উল্লেখ করে তবে এটি ঘটতে পারে।
আরও তথ্যের জন্য, সংখ্যা #191813691 মন্তব্য #19 দেখুন।
ব্রেকিং পরিবর্তন: বিল্ড অপশনের ডিফল্ট মান
AGP 8.0 থেকে শুরু করে, বিল্ড পারফরম্যান্স উন্নত করার জন্য এই ফ্ল্যাগগুলির ডিফল্ট মানগুলি পরিবর্তিত হয়েছে। এই পরিবর্তনগুলির কিছু সমর্থন করার জন্য আপনার কোড সামঞ্জস্য করতে সহায়তা পেতে, AGP আপগ্রেড সহকারী ( Tools > AGP আপগ্রেড সহকারী ) ব্যবহার করুন। আপগ্রেড সহকারী আপনাকে নতুন আচরণের সাথে সামঞ্জস্য করার জন্য আপনার কোড আপডেট করার বা পূর্ববর্তী আচরণ সংরক্ষণের জন্য ফ্ল্যাগ সেট করার ক্ষেত্রে গাইড করে।
| পতাকা | নতুন ডিফল্ট মান | পূর্ববর্তী ডিফল্ট মান | মন্তব্য |
|---|---|---|---|
android.defaults.buildfeatures.buildconfig | false | true | AGP 8.0 ডিফল্টরূপে BuildConfig তৈরি করে না। আপনার যে প্রকল্পগুলিতে এটি প্রয়োজন সেখানে DSL ব্যবহার করে এই বিকল্পটি নির্দিষ্ট করতে হবে। |
android.defaults.buildfeatures.aidl | false | true | AGP 8.0 ডিফল্টরূপে AIDL সমর্থন সক্ষম করে না। আপনার যে প্রকল্পগুলিতে এটি প্রয়োজন সেখানে DSL ব্যবহার করে এই বিকল্পটি নির্দিষ্ট করতে হবে। AGP 9.0 এ এই পতাকাটি সরানোর পরিকল্পনা করা হয়েছে। |
android.defaults.buildfeatures.renderscript | false | true | AGP 8.0 ডিফল্টরূপে RenderScript সমর্থন সক্ষম করে না। আপনার যে প্রকল্পগুলিতে এটি প্রয়োজন সেখানে DSL ব্যবহার করে এই বিকল্পটি নির্দিষ্ট করতে হবে। AGP 9.0 এ এই পতাকাটি সরানোর পরিকল্পনা করা হয়েছে। |
android.nonFinalResIds | true | false | AGP 8.0 ডিফল্টরূপে নন-ফাইনাল ফিল্ড সহ R ক্লাস তৈরি করে। |
android.nonTransitiveRClass | true | false | AGP 8.0 শুধুমাত্র বর্তমান মডিউলে সংজ্ঞায়িত রিসোর্সের জন্য R ক্লাস তৈরি করে। |
android.enableR8.fullMode | true | false | AGP 8.0 ডিফল্টরূপে R8 ফুল মোড সক্ষম করে। আরও বিস্তারিত জানার জন্য, R8 ফুল মোড দেখুন। |
ব্রেকিং পরিবর্তন: জোরপূর্বক বিল্ড বিকল্প মান
AGP 8.0 দিয়ে শুরু করে, আপনি আর এই ফ্ল্যাগগুলির মান পরিবর্তন করতে পারবেন না। যদি আপনি gradle.properties ফাইলে এগুলি নির্দিষ্ট করেন, তাহলে মানটি উপেক্ষা করা হবে এবং AGP সতর্কতা প্রিন্ট করবে।
| পতাকা | জোরপূর্বক মান | মন্তব্য |
|---|---|---|
android.dependencyResolutionAtConfigurationTime.warn | true | কনফিগারেশন পর্যায়ে কনফিগারেশন রেজোলিউশন সনাক্ত করলে AGP 8.0 একটি সতর্কতা জারি করে কারণ এটি গ্রেডল কনফিগারেশনের সময়কে নেতিবাচকভাবে প্রভাবিত করে। |
android.r8.failOnMissingClasses | true | AGP 8.0 এমন বিল্ডগুলিকে ব্যর্থ করে যেগুলিতে R8 ব্যবহার করা হয় যদি উন্নত DEX অপ্টিমাইজেশন নিশ্চিত করার জন্য ক্লাস অনুপস্থিত থাকে। এটি সমাধানের জন্য, আপনাকে অনুপস্থিত লাইব্রেরিগুলি যোগ করতে হবে অথবা -dontwarn keep নিয়মগুলি যোগ করতে হবে। আরও বিস্তারিত জানার জন্য, R8 shrinker-এ মিসিং ক্লাস সতর্কতা দেখুন। |
android.testConfig.useRelativePath | true | যখন ইউনিট পরীক্ষায় অ্যান্ড্রয়েড রিসোর্স, সম্পদ এবং ম্যানিফেস্ট ব্যবহারের জন্য সমর্থন সক্রিয় করা হয়, তখন AGP 8.0 একটি test_config.properties ফাইল তৈরি করে যাতে শুধুমাত্র আপেক্ষিক পাথ থাকে। এটি নিশ্চিত করে যে অ্যান্ড্রয়েড ইউনিট পরীক্ষাগুলি সর্বদা Gradle বিল্ড ক্যাশে ব্যবহার করতে পারে। |
android.useNewJarCreator | true | বিল্ড কর্মক্ষমতা উন্নত করার জন্য JAR ফাইল তৈরি করার সময় AGP Zipflinger লাইব্রেরি ব্যবহার করে। |
android.bundletool.includeRepositoriesInDependencyReport | true | AAB এবং APK গুলিতে SDK নির্ভরতা তথ্য যোগ করা সক্রিয় থাকলে, AGP 8.0 এই তথ্যের সাথে প্রকল্প সংগ্রহস্থলের একটি তালিকাও যোগ করে। আরও জানতে, Play Console এর জন্য নির্ভরতা তথ্য দেখুন। |
android.enableArtProfiles | true | বেসলাইন প্রোফাইল এখন সর্বদা তৈরি করা হয়। বিস্তারিত জানার জন্য বেসলাইন প্রোফাইল দেখুন। |
android.enableNewResourceShrinker | true | ডিফল্টরূপে নতুন রিসোর্স শিঙ্কার বাস্তবায়ন ব্যবহার করুন। নতুন রিসোর্স শ্রিঙ্কারে গতিশীল বৈশিষ্ট্যগুলির জন্য সমর্থন অন্তর্ভুক্ত রয়েছে। |
android.enableSourceSetPathsMap | true | আপেক্ষিক রিসোর্স পাথ ম্যাপিং কম্পিউটিংয়ের জন্য ব্যবহৃত হয়, তাই গ্রেডল বিল্ডগুলি প্রায়শই আপ-টু-ডেট থাকে। |
android.cacheCompileLibResources | true | কম্পাইল করা লাইব্রেরি রিসোর্সগুলি এখন ডিফল্টরূপে ক্যাশে করা যেতে পারে কারণ গ্র্যাডেল প্রোজেক্টের অবস্থানের সাথে সম্পর্কিত রিসোর্স ফাইলগুলি ট্র্যাক করে। android.enableSourceSetPathsMap সক্ষম করা প্রয়োজন। |
android.disableAutomaticComponentCreation | true | AGP 8.0 ডিফল্টরূপে কোনও সফ্টওয়্যার কম্পোনেন্ট তৈরি করে না। পরিবর্তে AGP কেবলমাত্র প্রকাশনা DSL ব্যবহার করে প্রকাশের জন্য কনফিগার করা ভেরিয়েন্টের জন্য সফ্টওয়্যার কম্পোনেন্ট তৈরি করে। |
এক্সিকিউশন প্রোফাইলের জন্য নতুন স্থিতিশীল পতাকা
AGP-তে নতুন ফ্ল্যাগ android.settings.executionProfile অন্তর্ভুক্ত করা হয়েছে। SettingsExtension থেকে ডিফল্ট এক্সিকিউশন প্রোফাইল ওভাররাইড করতে এই ফ্ল্যাগটি ব্যবহার করুন। আরও জানতে, settings plugin ডকুমেন্টেশন দেখুন।
পরীক্ষামূলক পতাকাগুলির পূর্বরূপ দেখতে, প্রিভিউ রিলিজ নোটগুলি দেখুন।
কোটলিনের অলস সম্পত্তি অ্যাসাইনমেন্ট সমর্থিত নয়
যদি আপনি আপনার বিল্ড স্ক্রিপ্টের জন্য Gradle's Kotlin DSL ব্যবহার করেন, তাহলে মনে রাখবেন যে Android Studio এবং AGP 8.0 = অপারেটর ব্যবহার করে পরীক্ষামূলক সম্পত্তি অ্যাসাইনমেন্ট সমর্থন করে না। এই বৈশিষ্ট্য সম্পর্কে আরও তথ্যের জন্য, রিলিজ নোট এবং ডকুমেন্টেশন দেখুন।
বিল্ড অ্যানালাইজার টাস্ক বিভাগ
অ্যান্ড্রয়েড স্টুডিও ফ্লেমিঙ্গো থেকে শুরু করে, বিল্ড অ্যানালাইজারে বিল্ডের সময়কালকে প্রভাবিত করে এমন কাজের জন্য একটি নতুন ডিফল্ট ভিউ রয়েছে। যদি আপনার প্রকল্প AGP 8.0 বা উচ্চতর ব্যবহার করে, তাহলে পৃথকভাবে কাজগুলি প্রদর্শনের পরিবর্তে, বিল্ড অ্যানালাইজার সেগুলিকে বিভাগ অনুসারে গোষ্ঠীভুক্ত করে। উদাহরণস্বরূপ, অ্যান্ড্রয়েড রিসোর্সেস, কোটলিন, বা ডেক্সিংয়ের জন্য নির্দিষ্ট কাজগুলিকে একসাথে গোষ্ঠীভুক্ত করা হয় এবং তারপর বিল্ড সময়কাল অনুসারে সাজানো হয়। এর ফলে কোন বিভাগটি বিল্ড সময়ের উপর সবচেয়ে বেশি প্রভাব ফেলে তা জানা সহজ হয়। প্রতিটি বিভাগ প্রসারিত করলে সংশ্লিষ্ট কাজের একটি তালিকা প্রদর্শিত হয়। গ্রুপিং ছাড়াই পৃথকভাবে কাজগুলি প্রদর্শন করতে, ড্রপ-ডাউন দ্বারা গ্রুপ ব্যবহার করুন।

নতুন সেটিংস প্লাগইন
AGP 8.0.0-alpha09 নতুন সেটিংস প্লাগইন চালু করেছে। সেটিংস প্লাগইন আপনাকে গ্লোবাল কনফিগারেশনগুলিকে কেন্দ্রীভূত করতে দেয়—সমস্ত মডিউলের জন্য প্রযোজ্য কনফিগারেশনগুলি—এক জায়গায় যাতে আপনাকে একাধিক মডিউলে কনফিগারেশনগুলি কপি এবং পেস্ট করতে না হয়। এছাড়াও, আপনি টুল এক্সিকিউশন প্রোফাইল তৈরি করতে, অথবা একটি টুল কীভাবে চালাবেন তার জন্য বিভিন্ন নির্দেশাবলী তৈরি করতে এবং তাদের মধ্যে স্যুইচ করতে সেটিংস প্লাগইন ব্যবহার করতে পারেন।
সেটিংস প্লাগইন ব্যবহার করতে, settings.gradle ফাইলে প্লাগইনটি প্রয়োগ করুন:
apply plugin 'com.android.settings'
বিশ্বব্যাপী কনফিগারেশন কেন্দ্রীভূত করুন
গ্লোবাল কনফিগারেশন কনফিগার করতে, settings.gradle ফাইলে নতুন android ব্লক ব্যবহার করুন। এখানে একটি উদাহরণ দেওয়া হল:
android {
compileSdk 31
minSdk 28
...
}
টুল এক্সিকিউশন প্রোফাইল
সেটিংস প্লাগইন আপনাকে কিছু টুলের জন্য এক্সিকিউশন প্রোফাইল তৈরি করতে দেয়। একটি এক্সিকিউশন প্রোফাইল নির্ধারণ করে যে একটি টুল কীভাবে চালানো হবে; আপনি পরিবেশের উপর নির্ভর করে বিভিন্ন এক্সিকিউশন প্রোফাইল নির্বাচন করতে পারেন। একটি এক্সিকিউশন প্রোফাইলে, আপনি একটি টুলের জন্য JVM আর্গুমেন্ট সেট করতে পারেন এবং এটিকে একটি পৃথক প্রক্রিয়ায় চালানোর জন্য কনফিগার করতে পারেন। বর্তমানে, শুধুমাত্র R8 টুল সমর্থিত।
নিম্নলিখিত উদাহরণে দেখানো settings.gradle ফাইলে এক্সিকিউশন প্রোফাইল তৈরি করুন এবং ডিফল্ট এক্সিকিউশন প্রোফাইল সেট করুন:
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
ডিফল্ট প্রোফাইল ওভাররাইড করতে, gradle.properties ফাইলে android.experimental.settings.executionProfile প্রপার্টি ব্যবহার করে একটি ভিন্ন প্রোফাইল নির্বাচন করুন:
android.experimental.settings.executionProfile=high
আপনি কমান্ড লাইন ব্যবহার করেও এই বৈশিষ্ট্যটি সেট করতে পারেন, যা আপনাকে বিভিন্ন ওয়ার্কফ্লো সেট আপ করতে দেয়। উদাহরণস্বরূপ, যদি আপনার একটি ক্রমাগত ইন্টিগ্রেশন ওয়ার্কফ্লো থাকে তবে আপনি settings.gradle ফাইলটি পরিবর্তন না করেই এক্সিকিউশন প্রোফাইল পরিবর্তন করতে কমান্ড লাইন ব্যবহার করতে পারেন:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
AGP 8.0 চালানোর জন্য JDK 17 প্রয়োজন
আপনার অ্যাপ তৈরি করার জন্য Android Gradle Plugin 8.0 ব্যবহার করার সময়, Gradle চালানোর জন্য JDK 17 এখন প্রয়োজন। Android Studio Flamingo JDK 17 কে একত্রিত করে এবং Gradle কে ডিফল্টরূপে ব্যবহারের জন্য কনফিগার করে, যার অর্থ হল বেশিরভাগ Android Studio ব্যবহারকারীদের তাদের প্রকল্পগুলিতে কোনও কনফিগারেশন পরিবর্তন করার প্রয়োজন হয় না।
যদি আপনাকে অ্যান্ড্রয়েড স্টুডিওর ভিতরে AGP দ্বারা ব্যবহৃত JDK সংস্করণটি ম্যানুয়ালি সেট করতে হয়, তাহলে আপনাকে JDK 17 বা তার উচ্চতর সংস্করণ ব্যবহার করতে হবে।
অ্যান্ড্রয়েড স্টুডিওর থেকে আলাদা AGP ব্যবহার করার সময়, JAVA_HOME এনভায়রনমেন্ট ভেরিয়েবল অথবা -Dorg.gradle.java.home কমান্ড-লাইন বিকল্পটি JDK 17 এর ইনস্টলেশন ডিরেক্টরিতে সেট করে JDK সংস্করণ আপগ্রেড করুন।
সমস্যা সমাধান করা হয়েছে
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.2
| সমস্যা সমাধান করা হয়েছে | |||||
|---|---|---|---|---|---|
| শ্রিঙ্কার (R8) |
| ||||
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.1
| সমস্যা সমাধান করা হয়েছে | ||||
|---|---|---|---|---|
| শ্রিঙ্কার (R8) |
| |||
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.0
| সমস্যা সমাধান করা হয়েছে | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ডেক্সার (D8) |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| লিন্ট |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| লিন্ট ইন্টিগ্রেশন |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| শ্রিঙ্কার (R8) |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||