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

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

সামঞ্জস্যতা

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

প্যাচ রিলিজ

নিচে অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.০-এর প্যাচ রিলিজগুলোর তালিকা দেওয়া হলো।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.০.২ (মে ২০২৩)

AGP 8.0.2-এ সমাধান করা বাগগুলির তালিকার জন্য, Android Studio 2022.2.1-এর বন্ধ ইস্যুগুলি দেখুন।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.০.১ (মে ২০২৩)

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

সমাধান করা সমস্যাগুলি
AGP 7.2.2 থেকে 7.4.0-এ আপগ্রেড করার পর ত্রুটি: "টেবিলে প্রদত্ত আইডি সহ কোনো VersionRequirement নেই"।
R8 NullPointerException at markTypeAsLive AGP 7.4.1
[R8 4.0.53] অ্যান্ড্রয়েড ১১-এ হার্ড ক্লাস ভেরিফিকেশন ব্যর্থতা

বড় পরিবর্তন: মডিউল-স্তরের বিল্ড স্ক্রিপ্টে নেমস্পেস আবশ্যক।

আপনাকে ম্যানিফেস্ট ফাইলের পরিবর্তে মডিউল-স্তরের build.gradle.kts ফাইলে নেমস্পেস সেট করতে হবে। আপনি AGP 7.3 থেকে namespace DSL প্রপার্টি ব্যবহার শুরু করতে পারেন। আরও জানতে, "একটি নেমস্পেস সেট করুন " দেখুন।

নেমস্পেস ডিএসএল-এ স্থানান্তরিত করার সময় নিম্নলিখিত বিষয়গুলো সম্পর্কে সচেতন থাকুন:

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

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

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

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

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

কোটলিনে লেজি প্রপার্টি অ্যাসাইনমেন্ট সমর্থিত নয়

