অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.1.0 (জানুয়ারি 2022)
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.1.0 একটি বড় রিলিজ যাতে বিভিন্ন ধরনের নতুন বৈশিষ্ট্য এবং উন্নতি রয়েছে।
7.1.3 (এপ্রিল 2022)
এই ছোটখাট আপডেটে নিম্নলিখিত বাগ ফিক্সগুলি অন্তর্ভুক্ত রয়েছে:
- R8 দ্বারা রিপোর্ট করা ডুপ্লিকেট ক্লাস সমস্যা
এই রিলিজে অন্তর্ভুক্ত বাগ ফিক্সের একটি সম্পূর্ণ তালিকা দেখতে, Android Studio Bumblebee Patch 3 ব্লগ পোস্টটি দেখুন।
7.1.2 (ফেব্রুয়ারি 2022)
এই ছোটখাট আপডেটে নিম্নলিখিত বাগ ফিক্সগুলি অন্তর্ভুক্ত রয়েছে:
- Android Gradle Plugin 7.1.0-rc01 ইউনিট পরীক্ষার সময় ASM বাইটকোড রূপান্তর করতে ব্যর্থ হয়
- Gradle সিঙ্ক "ক্লাস 'com.android.build.api.extension.AndroidComponentsExtension' লোড করতে অক্ষম।"
- অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.0.0 এ গ্রোভি ডিএসএল থেকে কিছু নতুন ডিএসএল ব্লক ব্যবহার করা যাবে না
- AGP 7.1 নতুন প্রকাশনা API: তৈরি করা javadoc জার স্বাক্ষরিত হয় না
- ClassesDataSourceCache সর্বশেষ Asm সংস্করণ ব্যবহার করা উচিত
- অ্যান্ড্রয়েড স্টুডিও বাম্বলবি সর্বদা সর্বশেষ পরিবর্তনগুলি স্থাপন করে না
এই রিলিজে অন্তর্ভুক্ত বাগ ফিক্সের একটি সম্পূর্ণ তালিকা দেখতে, Android Studio Bumblebee Patch 2 ব্লগ পোস্টটি দেখুন।
7.1.1 (ফেব্রুয়ারি 2022)
এই ছোটখাট আপডেটটি অ্যান্ড্রয়েড স্টুডিও বাম্বলবি প্যাচ 1 এর প্রকাশের সাথে মিলে যায়।
এই রিলিজে অন্তর্ভুক্ত বাগ ফিক্সের একটি তালিকা দেখতে, Android Studio Bumblebee Patch 1 ব্লগ পোস্ট দেখুন।
সামঞ্জস্য
ন্যূনতম সংস্করণ | ডিফল্ট সংস্করণ | নোট | |
---|---|---|---|
গ্রেডল | 7.2 | 7.2 | আরও জানতে, Gradle আপডেট করা দেখুন। |
SDK বিল্ড টুলস | 30.0.3 | 30.0.3 | SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন । |
এনডিকে | N/A | 21.4.7075529 | NDK এর একটি ভিন্ন সংস্করণ ইনস্টল বা কনফিগার করুন । |
জেডিকে | 11 | 11 | আরও জানতে, JDK সংস্করণ সেট করা দেখুন। |
লিন্ট বিশ্লেষণ টাস্ক এখন ক্যাশেযোগ্য
AndroidLintAnalysisTask
এখন Gradle বিল্ড ক্যাশের সাথে সামঞ্জস্যপূর্ণ। আপনি যদি আপনার gradle.properties
ফাইলে org.gradle.caching=true
সেট করে বিল্ড ক্যাশে সক্রিয় করেন, লিন্ট বিশ্লেষণ কাজটি সম্ভব হলে বিল্ড ক্যাশে থেকে তার আউটপুট পাবে।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন দিয়ে লিন্ট চালানোর সময় লিন্ট বিশ্লেষণের কাজটি প্রায়শই সবচেয়ে বড় বাধা হয়ে দাঁড়ায়, তাই বিল্ড ক্যাশে সক্রিয় করা অনেক পরিস্থিতিতে লিন্ট চালানোর সময় বিল্ড গতিকে উন্নত করে। আপনি একটি লক্ষণীয় কর্মক্ষমতা উন্নতি দেখতে পাবেন, উদাহরণস্বরূপ, যদি আপনার একটি মাল্টি-মডিউল প্রকল্প থাকে এবং আপনার CI সার্ভারে লিন্ট চালানোর আগে আপনার বিল্ড ডিরেক্টরি পরিষ্কার করুন।
C/C++ মডিউলগুলি এখন একই প্রকল্পে অন্যান্য C/C++ মডিউল উল্লেখ করতে পারে
C/C++ কোড সহ একটি Gradle Android মডিউল এখন অন্য Gradle মডিউলে হেডার ফাইল এবং লাইব্রেরি কোড রেফারেন্স করার জন্য সেট আপ করা যেতে পারে। প্রিফ্যাব প্রোটোকল গ্র্যাডল মডিউলের মধ্যে হেডার এবং লাইব্রেরি যোগাযোগ করতে ব্যবহৃত হয়।
প্রয়োজনীয়তা
গ্রাসকারী মডিউলটি অবশ্যই
CMake
হতে হবে এবংndk-build
নয়। ndk-বিল্ডের জন্য সমর্থনের জন্য ভবিষ্যতের NDK আপডেটের প্রয়োজন হবে। প্রকাশনা মডিউলCMake
বাndk-build
হতে পারে।কনজিউমিং মডিউলকে অবশ্যই
build.gradle
ফাইলেprefab
সক্রিয় করতে হবে।
android {
buildFeatures {
prefab true
}
}
- পাবলিশিং মডিউলটিকে অবশ্যই
build.gradle
ফাইলেprefabPublishing
সক্ষম করতে হবে।
android {
buildFeatures {
prefabPublishing true
}
}
- কনজিউমিং মডিউলকে অবশ্যই
build.gradle
ফাইলdependencies
ব্লকে একটি লাইন যোগ করে প্রকাশনা মডিউল উল্লেখ করতে হবে। যেমন:
dependencies {
implementation project(':mylibrary')
}
- প্রকাশনা মডিউল একটি
prefab
বিভাগ ব্যবহার করে একটি প্যাকেজ প্রকাশ করতে হবে। যেমন:
android {
prefab {
mylibrary {
libraryName "libmylibrary"
headers "src/main/cpp/include"
}
}
}
- কনজিউমিং মডিউলের
CMakeLists.txt
ফাইলটি উৎপাদনকারী মডিউল দ্বারা প্রকাশিত প্যাকেজটি সনাক্ত করতেfind_package()
ব্যবহার করতে পারে। যেমন:
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
myapplication
mylibrary::mylibrary)
- সম্পূর্ণ আবেদনের জন্য একটি STL থাকতে হবে। সুতরাং, উদাহরণস্বরূপ, ভোক্তা এবং প্রকাশনা মডিউল উভয়ই C++ ভাগ করা STL ব্যবহার করতে পারে।
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
}
}
}
}
এজিপির সাথে নেটিভ এএআর ভোক্তা এবং প্রযোজকদের কীভাবে কনফিগার করবেন তার আরও ব্যাখ্যার জন্য, এজিপির সাথে নেটিভ নির্ভরতা দেখুন।
settings.gradle
ফাইলে রিপোজিটরি সেটিংস
যখন অ্যান্ড্রয়েড স্টুডিও বাম্বলবিতে একটি নতুন প্রকল্প তৈরি করা হয়, তখন শীর্ষ-স্তরের build.gradle
ফাইলে plugins
ব্লক থাকে, তারপরে আপনার বিল্ড ডিরেক্টরি পরিষ্কার করার জন্য কোড থাকে:
plugins {
id 'com.android.application' version '7.1.0-beta02' apply false
id 'com.android.library' version '7.1.0-beta02' apply false
id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
রিপোজিটরি সেটিংস যা আগে শীর্ষ-স্তরের build.gradle
ফাইলে ছিল এখন settings.gradle
ফাইলে রয়েছে:
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = 'GradleManagedDeviceTestingNew'
include ':app'
মডিউল-স্তরের build.gradle
ফাইলটি পরিবর্তিত হয়নি। সুতরাং, আপনার প্রোজেক্টের সমস্ত মডিউলে প্রযোজ্য বিল্ড কনফিগারেশন বা গ্রেডলে নিজেই প্রযোজ্য সংগ্রহস্থল এবং নির্ভরতা নির্ধারণ করতে শীর্ষ-স্তরের build.gradle
ফাইল এবং settings.gradle
ফাইলটি ব্যবহার করুন; আপনার প্রকল্পের মধ্যে একটি প্রদত্ত মডিউলের জন্য নির্দিষ্ট বিল্ড কনফিগারেশনগুলিকে সংজ্ঞায়িত করতে মডিউল-স্তরের build.gradle
ফাইলটি ব্যবহার করুন।
উন্নত সম্পদ সংকুচিত
অ্যান্ড্রয়েড স্টুডিও বাম্বলবিতে একটি উন্নত সম্পদ সংকোচন রয়েছে যা আপনার অ্যাপের আকার কমাতে সাহায্য করে।
গতিশীল বৈশিষ্ট্য সহ অ্যাপ্লিকেশনগুলির জন্য সমর্থন
অ্যান্ড্রয়েড রিসোর্স সংকোচনের ডিফল্ট বাস্তবায়ন অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.1.0-আলফা09-এ আপডেট করা হয়েছে। নতুন বাস্তবায়ন গতিশীল বৈশিষ্ট্য সহ সঙ্কুচিত অ্যাপগুলিকে সমর্থন করে।
পরীক্ষামূলক আরও অ্যাপের আকার হ্রাস
নতুন রিসোর্স শঙ্কার বাস্তবায়ন অব্যবহৃত মূল্যের সংস্থান এবং অব্যবহৃত ফাইল সংস্থানগুলির রেফারেন্সগুলি সরাতে সংস্থান সারণী সংশোধন করে আপনার সঙ্কুচিত অ্যাপের আকার আরও কমাতে পারে। নতুন রিসোর্স শিঙ্কার অব্যবহৃত ফাইল রিসোর্স সম্পূর্ণরূপে মুছে ফেলতে পারে, আপনার অ্যাপের আকার আরও কমিয়ে দেয়। এই আচরণটি এখনও ডিফল্টরূপে সক্রিয় করা হয়নি, তবে আপনি আপনার প্রকল্পের gradle.properties
ফাইলে android.experimental.enableNewResourceShrinker.preciseShrinking=true
পরীক্ষামূলক বিকল্পটি যোগ করে এটি চেষ্টা করার জন্য বেছে নিতে পারেন।
নতুন সংস্থান সংকোচন বা পরীক্ষামূলক পতাকার সাথে আপনি যে কোনও সমস্যা খুঁজে পেলে অনুগ্রহ করে রিপোর্ট করুন। সমস্যাগুলি নির্ণয় করতে সাহায্য করতে, বা একটি অস্থায়ী সমাধান হিসাবে, আপনি আপনার প্রকল্পের gradle.properties
এ android.enableNewResourceShrinker=false
যোগ করে পূর্ববর্তী বাস্তবায়নে ফিরে যেতে পারেন। নতুন সংকোচনকারী অব্যবহৃত ফাইল-ভিত্তিক সংস্থানগুলিকে পূর্ববর্তী রিসোর্স সঙ্কুচিত করার চেয়ে সামান্য ভিন্ন ন্যূনতম ফাইলগুলির সাথে প্রতিস্থাপন করে, তবে এটি কোনও রানটাইম প্রভাব ফেলবে বলে আশা করা যায় না।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.0-এ পুরানো বাস্তবায়ন মুছে ফেলার জন্য নির্ধারিত হয়েছে।
বৈকল্পিক প্রকাশনা তৈরি করুন
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.1.0 এবং উচ্চতর আপনাকে কনফিগার করতে দেয় যে কোন বিল্ড ভেরিয়েন্টগুলি একটি Apache Maven সংগ্রহস্থলে প্রকাশ করতে হবে৷ AGP নতুন প্রকাশনা DSL এর উপর ভিত্তি করে একটি একক বা একাধিক বিল্ড ভেরিয়েন্ট সহ একটি উপাদান তৈরি করে, যা আপনি একটি Maven সংগ্রহস্থলে একটি প্রকাশনা কাস্টমাইজ করতে ব্যবহার করতে পারেন। পূর্ববর্তী সংস্করণগুলির তুলনায়, এটি অপ্রয়োজনীয় কাজ এড়ায়, কারণ ডিফল্টরূপে কোনও উপাদান তৈরি করা হবে না। আরও জানতে, প্রকাশনা কোডের নমুনা দেখুন।
Javadoc JAR প্রকাশ করুন
AGP 7.1.0 এবং উচ্চতর আপনাকে জাভা এবং কোটলিন উত্স থেকে Javadoc তৈরি করতে এবং লাইব্রেরি প্রকল্পগুলির জন্য AAR ছাড়াও Javadoc JAR ফাইল প্রকাশ করতে দেয়। Javadoc POM এবং Gradle মডিউল মেটাডেটা {:.external} ফাইলে যোগ করা হয়। singleVariant
ভেরিয়েন্ট বা multipleVariants
পাবলিশিং ব্লকের withJavadocJar()
যোগ করে এই বৈশিষ্ট্যটি সক্রিয় করুন। আরও জানতে, প্রকাশনা বিকল্প কোড নমুনা দেখুন।
প্রকাশ সূত্র JAR
AGP 7.1.0 এবং উচ্চতর আপনাকে লাইব্রেরি প্রকল্পগুলির জন্য AAR ছাড়াও Java এবং Kotlin উত্স JAR ফাইলগুলি প্রকাশ করতে দেয়৷ উত্সগুলি POM এবং Gradle মডিউল মেটাডেটা {:.external} ফাইলগুলিতে যোগ করা হয়। আপনি singleVariant
বা multipleVariants
প্রকাশনা ব্লকে withSourcesJar()
যোগ করে এই বৈশিষ্ট্যটি সক্ষম করতে পারেন। আরও জানতে, প্রকাশনা বিকল্প কোড নমুনা দেখুন।
লিন্ট ব্লক শব্দার্থিক পরিবর্তন
সমস্ত লিন্ট পদ্ধতি যা একটি সমস্যার প্রদত্ত তীব্রতা স্তরকে ওভাররাইড করে— enable
, disable
/ ignore
, informational
, warning
, error
, fatal
—এখন কনফিগারেশনের ক্রমকে সম্মান করুন। উদাহরণস্বরূপ, finalizeDsl()
এ একটি সমস্যাকে মারাত্মক হিসাবে সেট করা এখন এটিকে প্রধান DSL-এ নিষ্ক্রিয় করে দেয়। আরও তথ্যের জন্য, lint{}
ব্লক রেফারেন্স ডক্স এবং অ্যান্ড্রয়েড বিল্ড ফ্লো এবং এক্সটেনশন পয়েন্ট দেখুন।
নেভিগেশন নিরাপদ Args সামঞ্জস্য
AGP API যেগুলির উপর নেভিগেশন সেফ Args Gradle প্লাগইন নির্ভর করে তা সরিয়ে দেওয়া হয়েছে। AGP 7.1 নেভিগেশন সেফ আর্গস সংস্করণ 2.4.0-rc1 বা 2.4.0 এর সাথে কাজ করে না, তবে 2.5.0-alpha01 এবং 2.4.1 সংস্করণের সাথে কাজ করবে। ইতিমধ্যে, একটি সমাধান হিসাবে, আপনি নেভিগেশন সেফ আর্গস, নেভিগেশন 2.5.0-স্ন্যাপশট-এর একটি স্ন্যাপশট বিল্ড সহ AGP 7.1 ব্যবহার করতে পারেন। স্ন্যাপশট বিল্ড ব্যবহার করতে, বিল্ড আইডি #8054565 সহ স্ন্যাপশট নির্দেশাবলী অনুসরণ করুন।
উপরন্তু, নেভিগেশন সেফ আর্গস সংস্করণ 2.4.1 এবং 2.5.0 আর AGP 4.2 এর সাথে কাজ করবে না; Safe Args-এর সেই সংস্করণগুলি ব্যবহার করতে, আপনাকে অবশ্যই AGP 7.0 এবং উচ্চতর ব্যবহার করতে হবে৷
স্বয়ংক্রিয় উপাদান তৈরি অক্ষম করুন
AGP 8.0 শুরু করে, স্বয়ংক্রিয় উপাদান তৈরি ডিফল্টরূপে অক্ষম করা হবে। বর্তমানে, AGP 7.1 স্বয়ংক্রিয়ভাবে প্রতিটি বিল্ড ভেরিয়েন্টের জন্য একটি কম্পোনেন্ট তৈরি করে, যার নাম বিল্ড ভেরিয়েন্টের মতোই, এবং একটি all
কম্পোনেন্ট যাতে সমস্ত বিল্ড ভেরিয়েন্ট রয়েছে। এই স্বয়ংক্রিয় উপাদান তৈরি নিষ্ক্রিয় করা হবে. নতুন আচরণে রূপান্তর করতে, আপনাকে android.disableAutomaticComponentCreation
true.
আরও তথ্যের জন্য, ম্যাভেন পাবলিশ প্লাগইন ব্যবহার করুন দেখুন।
ফায়ারবেস পারফরম্যান্স মনিটরিং সামঞ্জস্য
AGP 7.1 ফায়ারবেস পারফরম্যান্স মনিটরিং গ্রেডল প্লাগইন সংস্করণ 1.4.0 এবং তার নিচের সাথে বেমানান। AGP আপগ্রেড সহকারী স্বয়ংক্রিয়ভাবে প্লাগইনটিকে 1.4.1 সংস্করণে আপডেট করবে না, তাই আপনি যদি firebase-perf
ব্যবহার করেন এবং AGP-কে 7.1-এ আপগ্রেড করতে চান, তাহলে আপনাকে এই বিশেষ আপগ্রেডটি ম্যানুয়ালি করতে হবে।
পরিচিত সমস্যা
এই বিভাগে Android Gradle প্লাগইন 7.1.0-এ বিদ্যমান পরিচিত সমস্যাগুলি বর্ণনা করা হয়েছে।
হিল্ট প্লাগইন ব্যবহার করে এমন একটি অ্যাপ প্রকল্পের ইউনিট পরীক্ষা করার সমস্যা
ইউনিট টেস্ট ক্লাসপাথে নন-ইনস্ট্রুমেন্টেড অ্যাপ ক্লাস রয়েছে, যার মানে হিল্ট ইউনিট টেস্ট চালানোর সময় ডিপেন্ডেন্সি ইনজেকশন পরিচালনা করার জন্য অ্যাপ ক্লাসগুলিকে ইন্সট্রুমেন্ট করে না।
এই সমস্যাটি 7.1.1 রিলিজের সাথে ঠিক করা হবে, সংখ্যা #213534628 দেখুন।
,অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.1.0 (জানুয়ারি 2022)
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.1.0 একটি বড় রিলিজ যাতে বিভিন্ন ধরনের নতুন বৈশিষ্ট্য এবং উন্নতি রয়েছে।
7.1.3 (এপ্রিল 2022)
এই ছোটখাট আপডেটে নিম্নলিখিত বাগ ফিক্সগুলি অন্তর্ভুক্ত রয়েছে:
- R8 দ্বারা রিপোর্ট করা ডুপ্লিকেট ক্লাস সমস্যা
এই রিলিজে অন্তর্ভুক্ত বাগ ফিক্সের একটি সম্পূর্ণ তালিকা দেখতে, Android Studio Bumblebee Patch 3 ব্লগ পোস্টটি দেখুন।
7.1.2 (ফেব্রুয়ারি 2022)
এই ছোটখাট আপডেটে নিম্নলিখিত বাগ ফিক্সগুলি অন্তর্ভুক্ত রয়েছে:
- Android Gradle Plugin 7.1.0-rc01 ইউনিট পরীক্ষার সময় ASM বাইটকোড রূপান্তর করতে ব্যর্থ হয়
- Gradle সিঙ্ক "ক্লাস 'com.android.build.api.extension.AndroidComponentsExtension' লোড করতে অক্ষম।"
- অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.0.0 এ গ্রোভি ডিএসএল থেকে কিছু নতুন ডিএসএল ব্লক ব্যবহার করা যাবে না
- AGP 7.1 নতুন প্রকাশনা API: তৈরি করা javadoc জার স্বাক্ষরিত হয় না
- ClassesDataSourceCache সর্বশেষ Asm সংস্করণ ব্যবহার করা উচিত
- অ্যান্ড্রয়েড স্টুডিও বাম্বলবি সর্বদা সর্বশেষ পরিবর্তনগুলি স্থাপন করে না
এই রিলিজে অন্তর্ভুক্ত বাগ ফিক্সের একটি সম্পূর্ণ তালিকা দেখতে, Android Studio Bumblebee Patch 2 ব্লগ পোস্টটি দেখুন।
7.1.1 (ফেব্রুয়ারি 2022)
এই ছোটখাট আপডেটটি অ্যান্ড্রয়েড স্টুডিও বাম্বলবি প্যাচ 1 এর প্রকাশের সাথে মিলে যায়।
এই রিলিজে অন্তর্ভুক্ত বাগ ফিক্সের একটি তালিকা দেখতে, Android Studio Bumblebee Patch 1 ব্লগ পোস্ট দেখুন।
সামঞ্জস্য
ন্যূনতম সংস্করণ | ডিফল্ট সংস্করণ | নোট | |
---|---|---|---|
গ্রেডল | 7.2 | 7.2 | আরও জানতে, Gradle আপডেট করা দেখুন। |
SDK বিল্ড টুলস | 30.0.3 | 30.0.3 | SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন । |
এনডিকে | N/A | 21.4.7075529 | NDK এর একটি ভিন্ন সংস্করণ ইনস্টল বা কনফিগার করুন । |
জেডিকে | 11 | 11 | আরও জানতে, JDK সংস্করণ সেট করা দেখুন। |
লিন্ট বিশ্লেষণ টাস্ক এখন ক্যাশেযোগ্য
AndroidLintAnalysisTask
এখন Gradle বিল্ড ক্যাশের সাথে সামঞ্জস্যপূর্ণ। আপনি যদি আপনার gradle.properties
ফাইলে org.gradle.caching=true
সেট করে বিল্ড ক্যাশে সক্রিয় করেন, লিন্ট বিশ্লেষণ কাজটি সম্ভব হলে বিল্ড ক্যাশে থেকে তার আউটপুট পাবে।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন দিয়ে লিন্ট চালানোর সময় লিন্ট বিশ্লেষণের কাজটি প্রায়শই সবচেয়ে বড় বাধা হয়ে দাঁড়ায়, তাই বিল্ড ক্যাশে সক্রিয় করা অনেক পরিস্থিতিতে লিন্ট চালানোর সময় বিল্ড গতিকে উন্নত করে। আপনি একটি লক্ষণীয় কর্মক্ষমতা উন্নতি দেখতে পাবেন, উদাহরণস্বরূপ, যদি আপনার একটি মাল্টি-মডিউল প্রকল্প থাকে এবং আপনার CI সার্ভারে লিন্ট চালানোর আগে আপনার বিল্ড ডিরেক্টরি পরিষ্কার করুন।
C/C++ মডিউলগুলি এখন একই প্রকল্পে অন্যান্য C/C++ মডিউল উল্লেখ করতে পারে
C/C++ কোড সহ একটি Gradle Android মডিউল এখন অন্য Gradle মডিউলে হেডার ফাইল এবং লাইব্রেরি কোড রেফারেন্স করার জন্য সেট আপ করা যেতে পারে। প্রিফ্যাব প্রোটোকল গ্র্যাডল মডিউলের মধ্যে হেডার এবং লাইব্রেরি যোগাযোগ করতে ব্যবহৃত হয়।
প্রয়োজনীয়তা
গ্রাসকারী মডিউলটি অবশ্যই
CMake
হতে হবে এবংndk-build
নয়। ndk-বিল্ডের জন্য সমর্থনের জন্য ভবিষ্যতের NDK আপডেটের প্রয়োজন হবে। প্রকাশনা মডিউলCMake
বাndk-build
হতে পারে।কনজিউমিং মডিউলকে অবশ্যই
build.gradle
ফাইলেprefab
সক্রিয় করতে হবে।
android {
buildFeatures {
prefab true
}
}
- পাবলিশিং মডিউলটিকে অবশ্যই
build.gradle
ফাইলেprefabPublishing
সক্ষম করতে হবে।
android {
buildFeatures {
prefabPublishing true
}
}
- কনজিউমিং মডিউলকে অবশ্যই
build.gradle
ফাইলdependencies
ব্লকে একটি লাইন যোগ করে প্রকাশনা মডিউল উল্লেখ করতে হবে। যেমন:
dependencies {
implementation project(':mylibrary')
}
- প্রকাশনা মডিউল একটি
prefab
বিভাগ ব্যবহার করে একটি প্যাকেজ প্রকাশ করতে হবে। যেমন:
android {
prefab {
mylibrary {
libraryName "libmylibrary"
headers "src/main/cpp/include"
}
}
}
- কনজিউমিং মডিউলের
CMakeLists.txt
ফাইলটি উৎপাদনকারী মডিউল দ্বারা প্রকাশিত প্যাকেজটি সনাক্ত করতেfind_package()
ব্যবহার করতে পারে। যেমন:
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
myapplication
mylibrary::mylibrary)
- সম্পূর্ণ আবেদনের জন্য একটি STL থাকতে হবে। সুতরাং, উদাহরণস্বরূপ, ভোক্তা এবং প্রকাশনা মডিউল উভয়ই C++ ভাগ করা STL ব্যবহার করতে পারে।
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
}
}
}
}
এজিপির সাথে নেটিভ এএআর ভোক্তা এবং প্রযোজকদের কীভাবে কনফিগার করবেন তার আরও ব্যাখ্যার জন্য, এজিপির সাথে নেটিভ নির্ভরতা দেখুন।
settings.gradle
ফাইলে রিপোজিটরি সেটিংস
যখন অ্যান্ড্রয়েড স্টুডিও বাম্বলবিতে একটি নতুন প্রকল্প তৈরি করা হয়, তখন শীর্ষ-স্তরের build.gradle
ফাইলে plugins
ব্লক থাকে, তারপরে আপনার বিল্ড ডিরেক্টরি পরিষ্কার করার জন্য কোড থাকে:
plugins {
id 'com.android.application' version '7.1.0-beta02' apply false
id 'com.android.library' version '7.1.0-beta02' apply false
id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
রিপোজিটরি সেটিংস যা আগে শীর্ষ-স্তরের build.gradle
ফাইলে ছিল এখন settings.gradle
ফাইলে রয়েছে:
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = 'GradleManagedDeviceTestingNew'
include ':app'
মডিউল-স্তরের build.gradle
ফাইলটি পরিবর্তিত হয়নি। সুতরাং, আপনার প্রোজেক্টের সমস্ত মডিউলে প্রযোজ্য বিল্ড কনফিগারেশন বা গ্রেডলে নিজেই প্রযোজ্য সংগ্রহস্থল এবং নির্ভরতা নির্ধারণ করতে শীর্ষ-স্তরের build.gradle
ফাইল এবং settings.gradle
ফাইলটি ব্যবহার করুন; আপনার প্রকল্পের মধ্যে একটি প্রদত্ত মডিউলের জন্য নির্দিষ্ট বিল্ড কনফিগারেশনগুলিকে সংজ্ঞায়িত করতে মডিউল-স্তরের build.gradle
ফাইলটি ব্যবহার করুন।
উন্নত সম্পদ সংকুচিত
অ্যান্ড্রয়েড স্টুডিও বাম্বলবিতে একটি উন্নত সম্পদ সংকোচন রয়েছে যা আপনার অ্যাপের আকার কমাতে সাহায্য করে।
গতিশীল বৈশিষ্ট্য সহ অ্যাপ্লিকেশনগুলির জন্য সমর্থন
অ্যান্ড্রয়েড রিসোর্স সংকোচনের ডিফল্ট বাস্তবায়ন অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.1.0-আলফা09-এ আপডেট করা হয়েছে। নতুন বাস্তবায়ন গতিশীল বৈশিষ্ট্য সহ সঙ্কুচিত অ্যাপগুলিকে সমর্থন করে।
পরীক্ষামূলক আরও অ্যাপের আকার হ্রাস
নতুন রিসোর্স শঙ্কার বাস্তবায়ন অব্যবহৃত মূল্যের সংস্থান এবং অব্যবহৃত ফাইল সংস্থানগুলির রেফারেন্সগুলি সরাতে সংস্থান সারণী সংশোধন করে আপনার সঙ্কুচিত অ্যাপের আকার আরও কমাতে পারে। নতুন রিসোর্স শিঙ্কার অব্যবহৃত ফাইল রিসোর্স সম্পূর্ণরূপে মুছে ফেলতে পারে, আপনার অ্যাপের আকার আরও কমিয়ে দেয়। এই আচরণটি এখনও ডিফল্টরূপে সক্রিয় করা হয়নি, তবে আপনি আপনার প্রকল্পের gradle.properties
ফাইলে android.experimental.enableNewResourceShrinker.preciseShrinking=true
পরীক্ষামূলক বিকল্পটি যোগ করে এটি চেষ্টা করার জন্য বেছে নিতে পারেন।
নতুন সংস্থান সংকোচন বা পরীক্ষামূলক পতাকার সাথে আপনি যে কোনও সমস্যা খুঁজে পেলে অনুগ্রহ করে রিপোর্ট করুন। সমস্যাগুলি নির্ণয় করতে সাহায্য করতে, বা একটি অস্থায়ী সমাধান হিসাবে, আপনি আপনার প্রকল্পের gradle.properties
এ android.enableNewResourceShrinker=false
যোগ করে পূর্ববর্তী বাস্তবায়নে ফিরে যেতে পারেন। নতুন সংকোচনকারী অব্যবহৃত ফাইল-ভিত্তিক সংস্থানগুলিকে পূর্ববর্তী রিসোর্স সঙ্কুচিত করার চেয়ে সামান্য ভিন্ন ন্যূনতম ফাইলগুলির সাথে প্রতিস্থাপন করে, তবে এটি কোনও রানটাইম প্রভাব ফেলবে বলে আশা করা যায় না।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.0-এ পুরানো বাস্তবায়ন মুছে ফেলার জন্য নির্ধারিত হয়েছে।
বৈকল্পিক প্রকাশনা তৈরি করুন
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.1.0 এবং উচ্চতর আপনাকে কনফিগার করতে দেয় যে কোন বিল্ড ভেরিয়েন্টগুলি একটি Apache Maven সংগ্রহস্থলে প্রকাশ করতে হবে৷ AGP নতুন প্রকাশনা DSL এর উপর ভিত্তি করে একটি একক বা একাধিক বিল্ড ভেরিয়েন্ট সহ একটি উপাদান তৈরি করে, যা আপনি একটি Maven সংগ্রহস্থলে একটি প্রকাশনা কাস্টমাইজ করতে ব্যবহার করতে পারেন। পূর্ববর্তী সংস্করণগুলির তুলনায়, এটি অপ্রয়োজনীয় কাজ এড়ায়, কারণ ডিফল্টরূপে কোনও উপাদান তৈরি করা হবে না। আরও জানতে, প্রকাশনা কোডের নমুনা দেখুন।
Javadoc JAR প্রকাশ করুন
AGP 7.1.0 এবং উচ্চতর আপনাকে জাভা এবং কোটলিন উত্স থেকে Javadoc তৈরি করতে এবং লাইব্রেরি প্রকল্পগুলির জন্য AAR ছাড়াও Javadoc JAR ফাইল প্রকাশ করতে দেয়। Javadoc POM এবং Gradle মডিউল মেটাডেটা {:.external} ফাইলে যোগ করা হয়। singleVariant
ভেরিয়েন্ট বা multipleVariants
পাবলিশিং ব্লকের withJavadocJar()
যোগ করে এই বৈশিষ্ট্যটি সক্রিয় করুন। আরও জানতে, প্রকাশনা বিকল্প কোড নমুনা দেখুন।
প্রকাশ সূত্র JAR
AGP 7.1.0 এবং উচ্চতর আপনাকে লাইব্রেরি প্রকল্পগুলির জন্য AAR ছাড়াও Java এবং Kotlin উত্স JAR ফাইলগুলি প্রকাশ করতে দেয়৷ উত্সগুলি POM এবং Gradle মডিউল মেটাডেটা {:.external} ফাইলগুলিতে যোগ করা হয়। আপনি singleVariant
বা multipleVariants
প্রকাশনা ব্লকে withSourcesJar()
যোগ করে এই বৈশিষ্ট্যটি সক্ষম করতে পারেন। আরও জানতে, প্রকাশনা বিকল্প কোড নমুনা দেখুন।
লিন্ট ব্লক শব্দার্থিক পরিবর্তন
সমস্ত লিন্ট পদ্ধতি যা একটি সমস্যার প্রদত্ত তীব্রতা স্তরকে ওভাররাইড করে— enable
, disable
/ ignore
, informational
, warning
, error
, fatal
—এখন কনফিগারেশনের ক্রমকে সম্মান করুন। উদাহরণস্বরূপ, finalizeDsl()
এ একটি সমস্যাকে মারাত্মক হিসাবে সেট করা এখন এটিকে প্রধান DSL-এ নিষ্ক্রিয় করে দেয়। আরও তথ্যের জন্য, lint{}
ব্লক রেফারেন্স ডক্স এবং অ্যান্ড্রয়েড বিল্ড ফ্লো এবং এক্সটেনশন পয়েন্ট দেখুন।
নেভিগেশন নিরাপদ Args সামঞ্জস্য
AGP API যেগুলির উপর নেভিগেশন সেফ Args Gradle প্লাগইন নির্ভর করে তা সরিয়ে দেওয়া হয়েছে। AGP 7.1 নেভিগেশন সেফ আর্গস সংস্করণ 2.4.0-rc1 বা 2.4.0 এর সাথে কাজ করে না, তবে 2.5.0-alpha01 এবং 2.4.1 সংস্করণের সাথে কাজ করবে। ইতিমধ্যে, একটি সমাধান হিসাবে, আপনি নেভিগেশন সেফ আর্গস, নেভিগেশন 2.5.0-স্ন্যাপশট-এর একটি স্ন্যাপশট বিল্ড সহ AGP 7.1 ব্যবহার করতে পারেন। স্ন্যাপশট বিল্ড ব্যবহার করতে, বিল্ড আইডি #8054565 সহ স্ন্যাপশট নির্দেশাবলী অনুসরণ করুন।
উপরন্তু, নেভিগেশন সেফ আর্গস সংস্করণ 2.4.1 এবং 2.5.0 আর AGP 4.2 এর সাথে কাজ করবে না; Safe Args-এর সেই সংস্করণগুলি ব্যবহার করতে, আপনাকে অবশ্যই AGP 7.0 এবং উচ্চতর ব্যবহার করতে হবে৷
স্বয়ংক্রিয় উপাদান তৈরি অক্ষম করুন
AGP 8.0 শুরু করে, স্বয়ংক্রিয় উপাদান তৈরি ডিফল্টরূপে অক্ষম করা হবে। বর্তমানে, AGP 7.1 স্বয়ংক্রিয়ভাবে প্রতিটি বিল্ড ভেরিয়েন্টের জন্য একটি কম্পোনেন্ট তৈরি করে, যার নাম বিল্ড ভেরিয়েন্টের মতোই, এবং একটি all
কম্পোনেন্ট যাতে সমস্ত বিল্ড ভেরিয়েন্ট রয়েছে। এই স্বয়ংক্রিয় উপাদান তৈরি নিষ্ক্রিয় করা হবে. নতুন আচরণে রূপান্তর করতে, আপনাকে android.disableAutomaticComponentCreation
true.
আরও তথ্যের জন্য, ম্যাভেন পাবলিশ প্লাগইন ব্যবহার করুন দেখুন।
ফায়ারবেস পারফরম্যান্স মনিটরিং সামঞ্জস্য
AGP 7.1 ফায়ারবেস পারফরম্যান্স মনিটরিং গ্রেডল প্লাগইন সংস্করণ 1.4.0 এবং তার নিচের সাথে বেমানান। AGP আপগ্রেড সহকারী স্বয়ংক্রিয়ভাবে প্লাগইনটিকে 1.4.1 সংস্করণে আপডেট করবে না, তাই আপনি যদি firebase-perf
ব্যবহার করেন এবং AGP-কে 7.1-এ আপগ্রেড করতে চান, তাহলে আপনাকে এই বিশেষ আপগ্রেডটি ম্যানুয়ালি করতে হবে।
পরিচিত সমস্যা
এই বিভাগে Android Gradle প্লাগইন 7.1.0-এ বিদ্যমান পরিচিত সমস্যাগুলি বর্ণনা করা হয়েছে।
হিল্ট প্লাগইন ব্যবহার করে এমন একটি অ্যাপ প্রকল্পের ইউনিট পরীক্ষা করার সমস্যা
ইউনিট টেস্ট ক্লাসপাথে নন-ইনস্ট্রুমেন্টেড অ্যাপ ক্লাস রয়েছে, যার মানে হিল্ট ইউনিট টেস্ট চালানোর সময় ডিপেন্ডেন্সি ইনজেকশন পরিচালনা করার জন্য অ্যাপ ক্লাসগুলিকে ইন্সট্রুমেন্ট করে না।
এই সমস্যাটি 7.1.1 রিলিজের সাথে ঠিক করা হবে, সংখ্যা #213534628 দেখুন।
,অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.1.0 (জানুয়ারি 2022)
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.1.0 একটি বড় রিলিজ যাতে বিভিন্ন ধরনের নতুন বৈশিষ্ট্য এবং উন্নতি রয়েছে।
7.1.3 (এপ্রিল 2022)
এই ছোটখাট আপডেটে নিম্নলিখিত বাগ ফিক্সগুলি অন্তর্ভুক্ত রয়েছে:
- R8 দ্বারা রিপোর্ট করা ডুপ্লিকেট ক্লাস সমস্যা
এই রিলিজে অন্তর্ভুক্ত বাগ ফিক্সের একটি সম্পূর্ণ তালিকা দেখতে, Android Studio Bumblebee Patch 3 ব্লগ পোস্টটি দেখুন।
7.1.2 (ফেব্রুয়ারি 2022)
এই ছোটখাট আপডেটে নিম্নলিখিত বাগ ফিক্সগুলি অন্তর্ভুক্ত রয়েছে:
- Android Gradle Plugin 7.1.0-rc01 ইউনিট পরীক্ষার সময় ASM বাইটকোড রূপান্তর করতে ব্যর্থ হয়
- Gradle সিঙ্ক "ক্লাস 'com.android.build.api.extension.AndroidComponentsExtension' লোড করতে অক্ষম।"
- অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.0.0 এ গ্রোভি ডিএসএল থেকে কিছু নতুন ডিএসএল ব্লক ব্যবহার করা যাবে না
- AGP 7.1 নতুন প্রকাশনা API: তৈরি করা javadoc জার স্বাক্ষরিত হয় না
- ClassesDataSourceCache সর্বশেষ Asm সংস্করণ ব্যবহার করা উচিত
- অ্যান্ড্রয়েড স্টুডিও বাম্বলবি সর্বদা সর্বশেষ পরিবর্তনগুলি স্থাপন করে না
এই রিলিজে অন্তর্ভুক্ত বাগ ফিক্সের একটি সম্পূর্ণ তালিকা দেখতে, Android Studio Bumblebee Patch 2 ব্লগ পোস্টটি দেখুন।
7.1.1 (ফেব্রুয়ারি 2022)
এই ছোটখাট আপডেটটি অ্যান্ড্রয়েড স্টুডিও বাম্বলবি প্যাচ 1 এর প্রকাশের সাথে মিলে যায়।
এই রিলিজে অন্তর্ভুক্ত বাগ ফিক্সের একটি তালিকা দেখতে, Android Studio Bumblebee Patch 1 ব্লগ পোস্ট দেখুন।
সামঞ্জস্য
ন্যূনতম সংস্করণ | ডিফল্ট সংস্করণ | নোট | |
---|---|---|---|
গ্রেডল | 7.2 | 7.2 | আরও জানতে, Gradle আপডেট করা দেখুন। |
SDK বিল্ড টুলস | 30.0.3 | 30.0.3 | SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন । |
এনডিকে | N/A | 21.4.7075529 | NDK এর একটি ভিন্ন সংস্করণ ইনস্টল বা কনফিগার করুন । |
জেডিকে | 11 | 11 | আরও জানতে, JDK সংস্করণ সেট করা দেখুন। |
লিন্ট বিশ্লেষণ টাস্ক এখন ক্যাশেযোগ্য
AndroidLintAnalysisTask
এখন Gradle বিল্ড ক্যাশের সাথে সামঞ্জস্যপূর্ণ। আপনি যদি আপনার gradle.properties
ফাইলে org.gradle.caching=true
সেট করে বিল্ড ক্যাশে সক্রিয় করেন, লিন্ট বিশ্লেষণ কাজটি সম্ভব হলে বিল্ড ক্যাশে থেকে তার আউটপুট পাবে।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন দিয়ে লিন্ট চালানোর সময় লিন্ট বিশ্লেষণের কাজটি প্রায়শই সবচেয়ে বড় বাধা হয়ে দাঁড়ায়, তাই বিল্ড ক্যাশে সক্রিয় করা অনেক পরিস্থিতিতে লিন্ট চালানোর সময় বিল্ড গতিকে উন্নত করে। আপনি একটি লক্ষণীয় কর্মক্ষমতা উন্নতি দেখতে পাবেন, উদাহরণস্বরূপ, যদি আপনার একটি মাল্টি-মডিউল প্রকল্প থাকে এবং আপনার CI সার্ভারে লিন্ট চালানোর আগে আপনার বিল্ড ডিরেক্টরি পরিষ্কার করুন।
C/C++ মডিউলগুলি এখন একই প্রকল্পে অন্যান্য C/C++ মডিউল উল্লেখ করতে পারে
C/C++ কোড সহ একটি Gradle Android মডিউল এখন অন্য Gradle মডিউলে হেডার ফাইল এবং লাইব্রেরি কোড রেফারেন্স করার জন্য সেট আপ করা যেতে পারে। প্রিফ্যাব প্রোটোকল গ্র্যাডল মডিউলের মধ্যে হেডার এবং লাইব্রেরি যোগাযোগ করতে ব্যবহৃত হয়।
প্রয়োজনীয়তা
গ্রাসকারী মডিউলটি অবশ্যই
CMake
হতে হবে এবংndk-build
নয়। ndk-বিল্ডের জন্য সমর্থনের জন্য ভবিষ্যতের NDK আপডেটের প্রয়োজন হবে। প্রকাশনা মডিউলCMake
বাndk-build
হতে পারে।কনজিউমিং মডিউলকে অবশ্যই
build.gradle
ফাইলেprefab
সক্রিয় করতে হবে।
android {
buildFeatures {
prefab true
}
}
- পাবলিশিং মডিউলটিকে অবশ্যই
build.gradle
ফাইলেprefabPublishing
সক্ষম করতে হবে।
android {
buildFeatures {
prefabPublishing true
}
}
- কনজিউমিং মডিউলকে অবশ্যই
build.gradle
ফাইলdependencies
ব্লকে একটি লাইন যোগ করে প্রকাশনা মডিউল উল্লেখ করতে হবে। যেমন:
dependencies {
implementation project(':mylibrary')
}
- প্রকাশনা মডিউল একটি
prefab
বিভাগ ব্যবহার করে একটি প্যাকেজ প্রকাশ করতে হবে। যেমন:
android {
prefab {
mylibrary {
libraryName "libmylibrary"
headers "src/main/cpp/include"
}
}
}
- কনজিউমিং মডিউলের
CMakeLists.txt
ফাইলটি উৎপাদনকারী মডিউল দ্বারা প্রকাশিত প্যাকেজটি সনাক্ত করতেfind_package()
ব্যবহার করতে পারে। যেমন:
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
myapplication
mylibrary::mylibrary)
- সম্পূর্ণ আবেদনের জন্য একটি STL থাকতে হবে। সুতরাং, উদাহরণস্বরূপ, ভোক্তা এবং প্রকাশনা মডিউল উভয়ই C++ ভাগ করা STL ব্যবহার করতে পারে।
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
}
}
}
}
এজিপির সাথে নেটিভ এএআর ভোক্তা এবং প্রযোজকদের কীভাবে কনফিগার করবেন তার আরও ব্যাখ্যার জন্য, এজিপির সাথে নেটিভ নির্ভরতা দেখুন।
settings.gradle
ফাইলে রিপোজিটরি সেটিংস
যখন অ্যান্ড্রয়েড স্টুডিও বাম্বলবিতে একটি নতুন প্রকল্প তৈরি করা হয়, তখন শীর্ষ-স্তরের build.gradle
ফাইলে plugins
ব্লক থাকে, তারপরে আপনার বিল্ড ডিরেক্টরি পরিষ্কার করার জন্য কোড থাকে:
plugins {
id 'com.android.application' version '7.1.0-beta02' apply false
id 'com.android.library' version '7.1.0-beta02' apply false
id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
রিপোজিটরি সেটিংস যা আগে শীর্ষ-স্তরের build.gradle
ফাইলে ছিল এখন settings.gradle
ফাইলে রয়েছে:
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = 'GradleManagedDeviceTestingNew'
include ':app'
মডিউল-স্তরের build.gradle
ফাইলটি পরিবর্তিত হয়নি। সুতরাং, আপনার প্রোজেক্টের সমস্ত মডিউলে প্রযোজ্য বিল্ড কনফিগারেশন বা গ্রেডলে নিজেই প্রযোজ্য সংগ্রহস্থল এবং নির্ভরতা নির্ধারণ করতে শীর্ষ-স্তরের build.gradle
ফাইল এবং settings.gradle
ফাইলটি ব্যবহার করুন; আপনার প্রকল্পের মধ্যে একটি প্রদত্ত মডিউলের জন্য নির্দিষ্ট বিল্ড কনফিগারেশনগুলিকে সংজ্ঞায়িত করতে মডিউল-স্তরের build.gradle
ফাইলটি ব্যবহার করুন।
উন্নত সম্পদ সংকুচিত
অ্যান্ড্রয়েড স্টুডিও বাম্বলবিতে একটি উন্নত সম্পদ সংকোচন রয়েছে যা আপনার অ্যাপের আকার কমাতে সাহায্য করে।
গতিশীল বৈশিষ্ট্য সহ অ্যাপ্লিকেশনগুলির জন্য সমর্থন
অ্যান্ড্রয়েড রিসোর্স সংকোচনের ডিফল্ট বাস্তবায়ন অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.1.0-আলফা09-এ আপডেট করা হয়েছে। নতুন বাস্তবায়ন গতিশীল বৈশিষ্ট্য সহ সঙ্কুচিত অ্যাপগুলিকে সমর্থন করে।
পরীক্ষামূলক আরও অ্যাপের আকার হ্রাস
নতুন রিসোর্স শঙ্কার বাস্তবায়ন অব্যবহৃত মূল্যের সংস্থান এবং অব্যবহৃত ফাইল সংস্থানগুলির রেফারেন্সগুলি সরাতে সংস্থান সারণী সংশোধন করে আপনার সঙ্কুচিত অ্যাপের আকার আরও কমাতে পারে। নতুন রিসোর্স শিঙ্কার অব্যবহৃত ফাইল রিসোর্স সম্পূর্ণরূপে মুছে ফেলতে পারে, আপনার অ্যাপের আকার আরও কমিয়ে দেয়। এই আচরণটি এখনও ডিফল্টরূপে সক্রিয় করা হয়নি, তবে আপনি আপনার প্রকল্পের gradle.properties
ফাইলে android.experimental.enableNewResourceShrinker.preciseShrinking=true
পরীক্ষামূলক বিকল্পটি যোগ করে এটি চেষ্টা করার জন্য বেছে নিতে পারেন।
নতুন সংস্থান সংকোচন বা পরীক্ষামূলক পতাকার সাথে আপনি যে কোনও সমস্যা খুঁজে পেলে অনুগ্রহ করে রিপোর্ট করুন। সমস্যাগুলি নির্ণয় করতে সাহায্য করতে, বা একটি অস্থায়ী সমাধান হিসাবে, আপনি আপনার প্রকল্পের gradle.properties
এ android.enableNewResourceShrinker=false
যোগ করে পূর্ববর্তী বাস্তবায়নে ফিরে যেতে পারেন। নতুন সংকোচনকারী অব্যবহৃত ফাইল-ভিত্তিক সংস্থানগুলিকে পূর্ববর্তী রিসোর্স সঙ্কুচিত করার চেয়ে সামান্য ভিন্ন ন্যূনতম ফাইলগুলির সাথে প্রতিস্থাপন করে, তবে এটি কোনও রানটাইম প্রভাব ফেলবে বলে আশা করা যায় না।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.0.0-এ পুরানো বাস্তবায়ন মুছে ফেলার জন্য নির্ধারিত হয়েছে।
বৈকল্পিক প্রকাশনা তৈরি করুন
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 7.1.0 এবং উচ্চতর আপনাকে কনফিগার করতে দেয় যে কোন বিল্ড ভেরিয়েন্টগুলি একটি Apache Maven সংগ্রহস্থলে প্রকাশ করতে হবে৷ AGP নতুন প্রকাশনা DSL এর উপর ভিত্তি করে একটি একক বা একাধিক বিল্ড ভেরিয়েন্ট সহ একটি উপাদান তৈরি করে, যা আপনি একটি Maven সংগ্রহস্থলে একটি প্রকাশনা কাস্টমাইজ করতে ব্যবহার করতে পারেন। পূর্ববর্তী সংস্করণগুলির তুলনায়, এটি অপ্রয়োজনীয় কাজ এড়ায়, কারণ ডিফল্টরূপে কোনও উপাদান তৈরি করা হবে না। আরও জানতে, প্রকাশনা কোডের নমুনা দেখুন।
Javadoc JAR প্রকাশ করুন
AGP 7.1.0 এবং উচ্চতর আপনাকে জাভা এবং কোটলিন উত্স থেকে Javadoc তৈরি করতে এবং লাইব্রেরি প্রকল্পগুলির জন্য AAR ছাড়াও Javadoc JAR ফাইল প্রকাশ করতে দেয়। Javadoc POM এবং Gradle মডিউল মেটাডেটা {:.external} ফাইলে যোগ করা হয়। singleVariant
ভেরিয়েন্ট বা multipleVariants
পাবলিশিং ব্লকের withJavadocJar()
যোগ করে এই বৈশিষ্ট্যটি সক্ষম করুন। আরও জানতে, প্রকাশনা বিকল্প কোড নমুনা দেখুন।
প্রকাশ সূত্র JAR
AGP 7.1.0 এবং উচ্চতর আপনাকে লাইব্রেরি প্রকল্পগুলির জন্য AAR ছাড়াও Java এবং Kotlin উত্স JAR ফাইলগুলি প্রকাশ করতে দেয়৷ উত্সগুলি POM এবং Gradle মডিউল মেটাডেটা {:.external} ফাইলগুলিতে যোগ করা হয়। আপনি singleVariant
বা multipleVariants
প্রকাশনা ব্লকে withSourcesJar()
যোগ করে এই বৈশিষ্ট্যটি সক্ষম করতে পারেন। আরও জানতে, প্রকাশনা বিকল্প কোড নমুনা দেখুন।
লিন্ট ব্লক শব্দার্থিক পরিবর্তন
সমস্ত লিন্ট পদ্ধতি যা একটি সমস্যার প্রদত্ত তীব্রতা স্তরকে ওভাররাইড করে— enable
, disable
/ ignore
, informational
, warning
, error
, fatal
—এখন কনফিগারেশনের ক্রমকে সম্মান করুন। উদাহরণস্বরূপ, finalizeDsl()
এ একটি সমস্যাকে মারাত্মক হিসাবে সেট করা এখন এটিকে প্রধান DSL-এ নিষ্ক্রিয় করে দেয়। আরও তথ্যের জন্য, lint{}
ব্লক রেফারেন্স ডক্স এবং অ্যান্ড্রয়েড বিল্ড ফ্লো এবং এক্সটেনশন পয়েন্ট দেখুন।
নেভিগেশন নিরাপদ Args সামঞ্জস্য
AGP API যেগুলির উপর নেভিগেশন সেফ Args Gradle প্লাগইন নির্ভর করে তা সরিয়ে দেওয়া হয়েছে। AGP 7.1 নেভিগেশন সেফ আর্গস সংস্করণ 2.4.0-rc1 বা 2.4.0 এর সাথে কাজ করে না, তবে 2.5.0-alpha01 এবং 2.4.1 সংস্করণের সাথে কাজ করবে। ইতিমধ্যে, একটি সমাধান হিসাবে, আপনি নেভিগেশন সেফ আর্গস, নেভিগেশন 2.5.0-স্ন্যাপশট-এর একটি স্ন্যাপশট বিল্ড সহ AGP 7.1 ব্যবহার করতে পারেন। স্ন্যাপশট বিল্ড ব্যবহার করতে, বিল্ড আইডি #8054565 সহ স্ন্যাপশট নির্দেশাবলী অনুসরণ করুন।
উপরন্তু, নেভিগেশন সেফ আর্গস সংস্করণ 2.4.1 এবং 2.5.0 আর AGP 4.2 এর সাথে কাজ করবে না; Safe Args-এর সেই সংস্করণগুলি ব্যবহার করতে, আপনাকে অবশ্যই AGP 7.0 এবং উচ্চতর ব্যবহার করতে হবে৷
স্বয়ংক্রিয় উপাদান তৈরি অক্ষম করুন
AGP 8.0 শুরু করে, স্বয়ংক্রিয় উপাদান তৈরি ডিফল্টরূপে অক্ষম করা হবে। বর্তমানে, AGP 7.1 স্বয়ংক্রিয়ভাবে প্রতিটি বিল্ড ভেরিয়েন্টের জন্য একটি কম্পোনেন্ট তৈরি করে, যার নাম বিল্ড ভেরিয়েন্টের মতোই, এবং একটি all
কম্পোনেন্ট যাতে সমস্ত বিল্ড ভেরিয়েন্ট রয়েছে। এই স্বয়ংক্রিয় উপাদান তৈরি নিষ্ক্রিয় করা হবে. নতুন আচরণে রূপান্তর করতে, আপনাকে android.disableAutomaticComponentCreation
true.
আরও তথ্যের জন্য, ম্যাভেন পাবলিশ প্লাগইন ব্যবহার করুন দেখুন।
ফায়ারবেস পারফরম্যান্স মনিটরিং সামঞ্জস্য
AGP 7.1 ফায়ারবেস পারফরম্যান্স মনিটরিং গ্রেডল প্লাগইন সংস্করণ 1.4.0 এবং তার নিচের সাথে বেমানান। AGP আপগ্রেড সহকারী স্বয়ংক্রিয়ভাবে প্লাগইনটিকে 1.4.1 সংস্করণে আপডেট করবে না, তাই আপনি যদি firebase-perf
ব্যবহার করেন এবং AGP-কে 7.1-এ আপগ্রেড করতে চান, তাহলে আপনাকে এই বিশেষ আপগ্রেডটি ম্যানুয়ালি করতে হবে।
পরিচিত সমস্যা
এই বিভাগে Android Gradle প্লাগইন 7.1.0-এ বিদ্যমান পরিচিত সমস্যাগুলি বর্ণনা করা হয়েছে।
হিল্ট প্লাগইন ব্যবহার করে এমন একটি অ্যাপ প্রকল্পের ইউনিট পরীক্ষা করার সমস্যা
ইউনিট টেস্ট ক্লাসপাথে নন-ইনস্ট্রুমেন্টেড অ্যাপ ক্লাস রয়েছে, যার মানে হিল্ট ইউনিট টেস্ট চালানোর সময় ডিপেন্ডেন্সি ইনজেকশন পরিচালনা করার জন্য অ্যাপ ক্লাসগুলিকে ইন্সট্রুমেন্ট করে না।
এই সমস্যাটি 7.1.1 রিলিজের সাথে ঠিক করা হবে, সংখ্যা #213534628 দেখুন।