অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.0 (এপ্রিল 2023)

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.0 একটি বড় রিলিজ যাতে বিভিন্ন ধরনের নতুন বৈশিষ্ট্য এবং উন্নতি রয়েছে।

সামঞ্জস্য

ন্যূনতম সংস্করণ ডিফল্ট সংস্করণ নোট
গ্রেডল ৮.০ ৮.০ আরও জানতে, Gradle আপডেট করা দেখুন।
SDK বিল্ড টুলস 30.0.3 30.0.3 SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন
এনডিকে N/A 25.1.8937393 NDK এর একটি ভিন্ন সংস্করণ ইনস্টল বা কনফিগার করুন
জেডিকে 17 17 আরও জানতে, JDK সংস্করণ সেট করা দেখুন।

প্যাচ রিলিজ

নিচে Android Gradle Plugin 8.0 এর জন্য প্যাচ রিলিজের একটি তালিকা রয়েছে।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.2 (মে 2023)

AGP 8.0.2 এ সংশোধন করা বাগগুলির একটি তালিকার জন্য, Android Studio 2022.2.1 বন্ধ হওয়া সমস্যাগুলি দেখুন।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.1 (মে 2023)

এই ছোটখাট আপডেটে নিম্নলিখিত বাগ ফিক্সগুলি অন্তর্ভুক্ত রয়েছে:

স্থির সমস্যা
ত্রুটি: 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-এ স্থানান্তরিত করার সময়, নিম্নলিখিত বিষয়গুলি সম্পর্কে সচেতন থাকুন:

  • এজিপির পূর্ববর্তী সংস্করণগুলি কিছু ক্ষেত্রে ভুলভাবে মূল নামস্থান বা অ্যাপ্লিকেশন আইডি থেকে পরীক্ষার নামস্থান অনুমান করে। AGP আপগ্রেড সহকারী আপগ্রেড ব্লক করে যদি এটি দেখে যে আপনার প্রকল্পের প্রধান নামস্থান এবং পরীক্ষার নামস্থান একই। আপগ্রেড ব্লক করা হলে, আপনাকে ম্যানুয়ালি testNamespace পরিবর্তন করতে হবে এবং সেই অনুযায়ী আপনার সোর্স কোড পরিবর্তন করতে হবে।
  • আপনি পরীক্ষার নামস্থান পরিবর্তন করার পরে, এটি সম্ভব যে আপনার কোড কম্পাইল করা হয় কিন্তু আপনার যন্ত্রযুক্ত পরীক্ষা রানটাইমে ব্যর্থ হয়। এটি ঘটতে পারে যদি আপনার ইনস্ট্রুমেন্টেড টেস্ট সোর্স কোড আপনার androidTest এবং অ্যাপ সোর্স উভয়েই সংজ্ঞায়িত একটি রিসোর্স উল্লেখ করে।

আরও তথ্যের জন্য, সংখ্যা #191813691 মন্তব্য #19 দেখুন।

ব্রেকিং পরিবর্তন: বিল্ড বিকল্প ডিফল্ট মান

