অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.4.0 (এপ্রিল 2019)
অ্যান্ড্রয়েড প্লাগইনের এই সংস্করণটির জন্য নিম্নলিখিতগুলি প্রয়োজন:
ন্যূনতম সংস্করণ | ডিফল্ট সংস্করণ | নোট | |
---|---|---|---|
গ্রেডল | 5.1.1 | 5.1.1 | আরও জানতে, Gradle আপডেট করা দেখুন। Gradle 5.0 এবং উচ্চতর ব্যবহার করার সময়, ডিফল্ট Gradle ডেমন মেমরির হিপের আকার 1 GB থেকে 512 MB পর্যন্ত কমে যায়। এর ফলে বিল্ড পারফরম্যান্স রিগ্রেশন হতে পারে। এই ডিফল্ট সেটিং ওভাররাইড করতে, আপনার প্রকল্পের gradle.properties ফাইলে Gradle ডেমন হিপের আকার নির্দিষ্ট করুন। |
SDK বিল্ড টুলস | 28.0.3 | 28.0.3 | SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন । |
3.4.3 (জুলাই 2020)
এই ছোটখাট আপডেটটি Android 11-এ প্যাকেজ দৃশ্যমানতার জন্য নতুন ডিফল্ট সেটিংস এবং বৈশিষ্ট্যগুলির সাথে সামঞ্জস্যপূর্ণতা সমর্থন করে৷
বিস্তারিত জানার জন্য 4.0.1 রিলিজ নোট দেখুন।
3.4.2 (জুলাই 2019)
এই ছোটখাট আপডেটটি অ্যান্ড্রয়েড স্টুডিও 3.4.2 সমর্থন করে এবং এতে বিভিন্ন বাগ ফিক্স এবং পারফরম্যান্সের উন্নতি অন্তর্ভুক্ত রয়েছে। উল্লেখযোগ্য বাগ ফিক্সের তালিকা দেখতে, রিলিজ আপডেট ব্লগে সম্পর্কিত পোস্ট পড়ুন।
3.4.1 (মে 2019)
এই ক্ষুদ্র আপডেটটি অ্যান্ড্রয়েড স্টুডিও 3.4.1 সমর্থন করে এবং এতে বিভিন্ন বাগ ফিক্স এবং পারফরম্যান্সের উন্নতি অন্তর্ভুক্ত রয়েছে। উল্লেখযোগ্য বাগ ফিক্সের তালিকা দেখতে, রিলিজ আপডেট ব্লগে সম্পর্কিত পোস্ট পড়ুন।
নতুন বৈশিষ্ট্য
নতুন লিন্ট চেক নির্ভরতা কনফিগারেশন:
lintChecks
এর আচরণ পরিবর্তিত হয়েছে এবং একটি নতুন নির্ভরতা কনফিগারেশন,lintPublish
, চালু করা হয়েছে যাতে আপনার অ্যান্ড্রয়েড লাইব্রেরিতে কোন লিন্ট চেকগুলি প্যাকেজ করা হয় তার উপর আপনাকে আরও নিয়ন্ত্রণ দিতে পারে৷-
lintChecks
: এটি একটি বিদ্যমান কনফিগারেশন যা আপনার লিন্ট চেকগুলির জন্য ব্যবহার করা উচিত যা আপনি শুধুমাত্র স্থানীয়ভাবে আপনার প্রকল্প তৈরি করার সময় চালাতে চান। আপনি যদি পূর্বে প্রকাশিত AAR-এ লিন্ট চেক অন্তর্ভুক্ত করার জন্যlintChecks
নির্ভরতা কনফিগারেশন ব্যবহার করে থাকেন, তাহলে নীচে বর্ণিত নতুনlintPublish
কনফিগারেশন ব্যবহার করার জন্য আপনাকে সেই নির্ভরতাগুলি স্থানান্তর করতে হবে। -
lintPublish
: লাইব্রেরি প্রকল্পগুলিতে এই নতুন কনফিগারেশনটি ব্যবহার করুন লিন্ট চেকগুলির জন্য যা আপনি প্রকাশিত AAR-এ অন্তর্ভুক্ত করতে চান, নীচে দেখানো হয়েছে৷ এর মানে হল যে প্রকল্পগুলি আপনার লাইব্রেরি ব্যবহার করে সেগুলিও সেই লিন্ট চেকগুলি প্রয়োগ করে৷
নিম্নলিখিত কোড নমুনা স্থানীয় অ্যান্ড্রয়েড লাইব্রেরি প্রকল্পে উভয় নির্ভরতা কনফিগারেশন ব্যবহার করে।
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks project(':lint') // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish project(':lintpublish') }
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks(project(":lint")) // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish(project(":lintpublish")) }
সাধারণভাবে, প্যাকেজিং এবং সাইনিং কাজগুলির একটি সামগ্রিক বিল্ড গতির উন্নতি দেখতে হবে। আপনি যদি এই কাজের সাথে সম্পর্কিত একটি কর্মক্ষমতা রিগ্রেশন লক্ষ্য করেন, দয়া করে একটি বাগ রিপোর্ট করুন ।
-
আচরণ পরিবর্তন
অ্যান্ড্রয়েড ইন্সট্যান্ট অ্যাপস ফিচার প্লাগইন অবচয় সংক্রান্ত সতর্কতা: আপনি যদি এখনও আপনার ইনস্ট্যান্ট অ্যাপ তৈরি করতে
com.android.feature
প্লাগইন ব্যবহার করে থাকেন, তাহলে Android Gradle প্লাগইন 3.4.0 আপনাকে অবচয় সংক্রান্ত সতর্কতা দেবে। আপনি এখনও প্লাগইনের ভবিষ্যতের সংস্করণগুলিতে আপনার তাত্ক্ষণিক অ্যাপ তৈরি করতে পারেন তা নিশ্চিত করতে, আপনার তাত্ক্ষণিক অ্যাপটি ডায়নামিক বৈশিষ্ট্য প্লাগইন ব্যবহার করে স্থানান্তর করুন, যা আপনাকে একটি একক Android অ্যাপ বান্ডেল থেকে আপনার ইনস্টল করা এবং তাত্ক্ষণিক অ্যাপ উভয় অভিজ্ঞতা প্রকাশ করতে দেয়৷R8 ডিফল্টরূপে সক্রিয়: R8 এক ধাপে ডিসুগারিং, সঙ্কুচিত করা, অস্পষ্ট করা, অপ্টিমাইজ করা এবং ডেক্সিংকে একীভূত করে—যার ফলে লক্ষণীয় বিল্ড কর্মক্ষমতা উন্নতি হয় । R8 অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.3.0-এ চালু করা হয়েছিল এবং এখন প্লাগইন 3.4.0 এবং উচ্চতর ব্যবহার করে অ্যাপ এবং অ্যান্ড্রয়েড লাইব্রেরি উভয় প্রকল্পের জন্য ডিফল্টরূপে সক্রিয় করা হয়েছে।
নীচের ছবিটি R8 চালু করার আগে কম্পাইল প্রক্রিয়ার একটি উচ্চ-স্তরের ওভারভিউ প্রদান করে।
এখন, R8 এর সাথে, ডিসুগারিং, সঙ্কুচিত করা, অস্পষ্ট করা, অপ্টিমাইজ করা এবং ডেক্সিং (D8) সবই এক ধাপে সম্পন্ন হয়েছে, যেমনটি নীচে চিত্রিত হয়েছে।
মনে রাখবেন, R8 আপনার বিদ্যমান ProGuard নিয়মের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে, তাই R8 থেকে উপকৃত হওয়ার জন্য আপনাকে সম্ভবত কোনো পদক্ষেপ নিতে হবে না। যাইহোক, যেহেতু এটি প্রোগার্ডের জন্য একটি ভিন্ন প্রযুক্তি যা বিশেষভাবে অ্যান্ড্রয়েড প্রকল্পগুলির জন্য ডিজাইন করা হয়েছে, সঙ্কুচিত এবং অপ্টিমাইজেশানের ফলে কোডটি সরানো হতে পারে যা প্রোগার্ড নাও থাকতে পারে। সুতরাং, এই অসম্ভাব্য পরিস্থিতিতে, আপনার বিল্ড আউটপুটে সেই কোডটি রাখার জন্য আপনাকে অতিরিক্ত নিয়ম যুক্ত করতে হতে পারে।
আপনি যদি R8 ব্যবহার করে সমস্যার সম্মুখীন হন, তাহলে আপনার সমস্যার সমাধান আছে কিনা তা পরীক্ষা করতে R8 সামঞ্জস্যপূর্ণ FAQ পড়ুন। যদি একটি সমাধান নথিভুক্ত না হয়, দয়া করে একটি বাগ রিপোর্ট করুন ৷ আপনি আপনার প্রকল্পের gradle.properties
ফাইলে নিম্নলিখিত লাইনগুলির মধ্যে একটি যোগ করে R8 নিষ্ক্রিয় করতে পারেন:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
দ্রষ্টব্য: একটি প্রদত্ত বিল্ড টাইপের জন্য, আপনি যদি আপনার অ্যাপ মডিউলের build.gradle
ফাইলে useProguard
false
সেট করেন, তাহলে Android Gradle প্লাগইন R8 ব্যবহার করে সেই বিল্ড টাইপের জন্য আপনার অ্যাপের কোড সঙ্কুচিত করতে, আপনি আপনার প্রোজেক্টের gradle.properties
ফাইল।
-
ndkCompile
বাতিল করা হয়েছে: আপনি যদি আপনার নেটিভ লাইব্রেরি কম্পাইল করতেndkBuild
ব্যবহার করার চেষ্টা করেন তবে আপনি এখন একটি বিল্ড ত্রুটি পাবেন। আপনার প্রকল্পে C এবং C++ কোড যোগ করতে আপনার পরিবর্তে CMake বা ndk-build ব্যবহার করা উচিত।
পরিচিত সমস্যা
অনন্য প্যাকেজ নামের সঠিক ব্যবহার বর্তমানে প্রয়োগ করা হয়নি তবে প্লাগইনের পরবর্তী সংস্করণগুলিতে আরও কঠোর হবে। অ্যান্ড্রয়েড গ্রেডল প্লাগইন সংস্করণ 3.4.0-এ, আপনি আপনার
gradle.properties
ফাইলে নীচের লাইন যোগ করে আপনার প্রকল্প গ্রহণযোগ্য প্যাকেজ নাম ঘোষণা করে কিনা তা পরীক্ষা করতে অপ্ট-ইন করতে পারেন।android.uniquePackageNames = true
অ্যান্ড্রয়েড গ্রেডল প্লাগইনের মাধ্যমে প্যাকেজের নাম সেট করার বিষয়ে আরও জানতে, অ্যাপ্লিকেশন আইডি সেট করুন দেখুন।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.4.0 (এপ্রিল 2019)
অ্যান্ড্রয়েড প্লাগইনের এই সংস্করণটির জন্য নিম্নলিখিতগুলি প্রয়োজন:
ন্যূনতম সংস্করণ | ডিফল্ট সংস্করণ | নোট | |
---|---|---|---|
গ্রেডল | 5.1.1 | 5.1.1 | আরও জানতে, Gradle আপডেট করা দেখুন। Gradle 5.0 এবং উচ্চতর ব্যবহার করার সময়, ডিফল্ট Gradle ডেমন মেমরির হিপের আকার 1 GB থেকে 512 MB পর্যন্ত কমে যায়। এর ফলে বিল্ড পারফরম্যান্স রিগ্রেশন হতে পারে। এই ডিফল্ট সেটিং ওভাররাইড করতে, আপনার প্রকল্পের gradle.properties ফাইলে Gradle ডেমন হিপের আকার নির্দিষ্ট করুন। |
SDK বিল্ড টুলস | 28.0.3 | 28.0.3 | SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন । |
3.4.3 (জুলাই 2020)
এই ছোটখাট আপডেটটি Android 11-এ প্যাকেজ দৃশ্যমানতার জন্য নতুন ডিফল্ট সেটিংস এবং বৈশিষ্ট্যগুলির সাথে সামঞ্জস্যপূর্ণতা সমর্থন করে৷
বিস্তারিত জানার জন্য 4.0.1 রিলিজ নোট দেখুন।
3.4.2 (জুলাই 2019)
এই ছোটখাট আপডেটটি অ্যান্ড্রয়েড স্টুডিও 3.4.2 সমর্থন করে এবং এতে বিভিন্ন বাগ ফিক্স এবং পারফরম্যান্সের উন্নতি অন্তর্ভুক্ত রয়েছে। উল্লেখযোগ্য বাগ ফিক্সের তালিকা দেখতে, রিলিজ আপডেট ব্লগে সম্পর্কিত পোস্ট পড়ুন।
3.4.1 (মে 2019)
এই ক্ষুদ্র আপডেটটি অ্যান্ড্রয়েড স্টুডিও 3.4.1 সমর্থন করে এবং এতে বিভিন্ন বাগ ফিক্স এবং পারফরম্যান্সের উন্নতি অন্তর্ভুক্ত রয়েছে। উল্লেখযোগ্য বাগ ফিক্সের তালিকা দেখতে, রিলিজ আপডেট ব্লগে সম্পর্কিত পোস্ট পড়ুন।
নতুন বৈশিষ্ট্য
নতুন লিন্ট চেক নির্ভরতা কনফিগারেশন:
lintChecks
এর আচরণ পরিবর্তিত হয়েছে এবং একটি নতুন নির্ভরতা কনফিগারেশন,lintPublish
, চালু করা হয়েছে যাতে আপনার অ্যান্ড্রয়েড লাইব্রেরিতে কোন লিন্ট চেকগুলি প্যাকেজ করা হয় তার উপর আপনাকে আরও নিয়ন্ত্রণ দিতে পারে৷-
lintChecks
: এটি একটি বিদ্যমান কনফিগারেশন যা আপনার লিন্ট চেকগুলির জন্য ব্যবহার করা উচিত যা আপনি শুধুমাত্র স্থানীয়ভাবে আপনার প্রকল্প তৈরি করার সময় চালাতে চান। আপনি যদি পূর্বে প্রকাশিত AAR-এ লিন্ট চেক অন্তর্ভুক্ত করার জন্যlintChecks
নির্ভরতা কনফিগারেশন ব্যবহার করে থাকেন, তাহলে নীচে বর্ণিত নতুনlintPublish
কনফিগারেশন ব্যবহার করার জন্য আপনাকে সেই নির্ভরতাগুলি স্থানান্তর করতে হবে। -
lintPublish
: লাইব্রেরি প্রকল্পগুলিতে এই নতুন কনফিগারেশনটি ব্যবহার করুন লিন্ট চেকগুলির জন্য যা আপনি প্রকাশিত AAR-এ অন্তর্ভুক্ত করতে চান, নীচে দেখানো হয়েছে৷ এর মানে হল যে প্রকল্পগুলি আপনার লাইব্রেরি ব্যবহার করে সেগুলিও সেই লিন্ট চেকগুলি প্রয়োগ করে৷
নিম্নলিখিত কোড নমুনা স্থানীয় অ্যান্ড্রয়েড লাইব্রেরি প্রকল্পে উভয় নির্ভরতা কনফিগারেশন ব্যবহার করে।
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks project(':lint') // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish project(':lintpublish') }
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks(project(":lint")) // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish(project(":lintpublish")) }
সাধারণভাবে, প্যাকেজিং এবং সাইনিং কাজগুলির একটি সামগ্রিক বিল্ড গতির উন্নতি দেখতে হবে। আপনি যদি এই কাজের সাথে সম্পর্কিত একটি কর্মক্ষমতা রিগ্রেশন লক্ষ্য করেন, দয়া করে একটি বাগ রিপোর্ট করুন ।
-
আচরণ পরিবর্তন
অ্যান্ড্রয়েড ইন্সট্যান্ট অ্যাপস ফিচার প্লাগইন অবচয় সংক্রান্ত সতর্কতা: আপনি যদি এখনও আপনার ইনস্ট্যান্ট অ্যাপ তৈরি করতে
com.android.feature
প্লাগইন ব্যবহার করে থাকেন, তাহলে Android Gradle প্লাগইন 3.4.0 আপনাকে অবচয় সংক্রান্ত সতর্কতা দেবে। আপনি এখনও প্লাগইনের ভবিষ্যতের সংস্করণগুলিতে আপনার তাত্ক্ষণিক অ্যাপ তৈরি করতে পারেন তা নিশ্চিত করতে, আপনার তাত্ক্ষণিক অ্যাপটি ডায়নামিক বৈশিষ্ট্য প্লাগইন ব্যবহার করে স্থানান্তর করুন, যা আপনাকে একটি একক Android অ্যাপ বান্ডেল থেকে আপনার ইনস্টল করা এবং তাত্ক্ষণিক অ্যাপ উভয় অভিজ্ঞতা প্রকাশ করতে দেয়৷R8 ডিফল্টরূপে সক্রিয়: R8 এক ধাপে ডিসুগারিং, সঙ্কুচিত করা, অস্পষ্ট করা, অপ্টিমাইজ করা এবং ডেক্সিংকে একীভূত করে—যার ফলে লক্ষণীয় বিল্ড কর্মক্ষমতা উন্নতি হয় । R8 অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.3.0-এ চালু করা হয়েছিল এবং এখন প্লাগইন 3.4.0 এবং উচ্চতর ব্যবহার করে অ্যাপ এবং অ্যান্ড্রয়েড লাইব্রেরি উভয় প্রকল্পের জন্য ডিফল্টরূপে সক্রিয় করা হয়েছে।
নীচের ছবিটি R8 চালু করার আগে কম্পাইল প্রক্রিয়ার একটি উচ্চ-স্তরের ওভারভিউ প্রদান করে।
এখন, R8 এর সাথে, ডিসুগারিং, সঙ্কুচিত করা, অস্পষ্ট করা, অপ্টিমাইজ করা এবং ডেক্সিং (D8) সবই এক ধাপে সম্পন্ন হয়েছে, যেমনটি নীচে চিত্রিত হয়েছে।
মনে রাখবেন, R8 আপনার বিদ্যমান ProGuard নিয়মের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে, তাই R8 থেকে উপকৃত হওয়ার জন্য আপনাকে সম্ভবত কোনো পদক্ষেপ নিতে হবে না। যাইহোক, যেহেতু এটি প্রোগার্ডের জন্য একটি ভিন্ন প্রযুক্তি যা বিশেষভাবে অ্যান্ড্রয়েড প্রকল্পগুলির জন্য ডিজাইন করা হয়েছে, সঙ্কুচিত এবং অপ্টিমাইজেশানের ফলে কোডটি সরানো হতে পারে যা প্রোগার্ড নাও থাকতে পারে। সুতরাং, এই অসম্ভাব্য পরিস্থিতিতে, আপনার বিল্ড আউটপুটে সেই কোডটি রাখার জন্য আপনাকে অতিরিক্ত নিয়ম যুক্ত করতে হতে পারে।
আপনি যদি R8 ব্যবহার করে সমস্যার সম্মুখীন হন, তাহলে আপনার সমস্যার সমাধান আছে কিনা তা পরীক্ষা করতে R8 সামঞ্জস্যপূর্ণ FAQ পড়ুন। যদি একটি সমাধান নথিভুক্ত না হয়, দয়া করে একটি বাগ রিপোর্ট করুন ৷ আপনি আপনার প্রকল্পের gradle.properties
ফাইলে নিম্নলিখিত লাইনগুলির মধ্যে একটি যোগ করে R8 নিষ্ক্রিয় করতে পারেন:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
দ্রষ্টব্য: একটি প্রদত্ত বিল্ড টাইপের জন্য, আপনি যদি আপনার অ্যাপ মডিউলের build.gradle
ফাইলে useProguard
false
সেট করেন, তাহলে Android Gradle প্লাগইন R8 ব্যবহার করে সেই বিল্ড টাইপের জন্য আপনার অ্যাপের কোড সঙ্কুচিত করতে, আপনি আপনার প্রোজেক্টের gradle.properties
ফাইল।
-
ndkCompile
বাতিল করা হয়েছে: আপনি যদি আপনার নেটিভ লাইব্রেরি কম্পাইল করতেndkBuild
ব্যবহার করার চেষ্টা করেন তবে আপনি এখন একটি বিল্ড ত্রুটি পাবেন। আপনার প্রকল্পে C এবং C++ কোড যোগ করতে আপনার পরিবর্তে CMake বা ndk-build ব্যবহার করা উচিত।
পরিচিত সমস্যা
অনন্য প্যাকেজ নামের সঠিক ব্যবহার বর্তমানে প্রয়োগ করা হয়নি তবে প্লাগইনের পরবর্তী সংস্করণগুলিতে আরও কঠোর হবে। অ্যান্ড্রয়েড গ্রেডল প্লাগইন সংস্করণ 3.4.0-এ, আপনি আপনার
gradle.properties
ফাইলে নীচের লাইন যোগ করে আপনার প্রকল্প গ্রহণযোগ্য প্যাকেজ নাম ঘোষণা করে কিনা তা পরীক্ষা করতে অপ্ট-ইন করতে পারেন।android.uniquePackageNames = true
অ্যান্ড্রয়েড গ্রেডল প্লাগইনের মাধ্যমে প্যাকেজের নাম সেট করার বিষয়ে আরও জানতে, অ্যাপ্লিকেশন আইডি সেট করুন দেখুন।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.4.0 (এপ্রিল 2019)
অ্যান্ড্রয়েড প্লাগইনের এই সংস্করণটির জন্য নিম্নলিখিতগুলি প্রয়োজন:
ন্যূনতম সংস্করণ | ডিফল্ট সংস্করণ | নোট | |
---|---|---|---|
গ্রেডল | 5.1.1 | 5.1.1 | আরও জানতে, Gradle আপডেট করা দেখুন। Gradle 5.0 এবং উচ্চতর ব্যবহার করার সময়, ডিফল্ট Gradle ডেমন মেমরির হিপের আকার 1 GB থেকে 512 MB পর্যন্ত কমে যায়। এর ফলে বিল্ড পারফরম্যান্স রিগ্রেশন হতে পারে। এই ডিফল্ট সেটিং ওভাররাইড করতে, আপনার প্রকল্পের gradle.properties ফাইলে Gradle ডেমন হিপের আকার নির্দিষ্ট করুন। |
SDK বিল্ড টুলস | 28.0.3 | 28.0.3 | SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন । |
3.4.3 (জুলাই 2020)
এই ছোটখাট আপডেটটি Android 11-এ প্যাকেজ দৃশ্যমানতার জন্য নতুন ডিফল্ট সেটিংস এবং বৈশিষ্ট্যগুলির সাথে সামঞ্জস্যপূর্ণতা সমর্থন করে৷
বিস্তারিত জানার জন্য 4.0.1 রিলিজ নোট দেখুন।
3.4.2 (জুলাই 2019)
এই ছোটখাট আপডেটটি অ্যান্ড্রয়েড স্টুডিও 3.4.2 সমর্থন করে এবং এতে বিভিন্ন বাগ ফিক্স এবং পারফরম্যান্সের উন্নতি অন্তর্ভুক্ত রয়েছে। উল্লেখযোগ্য বাগ ফিক্সের তালিকা দেখতে, রিলিজ আপডেট ব্লগে সম্পর্কিত পোস্ট পড়ুন।
3.4.1 (মে 2019)
এই ক্ষুদ্র আপডেটটি অ্যান্ড্রয়েড স্টুডিও 3.4.1 সমর্থন করে এবং এতে বিভিন্ন বাগ ফিক্স এবং পারফরম্যান্সের উন্নতি অন্তর্ভুক্ত রয়েছে। উল্লেখযোগ্য বাগ ফিক্সের তালিকা দেখতে, রিলিজ আপডেট ব্লগে সম্পর্কিত পোস্ট পড়ুন।
নতুন বৈশিষ্ট্য
নতুন লিন্ট চেক নির্ভরতা কনফিগারেশন:
lintChecks
এর আচরণ পরিবর্তিত হয়েছে এবং একটি নতুন নির্ভরতা কনফিগারেশন,lintPublish
, চালু করা হয়েছে যাতে আপনার অ্যান্ড্রয়েড লাইব্রেরিতে কোন লিন্ট চেকগুলি প্যাকেজ করা হয় তার উপর আপনাকে আরও নিয়ন্ত্রণ দিতে পারে৷-
lintChecks
: এটি একটি বিদ্যমান কনফিগারেশন যা আপনার লিন্ট চেকগুলির জন্য ব্যবহার করা উচিত যা আপনি শুধুমাত্র স্থানীয়ভাবে আপনার প্রকল্প তৈরি করার সময় চালাতে চান। আপনি যদি পূর্বে প্রকাশিত AAR-এ লিন্ট চেক অন্তর্ভুক্ত করার জন্যlintChecks
নির্ভরতা কনফিগারেশন ব্যবহার করে থাকেন, তাহলে নীচে বর্ণিত নতুনlintPublish
কনফিগারেশন ব্যবহার করার জন্য আপনাকে সেই নির্ভরতাগুলি স্থানান্তর করতে হবে। -
lintPublish
: লাইব্রেরি প্রকল্পগুলিতে এই নতুন কনফিগারেশনটি ব্যবহার করুন লিন্ট চেকগুলির জন্য যা আপনি প্রকাশিত AAR-এ অন্তর্ভুক্ত করতে চান, নীচে দেখানো হয়েছে৷ এর মানে হল যে প্রকল্পগুলি আপনার লাইব্রেরি ব্যবহার করে সেগুলিও সেই লিন্ট চেকগুলি প্রয়োগ করে৷
নিম্নলিখিত কোড নমুনা স্থানীয় অ্যান্ড্রয়েড লাইব্রেরি প্রকল্পে উভয় নির্ভরতা কনফিগারেশন ব্যবহার করে।
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks project(':lint') // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish project(':lintpublish') }
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks(project(":lint")) // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish(project(":lintpublish")) }
সাধারণভাবে, প্যাকেজিং এবং সাইনিং কাজগুলির একটি সামগ্রিক বিল্ড গতির উন্নতি দেখতে হবে। আপনি যদি এই কাজের সাথে সম্পর্কিত একটি কর্মক্ষমতা রিগ্রেশন লক্ষ্য করেন, দয়া করে একটি বাগ রিপোর্ট করুন ।
-
আচরণ পরিবর্তন
অ্যান্ড্রয়েড ইন্সট্যান্ট অ্যাপস ফিচার প্লাগইন অবচয় সংক্রান্ত সতর্কতা: আপনি যদি এখনও আপনার ইনস্ট্যান্ট অ্যাপ তৈরি করতে
com.android.feature
প্লাগইন ব্যবহার করে থাকেন, তাহলে Android Gradle প্লাগইন 3.4.0 আপনাকে অবচয় সংক্রান্ত সতর্কতা দেবে। আপনি এখনও প্লাগইনের ভবিষ্যতের সংস্করণগুলিতে আপনার তাত্ক্ষণিক অ্যাপ তৈরি করতে পারেন তা নিশ্চিত করতে, আপনার তাত্ক্ষণিক অ্যাপটি ডায়নামিক বৈশিষ্ট্য প্লাগইন ব্যবহার করে স্থানান্তর করুন, যা আপনাকে একটি একক Android অ্যাপ বান্ডেল থেকে আপনার ইনস্টল করা এবং তাত্ক্ষণিক অ্যাপ উভয় অভিজ্ঞতা প্রকাশ করতে দেয়৷R8 ডিফল্টরূপে সক্রিয়: R8 এক ধাপে ডিসুগারিং, সঙ্কুচিত করা, অস্পষ্ট করা, অপ্টিমাইজ করা এবং ডেক্সিংকে একীভূত করে—যার ফলে লক্ষণীয় বিল্ড কর্মক্ষমতা উন্নতি হয় । R8 অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.3.0-এ চালু করা হয়েছিল এবং এখন প্লাগইন 3.4.0 এবং উচ্চতর ব্যবহার করে অ্যাপ এবং অ্যান্ড্রয়েড লাইব্রেরি উভয় প্রকল্পের জন্য ডিফল্টরূপে সক্রিয় করা হয়েছে।
নীচের ছবিটি R8 চালু করার আগে কম্পাইল প্রক্রিয়ার একটি উচ্চ-স্তরের ওভারভিউ প্রদান করে।
এখন, R8 এর সাথে, ডিসুগারিং, সঙ্কুচিত করা, অস্পষ্ট করা, অপ্টিমাইজ করা এবং ডেক্সিং (D8) সবই এক ধাপে সম্পন্ন হয়েছে, যেমনটি নীচে চিত্রিত হয়েছে।
মনে রাখবেন, R8 আপনার বিদ্যমান ProGuard নিয়মের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে, তাই R8 থেকে উপকৃত হওয়ার জন্য আপনাকে সম্ভবত কোনো পদক্ষেপ নিতে হবে না। যাইহোক, যেহেতু এটি প্রোগার্ডের জন্য একটি ভিন্ন প্রযুক্তি যা বিশেষভাবে অ্যান্ড্রয়েড প্রকল্পগুলির জন্য ডিজাইন করা হয়েছে, সঙ্কুচিত এবং অপ্টিমাইজেশানের ফলে কোডটি সরানো হতে পারে যা প্রোগার্ড নাও থাকতে পারে। সুতরাং, এই অসম্ভাব্য পরিস্থিতিতে, আপনার বিল্ড আউটপুটে সেই কোডটি রাখার জন্য আপনাকে অতিরিক্ত নিয়ম যুক্ত করতে হতে পারে।
আপনি যদি R8 ব্যবহার করে সমস্যার সম্মুখীন হন, তাহলে আপনার সমস্যার সমাধান আছে কিনা তা পরীক্ষা করতে R8 সামঞ্জস্যপূর্ণ FAQ পড়ুন। যদি একটি সমাধান নথিভুক্ত না হয়, দয়া করে একটি বাগ রিপোর্ট করুন ৷ আপনি আপনার প্রকল্পের gradle.properties
ফাইলে নিম্নলিখিত লাইনগুলির মধ্যে একটি যোগ করে R8 নিষ্ক্রিয় করতে পারেন:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
দ্রষ্টব্য: একটি প্রদত্ত বিল্ড টাইপের জন্য, আপনি যদি আপনার অ্যাপ মডিউলের build.gradle
ফাইলে useProguard
false
সেট করেন, তাহলে Android Gradle প্লাগইন R8 ব্যবহার করে সেই বিল্ড টাইপের জন্য আপনার অ্যাপের কোড সঙ্কুচিত করতে, আপনি আপনার প্রোজেক্টের gradle.properties
ফাইল।
-
ndkCompile
বাতিল করা হয়েছে: আপনি যদি আপনার নেটিভ লাইব্রেরি কম্পাইল করতেndkBuild
ব্যবহার করার চেষ্টা করেন তবে আপনি এখন একটি বিল্ড ত্রুটি পাবেন। আপনার প্রকল্পে C এবং C++ কোড যোগ করতে আপনার পরিবর্তে CMake বা ndk-build ব্যবহার করা উচিত।
পরিচিত সমস্যা
অনন্য প্যাকেজ নামের সঠিক ব্যবহার বর্তমানে প্রয়োগ করা হয়নি তবে প্লাগইনের পরবর্তী সংস্করণগুলিতে আরও কঠোর হবে। অ্যান্ড্রয়েড গ্রেডল প্লাগইন সংস্করণ 3.4.0-এ, আপনি আপনার
gradle.properties
ফাইলে নীচের লাইন যোগ করে আপনার প্রকল্প গ্রহণযোগ্য প্যাকেজ নাম ঘোষণা করে কিনা তা পরীক্ষা করতে অপ্ট-ইন করতে পারেন।android.uniquePackageNames = true
অ্যান্ড্রয়েড গ্রেডল প্লাগইনের মাধ্যমে প্যাকেজের নাম সেট করার বিষয়ে আরও জানতে, অ্যাপ্লিকেশন আইডি সেট করুন দেখুন।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.4.0 (এপ্রিল 2019)
অ্যান্ড্রয়েড প্লাগইনের এই সংস্করণটির জন্য নিম্নলিখিতগুলি প্রয়োজন:
ন্যূনতম সংস্করণ | ডিফল্ট সংস্করণ | নোট | |
---|---|---|---|
গ্রেডল | 5.1.1 | 5.1.1 | আরও জানতে, Gradle আপডেট করা দেখুন। Gradle 5.0 এবং উচ্চতর ব্যবহার করার সময়, ডিফল্ট Gradle ডেমন মেমরির হিপের আকার 1 GB থেকে 512 MB পর্যন্ত কমে যায়। এর ফলে বিল্ড পারফরম্যান্স রিগ্রেশন হতে পারে। এই ডিফল্ট সেটিং ওভাররাইড করতে, আপনার প্রকল্পের gradle.properties ফাইলে Gradle ডেমন হিপের আকার নির্দিষ্ট করুন। |
SDK বিল্ড টুলস | 28.0.3 | 28.0.3 | SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন । |
3.4.3 (জুলাই 2020)
এই ছোটখাট আপডেটটি Android 11-এ প্যাকেজ দৃশ্যমানতার জন্য নতুন ডিফল্ট সেটিংস এবং বৈশিষ্ট্যগুলির সাথে সামঞ্জস্যপূর্ণতা সমর্থন করে৷
বিস্তারিত জানার জন্য 4.0.1 রিলিজ নোট দেখুন।
3.4.2 (জুলাই 2019)
এই ছোটখাট আপডেটটি অ্যান্ড্রয়েড স্টুডিও 3.4.2 সমর্থন করে এবং এতে বিভিন্ন বাগ ফিক্স এবং পারফরম্যান্সের উন্নতি অন্তর্ভুক্ত রয়েছে। উল্লেখযোগ্য বাগ ফিক্সের তালিকা দেখতে, রিলিজ আপডেট ব্লগে সম্পর্কিত পোস্ট পড়ুন।
3.4.1 (মে 2019)
এই ক্ষুদ্র আপডেটটি অ্যান্ড্রয়েড স্টুডিও 3.4.1 সমর্থন করে এবং এতে বিভিন্ন বাগ ফিক্স এবং পারফরম্যান্সের উন্নতি অন্তর্ভুক্ত রয়েছে। উল্লেখযোগ্য বাগ ফিক্সের তালিকা দেখতে, রিলিজ আপডেট ব্লগে সম্পর্কিত পোস্ট পড়ুন।
নতুন বৈশিষ্ট্য
নতুন লিন্ট চেক নির্ভরতা কনফিগারেশন:
lintChecks
এর আচরণ পরিবর্তিত হয়েছে এবং একটি নতুন নির্ভরতা কনফিগারেশন,lintPublish
, চালু করা হয়েছে যাতে আপনার অ্যান্ড্রয়েড লাইব্রেরিতে কোন লিন্ট চেকগুলি প্যাকেজ করা হয় তার উপর আপনাকে আরও নিয়ন্ত্রণ দিতে পারে৷-
lintChecks
: এটি একটি বিদ্যমান কনফিগারেশন যা আপনার লিন্ট চেকগুলির জন্য ব্যবহার করা উচিত যা আপনি শুধুমাত্র স্থানীয়ভাবে আপনার প্রকল্প তৈরি করার সময় চালাতে চান। আপনি যদি পূর্বে প্রকাশিত AAR-এ লিন্ট চেক অন্তর্ভুক্ত করার জন্যlintChecks
নির্ভরতা কনফিগারেশন ব্যবহার করে থাকেন, তাহলে নীচে বর্ণিত নতুনlintPublish
কনফিগারেশন ব্যবহার করার জন্য আপনাকে সেই নির্ভরতাগুলি স্থানান্তর করতে হবে। -
lintPublish
: লাইব্রেরি প্রকল্পগুলিতে এই নতুন কনফিগারেশনটি ব্যবহার করুন লিন্ট চেকগুলির জন্য যা আপনি প্রকাশিত AAR-এ অন্তর্ভুক্ত করতে চান, নীচে দেখানো হয়েছে৷ এর মানে হল যে প্রকল্পগুলি আপনার লাইব্রেরি ব্যবহার করে সেগুলিও সেই লিন্ট চেকগুলি প্রয়োগ করে৷
নিম্নলিখিত কোড নমুনা স্থানীয় অ্যান্ড্রয়েড লাইব্রেরি প্রকল্পে উভয় নির্ভরতা কনফিগারেশন ব্যবহার করে।
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks project(':lint') // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish project(':lintpublish') }
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks(project(":lint")) // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish(project(":lintpublish")) }
সাধারণভাবে, প্যাকেজিং এবং সাইনিং কাজগুলির একটি সামগ্রিক বিল্ড গতির উন্নতি দেখতে হবে। আপনি যদি এই কাজের সাথে সম্পর্কিত একটি কর্মক্ষমতা রিগ্রেশন লক্ষ্য করেন, দয়া করে একটি বাগ রিপোর্ট করুন ।
-
আচরণ পরিবর্তন
অ্যান্ড্রয়েড ইন্সট্যান্ট অ্যাপস ফিচার প্লাগইন অবচয় সংক্রান্ত সতর্কতা: আপনি যদি এখনও আপনার ইনস্ট্যান্ট অ্যাপ তৈরি করতে
com.android.feature
প্লাগইন ব্যবহার করে থাকেন, তাহলে Android Gradle প্লাগইন 3.4.0 আপনাকে অবচয় সংক্রান্ত সতর্কতা দেবে। আপনি এখনও প্লাগইনের ভবিষ্যতের সংস্করণগুলিতে আপনার তাত্ক্ষণিক অ্যাপ তৈরি করতে পারেন তা নিশ্চিত করতে, আপনার তাত্ক্ষণিক অ্যাপটি ডায়নামিক বৈশিষ্ট্য প্লাগইন ব্যবহার করে স্থানান্তর করুন, যা আপনাকে একটি একক Android অ্যাপ বান্ডেল থেকে আপনার ইনস্টল করা এবং তাত্ক্ষণিক অ্যাপ উভয় অভিজ্ঞতা প্রকাশ করতে দেয়৷R8 ডিফল্টরূপে সক্রিয়: R8 এক ধাপে ডিসুগারিং, সঙ্কুচিত করা, অস্পষ্ট করা, অপ্টিমাইজ করা এবং ডেক্সিংকে একীভূত করে—যার ফলে লক্ষণীয় বিল্ড কর্মক্ষমতা উন্নতি হয় । R8 অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.3.0-এ চালু করা হয়েছিল এবং এখন প্লাগইন 3.4.0 এবং উচ্চতর ব্যবহার করে অ্যাপ এবং অ্যান্ড্রয়েড লাইব্রেরি উভয় প্রকল্পের জন্য ডিফল্টরূপে সক্রিয় করা হয়েছে।
নীচের ছবিটি R8 চালু করার আগে কম্পাইল প্রক্রিয়ার একটি উচ্চ-স্তরের ওভারভিউ প্রদান করে।
এখন, R8 এর সাথে, ডিসুগারিং, সঙ্কুচিত করা, অস্পষ্ট করা, অপ্টিমাইজ করা এবং ডেক্সিং (D8) সবই এক ধাপে সম্পন্ন হয়েছে, যেমনটি নীচে চিত্রিত হয়েছে।
মনে রাখবেন, R8 আপনার বিদ্যমান ProGuard নিয়মের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে, তাই R8 থেকে উপকৃত হওয়ার জন্য আপনাকে সম্ভবত কোনো পদক্ষেপ নিতে হবে না। যাইহোক, যেহেতু এটি প্রোগার্ডের জন্য একটি ভিন্ন প্রযুক্তি যা বিশেষভাবে অ্যান্ড্রয়েড প্রকল্পগুলির জন্য ডিজাইন করা হয়েছে, সঙ্কুচিত এবং অপ্টিমাইজেশানের ফলে কোডটি সরানো হতে পারে যা প্রোগার্ড নাও থাকতে পারে। সুতরাং, এই অসম্ভাব্য পরিস্থিতিতে, আপনার বিল্ড আউটপুটে সেই কোডটি রাখার জন্য আপনাকে অতিরিক্ত নিয়ম যোগ করতে হতে পারে।
আপনি যদি R8 ব্যবহার করে সমস্যার সম্মুখীন হন, তাহলে আপনার সমস্যার সমাধান আছে কিনা তা পরীক্ষা করতে R8 সামঞ্জস্যপূর্ণ FAQ পড়ুন। যদি একটি সমাধান নথিভুক্ত না হয়, দয়া করে একটি বাগ রিপোর্ট করুন ৷ আপনি আপনার প্রকল্পের gradle.properties
ফাইলে নিম্নলিখিত লাইনগুলির মধ্যে একটি যোগ করে R8 নিষ্ক্রিয় করতে পারেন:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
দ্রষ্টব্য: একটি প্রদত্ত বিল্ড টাইপের জন্য, আপনি যদি আপনার অ্যাপ মডিউলের build.gradle
ফাইলে useProguard
false
সেট করেন, তাহলে Android Gradle প্লাগইন R8 ব্যবহার করে সেই বিল্ড টাইপের জন্য আপনার অ্যাপের কোড সঙ্কুচিত করতে, আপনি আপনার প্রোজেক্টের gradle.properties
ফাইল।
-
ndkCompile
বাতিল করা হয়েছে: আপনি যদি আপনার নেটিভ লাইব্রেরি কম্পাইল করতেndkBuild
ব্যবহার করার চেষ্টা করেন তবে আপনি এখন একটি বিল্ড ত্রুটি পাবেন। আপনার প্রকল্পে C এবং C++ কোড যোগ করতে আপনার পরিবর্তে CMake বা ndk-build ব্যবহার করা উচিত।
পরিচিত সমস্যা
অনন্য প্যাকেজ নামের সঠিক ব্যবহার বর্তমানে প্রয়োগ করা হয়নি তবে প্লাগইনের পরবর্তী সংস্করণগুলিতে আরও কঠোর হবে। অ্যান্ড্রয়েড গ্রেডল প্লাগইন সংস্করণ 3.4.0-এ, আপনি আপনার
gradle.properties
ফাইলে নীচের লাইন যোগ করে আপনার প্রকল্প গ্রহণযোগ্য প্যাকেজ নাম ঘোষণা করে কিনা তা পরীক্ষা করতে অপ্ট-ইন করতে পারেন।android.uniquePackageNames = true
অ্যান্ড্রয়েড গ্রেডল প্লাগইনের মাধ্যমে প্যাকেজের নাম সেট করার বিষয়ে আরও জানতে, অ্যাপ্লিকেশন আইডি সেট করুন দেখুন।