আপনি যদি আপনার বিল্ড স্ক্রিপ্টের জন্য গ্রেডলের কোটলিন ডিএসএল (Gradle's Kotlin DSL) ব্যবহার করেন, তবে মনে রাখবেন যে অ্যান্ড্রয়েড স্টুডিও এবং এজিপি ৮.০ (AGP 8.0) ‘ = অপারেটর ব্যবহার করে পরীক্ষামূলক প্রপার্টি অ্যাসাইনমেন্ট সমর্থন করে না। এই বৈশিষ্ট্যটি সম্পর্কে আরও তথ্যের জন্য, রিলিজ নোট এবং ডকুমেন্টেশন দেখুন।

অ্যানালাইজার টাস্ক বিভাগ তৈরি করুন

অ্যান্ড্রয়েড স্টুডিও ফ্লেমিঙ্গো থেকে শুরু করে, বিল্ড অ্যানালাইজারে সেইসব টাস্কের জন্য একটি নতুন ডিফল্ট ভিউ রয়েছে যা বিল্ডের সময়কালকে প্রভাবিত করে। যদি আপনার প্রজেক্টে AGP 8.0 বা তার উচ্চতর সংস্করণ ব্যবহৃত হয়, তাহলে টাস্কগুলোকে আলাদাভাবে দেখানোর পরিবর্তে বিল্ড অ্যানালাইজার সেগুলোকে ক্যাটাগরি অনুযায়ী গ্রুপ করে। উদাহরণস্বরূপ, অ্যান্ড্রয়েড রিসোর্স, কোটলিন বা ডেক্সিং-এর জন্য নির্দিষ্ট টাস্কগুলোকে একসাথে গ্রুপ করা হয় এবং তারপর বিল্ডের সময়কাল অনুসারে সাজানো হয়। এর ফলে কোন ক্যাটাগরিটি বিল্ডের সময়ের উপর সবচেয়ে বেশি প্রভাব ফেলে, তা সহজেই জানা যায়। প্রতিটি ক্যাটাগরি এক্সপ্যান্ড করলে সংশ্লিষ্ট টাস্কগুলোর একটি তালিকা দেখা যায়। গ্রুপ না করে টাস্কগুলো আলাদাভাবে দেখতে, 'Group by ' ড্রপ-ডাউনটি ব্যবহার করুন।

অ্যানালাইজার টাস্ক ক্যাটাগরি তৈরি করুন।

নতুন সেটিংস প্লাগইন

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 প্রয়োজন।

আপনার অ্যাপ বিল্ড করার জন্য যখন অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.০ ব্যবহার করা হয়, তখন গ্রেডল চালানোর জন্য এখন জেডিকে ১৭ প্রয়োজন। অ্যান্ড্রয়েড স্টুডিও ফ্লেমিঙ্গো জেডিকে ১৭ বান্ডল করে এবং ডিফল্টরূপে এটি ব্যবহার করার জন্য গ্রেডলকে কনফিগার করে দেয়, যার অর্থ হলো বেশিরভাগ অ্যান্ড্রয়েড স্টুডিও ব্যবহারকারীকে তাদের প্রোজেক্টে কোনো কনফিগারেশন পরিবর্তন করতে হয় না।

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

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

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

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

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

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

সমাধান করা সমস্যাগুলি
সঙ্কোচনকারী (R8)
AGP 7.2.2 থেকে 7.4.0-এ আপগ্রেড করার পর ত্রুটি: "টেবিলে প্রদত্ত আইডি সহ কোনো VersionRequirement নেই"।
R8 NullPointerException at markTypeAsLive AGP 7.4.1
[R8 4.0.53] অ্যান্ড্রয়েড ১১-এ হার্ড ক্লাস ভেরিফিকেশন ব্যর্থতা

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

সমাধান করা সমস্যাগুলি
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
MergeResources টাস্কে ত্রুটিপূর্ণ বিল্ড ব্যর্থতা
JavaPluginConvention এবং HasConvention এখন অপ্রচলিত।
নতুন ট্রান্সফর্ম এপিআই-এর জন্য ফাইলের অবস্থান ভুল এবং অসঙ্গত।
অ্যান্ড্রয়েড গ্রেডল প্লাগইনে অপ্রচলিত GUtil.toWords(string) ফাংশনটি ব্যবহার করা উচিত নয়।
অ্যান্ড্রয়েড গ্রেডল প্লাগইনে অপ্রচলিত ConfigureUtil.configure(closure, target) ফাংশনটি ব্যবহার করা উচিত নয়।
AGP টেস্টগুলো KGP 1.7.20-Beta ব্যবহার করার জন্য আপডেট করুন।
Gradle 7.4 ব্যর্থ হয়েছে (AnalyticsService-এর ইনস্ট্যান্স তৈরি করা যায়নি)
AGP 7.4.0-alpha09-এ javac থেকে নতুন "অজানা enum ধ্রুবক"
কনফিগারেশন ক্যাশিং চালু থাকা সত্ত্বেও MergeGeneratedProguardFilesCreationAction কনফিগারেশনটি ধীরগতির।
[AGP] IDE মডেলে জেনারেট করা সোর্স ডিরেক্টরি যোগ করুন (ভেরিয়েন্ট API)
JavaPluginConvention এবং HasConvention এখন অপ্রচলিত।
ডিফল্টরূপে R8-এ ignorewarnings যোগ করবেন না।
প্রোগার্ড ফাইল বিদ্যমান না থাকলে সতর্ক করুন।
AGP 7.3.0, gradle platform প্রোজেক্টগুলোর জন্য gradle sync-কে অকার্যকর করে দেয়।
apksig লাইব্রেরি: ApkVerifier$Result.getV4SchemeSigners() কে প্রাইভেট হিসেবে চিহ্নিত করা হয়েছে।
কভারেজ সক্রিয় না থাকলে androidJacocoAnt কনফিগারেশন তৈরি করা বন্ধ করুন।
লাইব্রেরি কম্পোনেন্টে @IntDef ব্যবহার করলে aar ফাইলে annotations.zip তৈরি হয় না।
এর জন্য সাধারণ সুপার টাইপ খুঁজে পাওয়া যায়নি এবং
LINT_PRINT_STACKTRACE=true এর একটি গ্রেডল প্রপার্টি সংস্করণ যোগ করুন।
পুরনো প্রিফ্যাব আর্টিফ্যাক্টগুলো AAR-এ প্যাকেজ করা হচ্ছে
ডেপ্রিকেশন ওয়ার্নিং সমাধান করতে এবং গ্রেডল ৯.০-এর জন্য প্রস্তুত হতে ডেস্টিনেশন প্রপার্টির পরিবর্তে আউটপুটলোকেশন প্রপার্টি ব্যবহার করুন।
JavaCompile টাস্ক সেট আপ করার সময় `--release` ফ্ল্যাগটি বিবেচনায় নিন।
[AGP-7.3.0-beta03] xml ডিক্লারেশনের পরে খালি লাইন থাকলে ShrinkResourcesNewShrinkerTask ব্যর্থ হয়।
ডিবাগ ভ্যারিয়েন্টে lintVital টার্গেট ডিফল্টরূপে রান হয়।
প্রোগার্ড ফাইল বিদ্যমান না থাকলে সতর্ক করুন।
AGP টাস্ক এক্সিকিউশন পর্যায়ে kotlinOptions.freeCompilerArgs যোগ করার চেষ্টা করে।
গ্রেডল সিঙ্ক ব্যর্থ হয়েছে: কারণ অজানা
DependencyReportTask কনফিগারেশন ক্যাশের সাথে বেমানান।
build.gradle-এ resValue দিয়ে রিসোর্স ওভাররাইড করলে Error: Duplicate resources দেখা দেয়।
'ডিবাগ' বিল্ড টাইপের একটি ডিফল্ট সাইনিং কী থাকে, অন্যগুলোর থাকে না।
ডাইনামিক ফিচার ব্যবহার এবং রিসোর্স সঙ্কুচনের কারণে রানটাইম ক্র্যাশ হতে পারে।
'ডিবাগ' বিল্ড টাইপের একটি ডিফল্ট সাইনিং কী থাকে, অন্যগুলোর থাকে না।
লিন্ট মডেলের প্রধান সোর্স প্রোভাইডারে তৈরি হওয়া সোর্স ডিরেক্টরিটি জাভা ডিরেক্টরি হিসেবে তালিকাভুক্ত হয়েছে।
Gradle 8.0-milestone-2 এর কারণে AGP-তে এক্সেপশন ঘটছে।
অ্যাপ এবং লাইব্রেরির জন্য ম্যানিফেস্ট মার্জিং অপ্টিমাইজ করুন
জাভাডক জেনারেশনে gradle-settings-api যোগ করুন
AGP 7.4.0-alpha09-এ javac থেকে নতুন "অজানা enum ধ্রুবক"
AGP 7.4.0-alpha09 এমন বিল্ড তৈরি করে যা Firebase App Distribution-এ আপলোড হয় না।
লিন্ট টাস্কগুলোর হালনাগাদ যাচাইয়ের জন্য মডিউলের lint.xml ফাইলটিকে বিবেচনা করা হয় না।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৭.০+ এবং অ্যান্ড্রয়েড টেস্টের সমস্যা: রিসোর্স খুঁজে পাওয়া যাচ্ছে না: id
configureCMakeDebug মাঝে মাঝে null pointer exception-এর কারণে ক্র্যাশ করছে
প্রজেক্টটি AS2022.2.1.5-এ আপগ্রেড করার সময় IllegalAccessError, FireBasePerfPlugin
"Collection contains no element matching the predicate." এই দুর্বোধ্য ত্রুটির কারণে সিঙ্ক ব্যর্থ হয়েছে।
ইন্সট্রুমেন্টেশন এপিআই স্থানীয় ফাইল নির্ভরতা রূপান্তর করে না
7.4 বিটা 1-এ আপডেট করার সময় `AnnotationProcessorOptions.arguments are queried` ত্রুটি।
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 ভ্যারিয়েন্ট API-কে অকার্যকর করে দেয়, যার ফলে "টাস্ক '...' সম্পন্ন হওয়ার আগে map(provider(java.util.Set))-এর ম্যাপ করা মান কোয়েরি করা সমর্থিত নয়" এই ত্রুটিটি দেখা দেয়।
`com.android.build.gradle.tasks.ShaderCompile` কনফিগারেশন ক্যাশে সংক্রান্ত সমস্যা
AGP API ব্যবহার করে জাভা রিসোর্সে কিছু যোগ করলে কনফিগারেশন ক্যাশে নষ্ট হয়ে যায়।
লিন্ট প্লাগইন গ্রেডল-এপিআই এর অংশ নয়
DexingFileDependenciesTask.outputKeepRules একটি ডিরেক্টরি হলেও এটিকে আউটপুট ফাইল হিসেবে চিহ্নিত করা হয়েছে।
AGP 7.4-এ আপগ্রেড করার ফলে একটি StackOverflowError দেখা দেয়।
টেস্ট ভ্যারিয়েন্টগুলির জন্য ম্যানিফেস্ট প্লেসহোল্ডার থাকার কারণে processDebugUnitTestManifest ব্যর্থ হচ্ছে।
লিন্ট কোনো নির্ভরতা ছাড়াই সোর্স সেটের তথ্য অ্যাক্সেস করে।
বিল্ড ত্রুটিটি এপিআই লেভেল ৩৪-কে নির্দেশ করছে, যার কোনো অস্তিত্ব নেই।
যখন কোনো নতুন প্লাগইন উপলব্ধ না থাকে, তখন "আমরা একটি নতুন অ্যান্ড্রয়েড গ্রেডল প্লাগইন ব্যবহার করার পরামর্শ দিই"।
android.injected.testOnly=false কাজ করে না
ডেক্সার (ডি৮)
AS Canary 6 থেকে 7-এ আপগ্রেড করার পর গ্লোবাল সিন্থেটিকস সম্পর্কিত Dex মার্জিং ত্রুটি দেখা দিয়েছে।
কোটলিন মেটাডেটা লাইব্রেরি সংস্করণ 0.6.0-এ আপডেট করুন।
এপিআই লেভেল ২৮-৩০-এ JDK-8272564-এর জন্য একটি বিকল্প সমাধানের প্রয়োজন বলে মনে হচ্ছে।
লিন্ট
কোটলিন সোর্সগুলির জন্য ResourceType লিন্ট চেক কাজ করছে না।
VersionChecks কোটলিন রেঞ্জ চেক পরিচালনা করে না।
র‍্যাপ করা হলে InlinedApi-এর জন্য ফলস পজিটিভ।
openInputStream সংক্রান্ত লিন্ট ফলস পজিটিভ রিসাইকেল।
[BuildTool/Lint] ChecksSdkIntAtLeast কনস্ট্রাক্টর প্রপার্টি
Lint: PartialResults মার্জিং সঠিকভাবে কাজ করছে না
অ্যান্ড্রয়েড স্টুডিও ভুলবশত নির্দিষ্ট সংস্করণটিকে পুরোনো হিসেবে চিহ্নিত করে।
android-plugin.xml ফাইলে AndroidDeprecationInspection.DeprecationFilter EP কখনও নিবন্ধিত হয় না।
AccessibilityDetector লিন্ট চেকের ব্যাখ্যাটি পুরোনো হয়ে গেছে।
Lint SDK_INT চেকগুলোর অস্থায়ী স্থানীয় ভেরিয়েবল বোঝা উচিত।
TestMode.TYPE_ALIAS যখন ফাংশন টাইপকে টাইপএলিয়াস দিয়ে প্রতিস্থাপন করে তখন ত্রুটি হয়।
বাগ: যখন ObjectAnimator বর্তমান কোড ব্লকের বাইরে তৈরি করা হয়, তখন এটি শুরু না হওয়ার ভুল সতর্কতা দেখা দেয় #38
Lint: mergeOnly মোডে অ্যাপ্লিকেশন ইনস্ট্যান্স কোয়েরি করার কারণে NPE।
NonConstantResourceId লিন্ট রুলটি রিসোর্স আইডি থেকে ধ্রুবক মান নির্ধারণ করা সনাক্ত করতে পারে না।
ভিউ আইডিতে ত্রুটি দেখাচ্ছে না
লিন্ট রিসোর্স ক্যাশে ডিসিরিয়ালাইজ করতে ব্যর্থ হলে একটি লিন্ট এরর হয় (কিন্তু এটি একটি ওয়ার্নিং হওয়া উচিত)।
AGP Flamingo Alpha 8 Lint NewApi Desugar Regression
TypedArray#close (API 31) ডিসুগার করা হয়নি, কিন্তু try-with-resources-এ ব্যবহার করা হলে AS কোনো সতর্কবার্তা প্রদর্শন করে না।
লিন্ট কল রিসিভারদের জন্য বৈধ কাস্ট পরীক্ষা করে না।
লিন্ট শুধুমাত্র সরাসরি ইমপ্লিমেন্টেড ইন্টারফেসের জন্য সেফ কাস্ট পরীক্ষা করে, ইনহেরিটেড ইন্টারফেসের জন্য নয়।
লিন্ট ইন্টিগ্রেশন
বেসলাইন ফাইল বর্তমানে লিন্ট টাস্কের ইনপুট এবং আউটপুট উভয় হিসেবেই কাজ করে।
সঙ্কোচনকারী (R8)
CF ফ্রেম ভেরিফায়ারে NPE / অ্যাসারশন ত্রুটি
ফিল্ড লুকআপ ক্যাশে অপসারণের পর রিগ্রেশন
AGP 7.4.0-beta02-এ `:app:minifyVariantWithR8` একটি NullPointerException থ্রো করে।
R8: -allowaccessmodification ব্যবহার করার সময় ClassNotFoundException
মেটাডেটাতে কনটেক্সট রিসিভারের জন্য সমর্থন যোগ করুন
java.lang.VerifyError: Verifier প্রত্যাখ্যাত ক্লাস 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] Precise Reference: androidx.compose.ui.graphics.colorspace.o টাইপের অবজেক্ট থেকে java.lang.Object androidx.compose.ui.graphics.colorspace.na ইনস্ট্যান্স ফিল্ডটি অ্যাক্সেস করা যাচ্ছে না।
AGP 7.4.0/7.3.1 - একটি নন-পুশেবল এনকিউয়ার ওয়ার্ক লিস্টে কোনো অ্যাকশন এনকিউ করার প্রচেষ্টা
রেন্ডারস্ক্রিপ্ট কোড মিনিফাই করার ফলে AGP 7.3.1 থেকে 7.4.0-এ আপগ্রেড করার সময় পারফরম্যান্সে ব্যাপক অবনতি ঘটে।