AGP 8.0 দিয়ে শুরু করে, বিল্ড পারফরম্যান্স উন্নত করতে এই পতাকার ডিফল্ট মানগুলি পরিবর্তিত হয়েছে। এই পরিবর্তনগুলির কিছু সমর্থন করার জন্য আপনার কোড সামঞ্জস্য করতে সহায়তা পেতে, AGP আপগ্রেড সহকারী ( টুলস > 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 ডিফল্টরূপে রেন্ডারস্ক্রিপ্ট সমর্থন সক্ষম করে না। আপনার প্রয়োজন যেখানে প্রকল্পগুলিতে 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 একটি সতর্কতা নির্গত করে যদি এটি কনফিগারেশন পর্বের সময় কনফিগারেশন রেজোলিউশন সনাক্ত করে কারণ এটি Gradle কনফিগারেশন সময়কে নেতিবাচকভাবে প্রভাবিত করে।
android.r8.failOnMissingClasses true AGP 8.0 ব্যর্থ হয় এমন বিল্ড যা R8 ব্যবহার করে যদি ভালো DEX অপ্টিমাইজেশন নিশ্চিত করতে ক্লাস অনুপস্থিত থাকে। এটি মোকাবেলা করার জন্য, আপনাকে অনুপস্থিত লাইব্রেরিগুলি যোগ করতে হবে বা -dontwarn রাখার নিয়মগুলি যোগ করতে হবে। আরও বিশদ বিবরণের জন্য, R8 সংকোচনে অনুপস্থিত ক্লাস সতর্কতা দেখুন।
android.testConfig.useRelativePath true যখন ইউনিট পরীক্ষায় অ্যান্ড্রয়েড রিসোর্স, সম্পদ এবং ম্যানিফেস্ট ব্যবহার করার জন্য সমর্থন সক্ষম করা হয়, তখন AGP 8.0 একটি test_config.properties ফাইল তৈরি করে যাতে শুধুমাত্র আপেক্ষিক পাথ থাকে। এটি নিশ্চিত করে যে অ্যান্ড্রয়েড ইউনিট পরীক্ষা সবসময় গ্রেডল বিল্ড ক্যাশে ব্যবহার করতে পারে।
android.useNewJarCreator true বিল্ড কর্মক্ষমতা উন্নত করতে JAR ফাইল তৈরি করার সময় AGP Zipflinger লাইব্রেরি ব্যবহার করে।
android.bundletool.includeRepositoriesInDependencyReport true AABs এবং APKগুলিতে SDK নির্ভরতা তথ্য যোগ করার সময়, AGP 8.0 এই তথ্যের সাথে প্রকল্প সংগ্রহস্থলগুলির একটি তালিকাও যোগ করে। আরও জানতে, প্লে কনসোলের নির্ভরতার তথ্য দেখুন।
android.enableArtProfiles true বেসলাইন প্রোফাইলগুলি এখন সর্বদা তৈরি হয়। বিস্তারিত জানার জন্য বেসলাইন প্রোফাইল দেখুন।
android.enableNewResourceShrinker true ডিফল্টরূপে নতুন সম্পদ শিঙ্কার বাস্তবায়ন ব্যবহার করুন। নতুন সম্পদ সঙ্কুচিত গতিশীল বৈশিষ্ট্য জন্য সমর্থন অন্তর্ভুক্ত.
android.enableSourceSetPathsMap true আপেক্ষিক রিসোর্স পাথ ম্যাপিং কম্পিউট করার জন্য ব্যবহৃত হয়, তাই Gradle বিল্ডগুলি প্রায়শই আপ-টু-ডেট থাকে।
android.cacheCompileLibResources true কম্পাইল করা লাইব্রেরি সংস্থানগুলি এখন ডিফল্টরূপে ক্যাশে করা যেতে পারে কারণ গ্রেডল প্রকল্পের অবস্থানের সাথে সম্পর্কিত সংস্থান ফাইলগুলিকে ট্র্যাক করে। android.enableSourceSetPathsMap সক্রিয় করার প্রয়োজন।
android.disableAutomaticComponentCreation true AGP 8.0 ডিফল্টরূপে কোনো সফটওয়্যার কম্পোনেন্ট তৈরি করে না। পরিবর্তে AGP শুধুমাত্র প্রকাশনা DSL ব্যবহার করে প্রকাশ করার জন্য কনফিগার করা ভেরিয়েন্টের জন্য Software Components তৈরি করে।

এক্সিকিউশন প্রোফাইলের জন্য নতুন স্থিতিশীল পতাকা

AGP নতুন পতাকা android.settings.executionProfile অন্তর্ভুক্ত করে। SettingsExtension থেকে ডিফল্ট এক্সিকিউশন প্রোফাইল ওভাররাইড করতে এই পতাকাটি ব্যবহার করুন। আরও জানতে, সেটিংস প্লাগইন ডকুমেন্টেশন দেখুন।

পরীক্ষামূলক পতাকাগুলির পূর্বরূপ দেখতে, প্রিভিউ রিলিজ নোটগুলি দেখুন।

Kotlin অলস সম্পত্তি নিয়োগ সমর্থিত নয়

আপনি যদি আপনার বিল্ড স্ক্রিপ্টের জন্য 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 প্রয়োজন। অ্যান্ড্রয়েড স্টুডিও ফ্ল্যামিঙ্গো JDK 17 বান্ডিল করে এবং এটিকে ডিফল্টরূপে ব্যবহার করার জন্য গ্র্যাডলকে কনফিগার করে, যার মানে হল যে বেশিরভাগ অ্যান্ড্রয়েড স্টুডিও ব্যবহারকারীদের তাদের প্রকল্পগুলিতে কোনও কনফিগারেশন পরিবর্তন করতে হবে না।

আপনি যদি Android স্টুডিওর ভিতরে AGP দ্বারা ব্যবহৃত JDK সংস্করণটি ম্যানুয়ালি সেট করতে চান তবে আপনাকে JDK 17 বা উচ্চতর ব্যবহার করতে হবে।

অ্যান্ড্রয়েড স্টুডিও থেকে স্বাধীন এজিপি ব্যবহার করার সময়, JAVA_HOME এনভায়রনমেন্ট ভেরিয়েবল বা -Dorg.gradle.java.home কমান্ড-লাইন বিকল্পটি আপনার JDK 17 এর ইনস্টলেশন ডিরেক্টরিতে সেট করে JDK সংস্করণ আপগ্রেড করুন।

স্থির সমস্যা

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.0

স্থায়ী সমস্যা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
MergeResources টাস্কে ফ্ল্যাকি বিল্ড ব্যর্থতা
JavaPlugin Convention এবং HasConvention বাতিল করা হয়েছে
নতুন রূপান্তর API-এর জন্য ভুল এবং অসঙ্গত ফাইল অবস্থান
অ্যান্ড্রয়েড গ্রেডল প্লাগইনের অবচয়িত GUtil.toWords(স্ট্রিং) ফাংশন ব্যবহার করা উচিত নয়
অ্যান্ড্রয়েড গ্রেডল প্লাগইন অবচ্যুত ConfigureUtil.configure(ক্লোজার, টার্গেট) ফাংশন ব্যবহার করা উচিত নয়
KGP 1.7.20-Beta ব্যবহার করতে AGP পরীক্ষা আপডেট করুন
Gradle 7.4 ব্যর্থ হয় (AnalyticsService-এর উদাহরণ তৈরি করা যায়নি)
AGP 7.4.0-alpha09-এ javac থেকে নতুন "অজানা enum ধ্রুবক"
MergeGeneratedProguardFilesCreationAction কনফিগারেশন ধীর এমনকি কনফিগারেশন ক্যাশিং চালু থাকা সত্ত্বেও
[এজিপি] আইডিই মডেলে (ভেরিয়েন্ট এপিআই) জেনারেটেড সোর্স ডিরেক্টরি যোগ করুন
JavaPlugin Convention এবং HasConvention বাতিল করা হয়েছে
ডিফল্টরূপে R8 এ উপেক্ষামূলক সতর্কতা যোগ করবেন না
যখন প্রোগার্ড ফাইলগুলি বিদ্যমান না থাকে তখন সতর্ক করুন৷
AGP 7.3.0 গ্রেডল প্ল্যাটফর্ম প্রকল্পগুলির জন্য গ্রেডল সিঙ্ক ভেঙে দেয়
apksig লাইব্রেরি: ApkVerifier$Result.getV4SchemeSigners() ব্যক্তিগত হিসেবে চিহ্নিত
কভারেজ সক্ষম না থাকলে androidJacocoAnt কনফিগারেশন তৈরি করা বন্ধ করুন
লাইব্রেরি কম্পোনেন্টে @IntDef ব্যবহার করলে aar-এ annotations.zip তৈরি হয় না
জন্য সাধারণ সুপার টাইপ খুঁজে পেতে অক্ষম এবং
LINT_PRINT_STACKTRACE=true-এর একটি গ্রেডল প্রপার্টি সংস্করণ যোগ করুন
বাসি প্রিফ্যাব আর্টিফ্যাক্টগুলি AAR-তে প্যাকেজ করা হচ্ছে
অবচয় সতর্কতা মোকাবেলা করতে গন্তব্য সম্পত্তি থেকে আউটপুট অবস্থান সম্পত্তিতে স্থানান্তর করুন এবং গ্রেডল 9.0 এর জন্য প্রস্তুত হন
JavaCompile টাস্ক সেট আপ করার সময় `--release` পতাকাকে বিবেচনায় রাখুন
[AGP-7.3.0-beta03] ShrinkResourcesNewShrinkerTask ব্যর্থ হয় যখন xml ঘোষণার পরে একটি খালি লাইন থাকে
lintVital টার্গেট ডিবাগ ভেরিয়েন্টে ডিফল্টভাবে চালানো হয়
যখন প্রোগার্ড ফাইলগুলি বিদ্যমান না থাকে তখন সতর্ক করুন৷
AGP টাস্ক এক্সিকিউশন ফেজে kotlinOptions.freeCompilerArgs যোগ করার চেষ্টা করে
গ্রেডল সিঙ্ক ব্যর্থ হয়েছে: সিঙ্ক ব্যর্থ হয়েছে: কারণ অজানা৷
DependencyReportTask কনফিগারেশন ক্যাশের সাথে বেমানান
build.gradle-এ resValue সহ সম্পদ ওভাররাইড করা ত্রুটির দিকে নিয়ে যায়: ডুপ্লিকেট সম্পদ
'ডিবাগ' বিল্ড টাইপের ডিফল্ট সাইনিং কী আছে, অন্যদের নেই
গতিশীল বৈশিষ্ট্য ব্যবহার করা এবং সম্পদ সঙ্কুচিত হওয়ার ফলে রানটাইম ক্র্যাশ হয়
'ডিবাগ' বিল্ড টাইপের ডিফল্ট সাইনিং কী আছে, অন্যদের নেই
লিন্ট মডেলের প্রধান উৎস প্রদানকারীতে জাভা ডিরেক্টরি হিসাবে তালিকাভুক্ত উৎস ডিরেক্টরি তৈরি করা হয়েছে
গ্রেডল 8.0-মাইলস্টোন-2 এজিপি-তে ব্যতিক্রম ঘটায়
অ্যাপ এবং লাইব্রেরির জন্য ম্যানিফেস্ট মার্জিং অপ্টিমাইজ করুন
javadoc প্রজন্মে gradle-settings-api যোগ করুন
AGP 7.4.0-alpha09-এ javac থেকে নতুন "অজানা enum ধ্রুবক"
AGP 7.4.0-alpha09 এমন বিল্ড তৈরি করে যা Firebase অ্যাপ ডিস্ট্রিবিউশনে আপলোড করবে না
মডিউলে lint.xml লিন্ট কাজের UP-TO-DATE চেকের জন্য বিবেচনা করা হয় না
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.0+ এবং অ্যান্ড্রয়েড টেস্ট সমস্যা: রিসোর্স খুঁজে পাওয়া যাচ্ছে না: আইডি
configureCMakeDebug নাল পয়েন্টার ব্যতিক্রম সহ ফ্ল্যাকিলি ক্র্যাশ হচ্ছে
IllegalAccessError প্রকল্প AS2022.2.1.5, FireBasePerfPlugin-এ আপগ্রেড করা
ক্রিপ্টিক ত্রুটির সাথে সিঙ্ক ব্যর্থ হয় "সংগ্রহে প্রিডিকেটের সাথে মেলে এমন কোনো উপাদান নেই।"
ইনস্ট্রুমেন্টেশন API স্থানীয় ফাইল নির্ভরতা রূপান্তরিত করে না
7.4 বিটা 1 তে আপডেট করার সময় `AnnotationProcessorOptions.arguments জিজ্ঞাসা করা হয়` ত্রুটি
Gradle পাবলিক প্লাগইনগুলি gradle-api-এ সরান এবং BasePlugin.getExtension সরান
r8.jvmArgs ব্যবহার করা হয় না
AGP-এর জন্য ন্যূনতম সংস্করণ হিসাবে JDK17 প্রয়োজন৷
AGP 8.0.0 A8 বেসলাইন প্রোফাইল ভেঙে দেয়
AGP 8.0 এ CheckAarMetadataTask বার্তায় 'compileSdkVersion' কে 'compileSdk' এ পরিবর্তন করুন
AGP 7.4.0-rc01 ভেরিয়েন্ট এপিআইকে ভেঙে দেয় "টাস্ক '...' সম্পন্ন হওয়ার আগে মানচিত্রের ম্যাপ করা মান (প্রদানকারী(java.util.Set)) জিজ্ঞাসা করা সমর্থিত নয়"
কনফিগারেশন ক্যাশের সাথে `com.android.build.gradle.tasks.ShaderCompile` সমস্যা
এজিপি এপিআই ব্যবহার করে জাভা রিসোর্সে যোগ করা কনফিগারেশন ক্যাশে ব্রেক করে
লিন্ট প্লাগইন gradle-api-এর অংশ নয়
DexingFileDependenciesTask.outputKeepRules একটি ডিরেক্টরি কিন্তু একটি আউটপুটফাইল হিসাবে চিহ্নিত
AGP 7.4-এ আপগ্রেড করার ফলে একটি StackOverflowError হয়
processDebugUnitTestManifest পরীক্ষার ভেরিয়েন্টের জন্য ম্যানিফেস্ট স্থানধারকদের সাথে ব্যর্থ হচ্ছে
লিন্ট নির্ভরতা ছাড়াই উৎস সেট তথ্য অ্যাক্সেস করে
বিল্ড ত্রুটি API স্তর 34 বোঝায়, যা বিদ্যমান নেই
"আমরা একটি নতুন Android Gradle প্লাগইন ব্যবহার করার পরামর্শ দিই" যখন একটি নতুন না থাকে
android.injected.testOnly=false কাজ করে না
ডেক্সার (D8)
AS ক্যানারি 6 থেকে 7 আপগ্রেড করার পরে গ্লোবাল সিনথেটিক্স সম্পর্কিত ডেক্স মার্জিং ত্রুটি
Kotlin মেটাডেটা লাইব্রেরি 0.6.0 সংস্করণে আপডেট করুন
API স্তর 28-30 এ JDK-8272564 এর জন্য ওয়ার্কআউন্ড প্রয়োজন বলে মনে হচ্ছে
লিন্ট
রিসোর্স টাইপ লিন্ট চেক কোটলিন উত্সের জন্য কাজ করছে না
VersionChecks কোটলিন রেঞ্জ চেক পরিচালনা করে না
মোড়ানো হলে InlinedApi-এর জন্য মিথ্যা পজিটিভ
OpenInputStream সম্পর্কিত লিন্ট মিথ্যা পজিটিভ রিসাইকেল
[BuildTool/Lint] ChecksSdkIntAtLeast কনস্ট্রাক্টর সম্পত্তি
লিন্ট: আংশিক ফলাফল মার্জিং ভুলভাবে কাজ করে
অ্যান্ড্রয়েড স্টুডিও ভুলভাবে নির্দিষ্ট সংস্করণটিকে পুরানো হিসাবে চিহ্নিত করেছে৷
AndroidDeprecationInspection.DeprecationFilter EP কখনই android-plugin.xml ফাইলে নিবন্ধিত হয় না
অ্যাক্সেসিবিলিটি ডিটেক্টর লিন্ট চেক ব্যাখ্যা পুরানো
Lint SDK_INT চেকগুলিকে অস্থায়ী স্থানীয় ভেরিয়েবল বোঝা উচিত৷
TestMode.TYPE_ALIAS ফাংশন প্রকারকে টাইপলিয়াস দিয়ে প্রতিস্থাপন করার সময় ত্রুটি
বাগ: যখন অবজেক্ট অ্যানিমেটর বর্তমান কোড ব্লকের বাইরে তৈরি করা হয়, তখন এটি শুরু না করার মিথ্যা-ইতিবাচক সতর্কতা রয়েছে #38
লিন্ট: শুধুমাত্র মার্জ মোডে অ্যাপ্লিকেশন ইন্সট্যান্স জিজ্ঞাসা করার কারণে NPE
NonConstantResourceId লিন্ট নিয়ম রিসোর্স আইডি থেকে ধ্রুবক মান নির্ধারণ করতে সনাক্ত করতে পারে না
ভিউ আইডিতে ত্রুটি দেখাচ্ছে না
লিন্ট রিসোর্স ক্যাশে ডিসিরিয়ালাইজ করতে ব্যর্থতার ফলে লিন্ট ত্রুটি দেখা দেয় (কিন্তু একটি সতর্কতা হওয়া উচিত)
AGP Flamingo Alpha 8 Lint NewApi Desugar Regression
TypedArray#close (API 31) desugared না কিন্তু AS-এর সাহায্যে রিসোর্স ব্যবহার করার সময় সতর্কতা প্রদর্শন করে না
লিন্ট কল রিসিভারের জন্য বৈধ কাস্ট চেক করে না
লিন্ট শুধুমাত্র সরাসরি বাস্তবায়িত ইন্টারফেসের জন্য নিরাপদ কাস্ট পরীক্ষা করে, উত্তরাধিকারসূত্রে প্রাপ্ত নয়
লিন্ট ইন্টিগ্রেশন
বেসলাইন ফাইল বর্তমানে লিন্ট কাজের একটি ইনপুট এবং একটি আউটপুট
সঙ্কুচিত (R8)
CF ফ্রেম যাচাইকারীতে এনপিই / দাবী ত্রুটি
ফিল্ড লুকআপ ক্যাশে অপসারণের পরে রিগ্রেশন
`:app:minifyVariantWithR8` AGP 7.4.0-beta02-এ একটি NullPointerException নিক্ষেপ করে
R8: ClassNotFoundException when -allowaccessmodification
মেটাডেটাতে প্রসঙ্গ রিসিভারের জন্য সমর্থন যোগ করুন
java.lang.VerifyError: যাচাইকারী androidx.compose.ui.graphics.colorspace.o ক্লাস প্রত্যাখ্যান করেছে: void androidx.compose.ui.graphics.colorspace.o। (java.lang.Object) যাচাই করতে ব্যর্থ হয়েছে: void androidx.compose.ui.graphics.colorspace.o। (java.lang.Object): [0x0] ইনস্ট্যান্স ফিল্ড java.lang.Object androidx.compose.ui.graphics.colorspace.na টাইপের অবজেক্ট থেকে অ্যাক্সেস করতে পারে না সুনির্দিষ্ট রেফারেন্স: androidx.compose.ui.graphics.colorspace.o
AGP 7.4.0/7.3.1 - একটি অ ধাক্কা যোগ্য সারিবদ্ধ কাজের তালিকায় একটি অ্যাকশন সারিবদ্ধ করার চেষ্টা
রেন্ডারস্ক্রিপ্ট কোড ছোট করা: AGP 7.3.1 থেকে 7.4.0 এ আপগ্রেড করার সময় বিশাল কর্মক্ষমতা হ্রাস

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.1

স্থায়ী সমস্যা
সঙ্কুচিত (R8)
ত্রুটি: AGP 7.2.2 -> 7.4.0 আপগ্রেড করার পরে "সারণীতে প্রদত্ত আইডি সহ কোন সংস্করণের প্রয়োজন নেই"
markTypeAsLive AGP 7.4.1 এ R8 NullPointerException
[R8 4.0.53] Android 11-এ হার্ড ক্লাস যাচাইকরণ ব্যর্থতা

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.2

স্থায়ী সমস্যা
সঙ্কুচিত (R8)
ArrayIndexOutOfBoundsException সহ কম্পোজ বিল্ডের সময় R8 ব্যর্থ হয়
VerifyError: Kotlin 1.8.20 এর সাথে R8 ব্যবহার করার সময় যাচাইকারী ক্লাস প্রত্যাখ্যান করেছে
AGP 8-এ R8 Google Fit পরিষেবা ভেঙে দেয়
ইনপুট নামগুলিকে ওভারল্যাপ করে এমন অবশিষ্ট নামগুলির সাথে উত্স ফাইলের তথ্য সহ সঠিকভাবে উপস্থাপন করা হয় না

,

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.0 একটি বড় রিলিজ যাতে বিভিন্ন ধরনের নতুন বৈশিষ্ট্য এবং উন্নতি রয়েছে।

সামঞ্জস্য

ন্যূনতম সংস্করণ ডিফল্ট সংস্করণ নোট
গ্রেডল ৮.০ ৮.০ আরও জানতে, Gradle আপডেট করা দেখুন।
SDK বিল্ড টুলস 30.0.3 30.0.3 SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন
এনডিকে N/A 25.1.8937393 NDK এর একটি ভিন্ন সংস্করণ ইনস্টল বা কনফিগার করুন
জেডিকে 17 17 আরও জানতে, JDK সংস্করণ সেট করা দেখুন।

প্যাচ রিলিজ

নিচে Android Gradle Plugin 8.0 এর জন্য প্যাচ রিলিজের একটি তালিকা রয়েছে।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.2 (মে 2023)

AGP 8.0.2 এ সংশোধন করা বাগগুলির একটি তালিকার জন্য, Android Studio 2022.2.1 বন্ধ হওয়া সমস্যাগুলি দেখুন।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.1 (মে 2023)

এই ছোটখাট আপডেটে নিম্নলিখিত বাগ ফিক্সগুলি অন্তর্ভুক্ত রয়েছে:

স্থির সমস্যা
ত্রুটি: 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-এ স্থানান্তরিত করার সময়, নিম্নলিখিত বিষয়গুলি সম্পর্কে সচেতন থাকুন:

  • এজিপির পূর্ববর্তী সংস্করণগুলি কিছু ক্ষেত্রে ভুলভাবে মূল নামস্থান বা অ্যাপ্লিকেশন আইডি থেকে পরীক্ষার নামস্থান অনুমান করে। AGP আপগ্রেড সহকারী আপগ্রেড ব্লক করে যদি এটি দেখে যে আপনার প্রকল্পের প্রধান নামস্থান এবং পরীক্ষার নামস্থান একই। আপগ্রেড ব্লক করা হলে, আপনাকে ম্যানুয়ালি testNamespace পরিবর্তন করতে হবে এবং সেই অনুযায়ী আপনার সোর্স কোড পরিবর্তন করতে হবে।
  • আপনি পরীক্ষার নামস্থান পরিবর্তন করার পরে, এটি সম্ভব যে আপনার কোড কম্পাইল করা হয় কিন্তু আপনার যন্ত্রযুক্ত পরীক্ষা রানটাইমে ব্যর্থ হয়। এটি ঘটতে পারে যদি আপনার ইনস্ট্রুমেন্টেড টেস্ট সোর্স কোড আপনার androidTest এবং অ্যাপ সোর্স উভয়েই সংজ্ঞায়িত একটি রিসোর্স উল্লেখ করে।

আরও তথ্যের জন্য, সংখ্যা #191813691 মন্তব্য #19 দেখুন।

ব্রেকিং পরিবর্তন: বিল্ড বিকল্প ডিফল্ট মান

AGP 8.0 দিয়ে শুরু করে, বিল্ড পারফরম্যান্স উন্নত করতে এই পতাকার ডিফল্ট মানগুলি পরিবর্তিত হয়েছে। এই পরিবর্তনগুলির কিছু সমর্থন করার জন্য আপনার কোড সামঞ্জস্য করতে সহায়তা পেতে, AGP আপগ্রেড সহকারী ( টুলস > 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 ডিফল্টরূপে রেন্ডারস্ক্রিপ্ট সমর্থন সক্ষম করে না। আপনার প্রয়োজন যেখানে প্রকল্পগুলিতে 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 একটি সতর্কতা নির্গত করে যদি এটি কনফিগারেশন পর্বের সময় কনফিগারেশন রেজোলিউশন সনাক্ত করে কারণ এটি Gradle কনফিগারেশন সময়কে নেতিবাচকভাবে প্রভাবিত করে।
android.r8.failOnMissingClasses true AGP 8.0 ব্যর্থ হয় এমন বিল্ড যা R8 ব্যবহার করে যদি ভালো DEX অপ্টিমাইজেশন নিশ্চিত করতে ক্লাস অনুপস্থিত থাকে। এটি মোকাবেলা করার জন্য, আপনাকে অনুপস্থিত লাইব্রেরিগুলি যোগ করতে হবে বা -dontwarn রাখার নিয়মগুলি যোগ করতে হবে। আরও বিশদ বিবরণের জন্য, R8 সংকোচনে অনুপস্থিত ক্লাস সতর্কতা দেখুন।
android.testConfig.useRelativePath true যখন ইউনিট পরীক্ষায় অ্যান্ড্রয়েড রিসোর্স, সম্পদ এবং ম্যানিফেস্ট ব্যবহার করার জন্য সমর্থন সক্ষম করা হয়, তখন AGP 8.0 একটি test_config.properties ফাইল তৈরি করে যাতে শুধুমাত্র আপেক্ষিক পাথ থাকে। এটি নিশ্চিত করে যে অ্যান্ড্রয়েড ইউনিট পরীক্ষা সবসময় গ্রেডল বিল্ড ক্যাশে ব্যবহার করতে পারে।
android.useNewJarCreator true বিল্ড কর্মক্ষমতা উন্নত করতে JAR ফাইল তৈরি করার সময় AGP Zipflinger লাইব্রেরি ব্যবহার করে।
android.bundletool.includeRepositoriesInDependencyReport true AABs এবং APKগুলিতে SDK নির্ভরতা তথ্য যোগ করার সময়, AGP 8.0 এই তথ্যের সাথে প্রকল্প সংগ্রহস্থলগুলির একটি তালিকাও যোগ করে। আরও জানতে, প্লে কনসোলের নির্ভরতার তথ্য দেখুন।
android.enableArtProfiles true বেসলাইন প্রোফাইলগুলি এখন সর্বদা তৈরি হয়। বিস্তারিত জানার জন্য বেসলাইন প্রোফাইল দেখুন।
android.enableNewResourceShrinker true ডিফল্টরূপে নতুন সম্পদ শিঙ্কার বাস্তবায়ন ব্যবহার করুন। নতুন সম্পদ সঙ্কুচিত গতিশীল বৈশিষ্ট্য জন্য সমর্থন অন্তর্ভুক্ত.
android.enableSourceSetPathsMap true আপেক্ষিক রিসোর্স পাথ ম্যাপিং কম্পিউট করার জন্য ব্যবহৃত হয়, তাই Gradle বিল্ডগুলি প্রায়শই আপ-টু-ডেট থাকে।
android.cacheCompileLibResources true কম্পাইল করা লাইব্রেরি সংস্থানগুলি এখন ডিফল্টরূপে ক্যাশে করা যেতে পারে কারণ গ্রেডল প্রকল্পের অবস্থানের সাথে সম্পর্কিত সংস্থান ফাইলগুলিকে ট্র্যাক করে। android.enableSourceSetPathsMap সক্রিয় করার প্রয়োজন।
android.disableAutomaticComponentCreation true AGP 8.0 ডিফল্টরূপে কোনো সফটওয়্যার কম্পোনেন্ট তৈরি করে না। পরিবর্তে AGP শুধুমাত্র প্রকাশনা DSL ব্যবহার করে প্রকাশ করার জন্য কনফিগার করা ভেরিয়েন্টের জন্য Software Components তৈরি করে।

এক্সিকিউশন প্রোফাইলের জন্য নতুন স্থিতিশীল পতাকা

AGP নতুন পতাকা android.settings.executionProfile অন্তর্ভুক্ত করে। SettingsExtension থেকে ডিফল্ট এক্সিকিউশন প্রোফাইল ওভাররাইড করতে এই পতাকাটি ব্যবহার করুন। আরও জানতে, সেটিংস প্লাগইন ডকুমেন্টেশন দেখুন।

পরীক্ষামূলক পতাকাগুলির পূর্বরূপ দেখতে, প্রিভিউ রিলিজ নোটগুলি দেখুন।

Kotlin অলস সম্পত্তি নিয়োগ সমর্থিত নয়

আপনি যদি আপনার বিল্ড স্ক্রিপ্টের জন্য 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 প্রয়োজন। অ্যান্ড্রয়েড স্টুডিও ফ্ল্যামিঙ্গো JDK 17 বান্ডিল করে এবং এটিকে ডিফল্টরূপে ব্যবহার করার জন্য গ্র্যাডলকে কনফিগার করে, যার মানে হল যে বেশিরভাগ অ্যান্ড্রয়েড স্টুডিও ব্যবহারকারীদের তাদের প্রকল্পগুলিতে কোনও কনফিগারেশন পরিবর্তন করতে হবে না।

আপনি যদি Android স্টুডিওর ভিতরে AGP দ্বারা ব্যবহৃত JDK সংস্করণটি ম্যানুয়ালি সেট করতে চান তবে আপনাকে JDK 17 বা উচ্চতর ব্যবহার করতে হবে।

অ্যান্ড্রয়েড স্টুডিও থেকে স্বাধীন এজিপি ব্যবহার করার সময়, JAVA_HOME এনভায়রনমেন্ট ভেরিয়েবল বা -Dorg.gradle.java.home কমান্ড-লাইন বিকল্পটি আপনার JDK 17 এর ইনস্টলেশন ডিরেক্টরিতে সেট করে JDK সংস্করণ আপগ্রেড করুন।

স্থির সমস্যা

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.0

স্থায়ী সমস্যা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
MergeResources টাস্কে ফ্ল্যাকি বিল্ড ব্যর্থতা
JavaPlugin Convention এবং HasConvention বাতিল করা হয়েছে
নতুন রূপান্তর API-এর জন্য ভুল এবং অসঙ্গত ফাইল অবস্থান
অ্যান্ড্রয়েড গ্রেডল প্লাগইনের অবচয়িত GUtil.toWords(স্ট্রিং) ফাংশন ব্যবহার করা উচিত নয়
অ্যান্ড্রয়েড গ্রেডল প্লাগইন অবচ্যুত ConfigureUtil.configure(ক্লোজার, টার্গেট) ফাংশন ব্যবহার করা উচিত নয়
KGP 1.7.20-Beta ব্যবহার করতে AGP পরীক্ষা আপডেট করুন
Gradle 7.4 ব্যর্থ হয় (AnalyticsService-এর উদাহরণ তৈরি করা যায়নি)
AGP 7.4.0-alpha09-এ javac থেকে নতুন "অজানা enum ধ্রুবক"
MergeGeneratedProguardFilesCreationAction কনফিগারেশন ধীর এমনকি কনফিগারেশন ক্যাশিং চালু থাকা সত্ত্বেও
[এজিপি] আইডিই মডেলে (ভেরিয়েন্ট এপিআই) জেনারেটেড সোর্স ডিরেক্টরি যোগ করুন
JavaPlugin Convention এবং HasConvention বাতিল করা হয়েছে
ডিফল্টরূপে R8 এ উপেক্ষামূলক সতর্কতা যোগ করবেন না
যখন প্রোগার্ড ফাইলগুলি বিদ্যমান না থাকে তখন সতর্ক করুন৷
AGP 7.3.0 গ্রেডল প্ল্যাটফর্ম প্রকল্পগুলির জন্য গ্রেডল সিঙ্ক ভেঙে দেয়
apksig লাইব্রেরি: ApkVerifier$Result.getV4SchemeSigners() ব্যক্তিগত হিসেবে চিহ্নিত
কভারেজ সক্ষম না থাকলে androidJacocoAnt কনফিগারেশন তৈরি করা বন্ধ করুন
লাইব্রেরি কম্পোনেন্টে @IntDef ব্যবহার করলে aar-এ annotations.zip তৈরি হয় না
জন্য সাধারণ সুপার টাইপ খুঁজে পেতে অক্ষম এবং
LINT_PRINT_STACKTRACE=true-এর একটি গ্রেডল প্রপার্টি সংস্করণ যোগ করুন
বাসি প্রিফ্যাব আর্টিফ্যাক্টগুলি AAR-তে প্যাকেজ করা হচ্ছে
অবচয় সতর্কতা মোকাবেলা করতে গন্তব্য সম্পত্তি থেকে আউটপুট অবস্থান সম্পত্তিতে স্থানান্তর করুন এবং গ্রেডল 9.0 এর জন্য প্রস্তুত হন
JavaCompile টাস্ক সেট আপ করার সময় `--release` পতাকাকে বিবেচনায় রাখুন
[AGP-7.3.0-beta03] ShrinkResourcesNewShrinkerTask ব্যর্থ হয় যখন xml ঘোষণার পরে একটি খালি লাইন থাকে
lintVital টার্গেট ডিবাগ ভেরিয়েন্টে ডিফল্টভাবে চালানো হয়
যখন প্রোগার্ড ফাইলগুলি বিদ্যমান না থাকে তখন সতর্ক করুন৷
AGP টাস্ক এক্সিকিউশন ফেজে kotlinOptions.freeCompilerArgs যোগ করার চেষ্টা করে
গ্রেডল সিঙ্ক ব্যর্থ হয়েছে: সিঙ্ক ব্যর্থ হয়েছে: কারণ অজানা৷
DependencyReportTask কনফিগারেশন ক্যাশের সাথে বেমানান
build.gradle-এ resValue সহ সম্পদ ওভাররাইড করা ত্রুটির দিকে নিয়ে যায়: ডুপ্লিকেট সম্পদ
'ডিবাগ' বিল্ড টাইপের ডিফল্ট সাইনিং কী আছে, অন্যদের নেই
গতিশীল বৈশিষ্ট্য ব্যবহার করা এবং সম্পদ সঙ্কুচিত হওয়ার ফলে রানটাইম ক্র্যাশ হয়
'ডিবাগ' বিল্ড টাইপের ডিফল্ট সাইনিং কী আছে, অন্যদের নেই
লিন্ট মডেলের প্রধান উৎস প্রদানকারীতে জাভা ডিরেক্টরি হিসাবে তালিকাভুক্ত উৎস ডিরেক্টরি তৈরি করা হয়েছে
গ্রেডল 8.0-মাইলস্টোন-2 এজিপি-তে ব্যতিক্রম ঘটায়
অ্যাপ এবং লাইব্রেরির জন্য ম্যানিফেস্ট মার্জিং অপ্টিমাইজ করুন
javadoc প্রজন্মে gradle-settings-api যোগ করুন
AGP 7.4.0-alpha09-এ javac থেকে নতুন "অজানা enum ধ্রুবক"
AGP 7.4.0-alpha09 এমন বিল্ড তৈরি করে যা Firebase অ্যাপ ডিস্ট্রিবিউশনে আপলোড করবে না
মডিউলে lint.xml লিন্ট কাজের UP-TO-DATE চেকের জন্য বিবেচনা করা হয় না
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.0+ এবং অ্যান্ড্রয়েড টেস্ট সমস্যা: রিসোর্স খুঁজে পাওয়া যাচ্ছে না: আইডি
configureCMakeDebug নাল পয়েন্টার ব্যতিক্রম সহ ফ্ল্যাকিলি ক্র্যাশ হচ্ছে
IllegalAccessError প্রকল্প AS2022.2.1.5, FireBasePerfPlugin-এ আপগ্রেড করা
ক্রিপ্টিক ত্রুটির সাথে সিঙ্ক ব্যর্থ হয় "সংগ্রহে প্রিডিকেটের সাথে মেলে এমন কোনো উপাদান নেই।"
ইনস্ট্রুমেন্টেশন API স্থানীয় ফাইল নির্ভরতা রূপান্তরিত করে না
7.4 বিটা 1 তে আপডেট করার সময় `AnnotationProcessorOptions.arguments জিজ্ঞাসা করা হয়` ত্রুটি
Gradle পাবলিক প্লাগইনগুলি gradle-api-এ সরান এবং BasePlugin.getExtension সরান
r8.jvmArgs ব্যবহার করা হয় না
AGP-এর জন্য ন্যূনতম সংস্করণ হিসাবে JDK17 প্রয়োজন৷
AGP 8.0.0 A8 বেসলাইন প্রোফাইল ভেঙে দেয়
AGP 8.0 এ CheckAarMetadataTask বার্তায় 'compileSdkVersion' কে 'compileSdk' এ পরিবর্তন করুন
AGP 7.4.0-rc01 ভেরিয়েন্ট এপিআইকে ভেঙে দেয় "টাস্ক '...' সম্পন্ন হওয়ার আগে মানচিত্রের ম্যাপ করা মান (প্রদানকারী(java.util.Set)) জিজ্ঞাসা করা সমর্থিত নয়"
কনফিগারেশন ক্যাশের সাথে `com.android.build.gradle.tasks.ShaderCompile` সমস্যা
এজিপি এপিআই ব্যবহার করে জাভা রিসোর্সে যোগ করা কনফিগারেশন ক্যাশে ব্রেক করে
লিন্ট প্লাগইন gradle-api-এর অংশ নয়
DexingFileDependenciesTask.outputKeepRules একটি ডিরেক্টরি কিন্তু একটি আউটপুটফাইল হিসাবে চিহ্নিত
AGP 7.4-এ আপগ্রেড করার ফলে একটি StackOverflowError হয়
processDebugUnitTestManifest পরীক্ষার ভেরিয়েন্টের জন্য ম্যানিফেস্ট স্থানধারকদের সাথে ব্যর্থ হচ্ছে
লিন্ট নির্ভরতা ছাড়াই উৎস সেট তথ্য অ্যাক্সেস করে
বিল্ড ত্রুটি API স্তর 34 বোঝায়, যা বিদ্যমান নেই
"আমরা একটি নতুন Android Gradle প্লাগইন ব্যবহার করার পরামর্শ দিই" যখন একটি নতুন না থাকে
android.injected.testOnly=false কাজ করে না
ডেক্সার (D8)
AS ক্যানারি 6 থেকে 7 আপগ্রেড করার পরে গ্লোবাল সিনথেটিক্স সম্পর্কিত ডেক্স মার্জিং ত্রুটি
Kotlin মেটাডেটা লাইব্রেরি 0.6.0 সংস্করণে আপডেট করুন
API স্তর 28-30 এ JDK-8272564 এর জন্য ওয়ার্কআউন্ড প্রয়োজন বলে মনে হচ্ছে
লিন্ট
রিসোর্স টাইপ লিন্ট চেক কোটলিন উত্সের জন্য কাজ করছে না
VersionChecks কোটলিন রেঞ্জ চেক পরিচালনা করে না
মোড়ানো হলে InlinedApi-এর জন্য মিথ্যা পজিটিভ
OpenInputStream সম্পর্কিত লিন্ট মিথ্যা পজিটিভ রিসাইকেল
[BuildTool/Lint] ChecksSdkIntAtLeast কনস্ট্রাক্টর সম্পত্তি
লিন্ট: আংশিক ফলাফল মার্জিং ভুলভাবে কাজ করে
অ্যান্ড্রয়েড স্টুডিও ভুলভাবে নির্দিষ্ট সংস্করণটিকে পুরানো হিসাবে চিহ্নিত করেছে৷
Androideprecationinspection.deprecationFilter EP কখনও Android-plugin.xml ফাইলে নিবন্ধিত হয় না
অ্যাক্সেসিবিলিটিডেক্টর লিন্ট চেক ব্যাখ্যা পুরানো
লিন্ট এসডিকে_ইন্ট চেকগুলি অস্থায়ী স্থানীয় ভেরিয়েবলগুলি বুঝতে হবে
ত্রুটি যখন টেস্টমোড. টাইপ_লিয়াস ফাংশন প্রকারটি টাইপলিয়াসের সাথে প্রতিস্থাপন করুন
বাগ: যখন বর্তমান কোড ব্লকের বাইরে অবজেক্টনিমেটার তৈরি করা হয়, তখন এটি #38 শুরু না করার মিথ্যা-পজিটিভ সতর্কতা রয়েছে
লিন্ট: NPE মার্জিনলি মোডে অ্যাপ্লিকেশন উদাহরণ জিজ্ঞাসা করার কারণে
ননকনস্ট্যান্ট্রেসোর্সআইডি লিন্ট বিধি রিসোর্স আইডি থেকে ধ্রুবক মান নির্ধারণ করতে সনাক্ত করতে পারে না
ভিউ আইডিতে ত্রুটি দেখাচ্ছে না
লিন্ট রিসোর্সগুলি ক্যাশে করতে ব্যর্থতার ফলে একটি লিন্ট ত্রুটির ফলস্বরূপ (তবে একটি সতর্কতা হওয়া উচিত)
এজিপি ফ্লেমিংগো আলফা 8 লিন্ট নবীপি ডিসুগার রিগ্রেশন
টাইপডারে#ক্লোজ (এপিআই 31) ডিসুগার্ড নয় তবে চেষ্টাগুলি-রিসোর্সগুলিতে ব্যবহার করার সময় সতর্কতা প্রদর্শন করে না
লিন্ট কল রিসিভারগুলির জন্য বৈধ কাস্টগুলি পরীক্ষা করে না
লিন্ট কেবল সরাসরি প্রয়োগ করা ইন্টারফেসগুলির জন্য নিরাপদ ক্যাসেটগুলি পরীক্ষা করে, উত্তরাধিকার সূত্রে প্রাপ্ত নয়
লিন্ট ইন্টিগ্রেশন
বেসলাইন ফাইলটি বর্তমানে একটি ইনপুট এবং লিন্ট কার্যগুলির একটি আউটপুট
সঙ্কুচিত (আর 8)
সিএফ ফ্রেম যাচাইকারী এনপিই / দৃ ser ় ত্রুটি
ফিল্ড লুকআপ ক্যাশে অপসারণের পরে রিগ্রেশন
`: অ্যাপ্লিকেশন: মিনিফাইভারিয়ানটিউইথ্র 8` এজিপি 7.4.0-বিটা 02 এ একটি নালপোইন্টার এক্সসেপশন নিক্ষেপ করে
আর 8: ক্লাসনটফাউন্ড এক্সসেপশন যখন -অলোঅ্যাকসেসমোডিফিকেশন
মেটাডেটাতে প্রসঙ্গ রিসিভারগুলির জন্য সমর্থন যুক্ত করুন
java.lang.veryifyerror: যাচাইকারী শ্রেণি androidx.compose.ui.graphics.colorspace.o: অকার্যকর androidx.compose.ui.graphics.colorspace.o। (java.lang.object) যাচাই করতে ব্যর্থ হয়েছে: অকার্যকর androidx.compose.ui.graphics.colorspace.o। (java.lang.object): [0x0] উদাহরণস্বরূপ ফিল্ড java.lang.object androidx.compose.ui.graphics.colorspace.na অ্যাক্সেস করতে পারে না
এজিপি 7.4.0/7.3.1 - একটি পুশযোগ্য এনকুয়ার কাজের তালিকায় কোনও ক্রিয়া করার চেষ্টা করুন
মাইনিং রেন্ডারস্ক্রিপ্ট কোড: 7.3.1 থেকে 7.4.0 থেকে এজিপিকে আপগ্রেড করার সময় বিশাল পারফরম্যান্স ড্রপ

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.1

স্থায়ী সমস্যা
সঙ্কুচিত (আর 8)
ত্রুটি: "টেবিলে প্রদত্ত আইডিটির সাথে কোনও সংস্করণআরকিয়ারমেন্ট নেই" এজিপি 7.2.2 -> 7.4.0 আপগ্রেড করার পরে
R8 NullpointerExcept Marktypeaslive agp 7.4.1 এ
[আর 8 4.0.53] অ্যান্ড্রয়েড 11 এ হার্ড ক্লাস যাচাইকরণ ব্যর্থতা

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.2

স্থায়ী সমস্যা
সঙ্কুচিত (আর 8)
আর 8 কমপোজ চলাকালীন অ্যারেআইএনডিএক্সআউটফবাউন্ডসেক্সেপশন সহ বিল্ডিং ব্যর্থ হয়
ভেরিফাইরর: কোটলিন 1.8.20 এর সাথে আর 8 ব্যবহার করার সময় যাচাইকারী শ্রেণি প্রত্যাখাত ক্লাস
এজিপি 8 এ আর 8 গুগল ফিট পরিষেবা বিরতি দেয়
ইনপুট নামগুলি ওভারল্যাপ করে এমন অবশিষ্ট নাম সহ উত্স ফাইলের তথ্য সহ সঠিকভাবে প্রতিনিধিত্ব করা হয় না