অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৩.৪.০ (এপ্রিল ২০১৯)
অ্যান্ড্রয়েড প্লাগইনের এই সংস্করণটির জন্য নিম্নলিখিতগুলি প্রয়োজন:
| সর্বনিম্ন সংস্করণ | ডিফল্ট সংস্করণ | মন্তব্য | |
|---|---|---|---|
| গ্রেডল | ৫.১.১ | ৫.১.১ | আরও জানতে, Gradle আপডেট করা দেখুন। Gradle 5.0 এবং উচ্চতর সংস্করণ ব্যবহার করার সময়, ডিফল্ট Gradle ডেমন মেমরি হিপ সাইজ 1 GB থেকে 512 MB এ কমে যায়। এর ফলে বিল্ড পারফরম্যান্স রিগ্রেশন হতে পারে। এই ডিফল্ট সেটিংটি ওভাররাইড করতে, আপনার প্রোজেক্টের gradle.properties ফাইলে Gradle ডেমন হিপ সাইজ নির্দিষ্ট করুন। |
| SDK বিল্ড টুলস | ২৮.০.৩ | ২৮.০.৩ | SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন । |
৩.৪.৩ (জুলাই ২০২০)
এই ছোট আপডেটটি অ্যান্ড্রয়েড ১১-এ প্যাকেজ দৃশ্যমানতার জন্য নতুন ডিফল্ট সেটিংস এবং বৈশিষ্ট্যগুলির সাথে সামঞ্জস্যতা সমর্থন করে।
বিস্তারিত জানার জন্য 4.0.1 রিলিজ নোট দেখুন।
৩.৪.২ (জুলাই ২০১৯)
এই ছোটখাটো আপডেটটি অ্যান্ড্রয়েড স্টুডিও 3.4.2 সমর্থন করে এবং এতে বিভিন্ন বাগ ফিক্স এবং কর্মক্ষমতা উন্নতি অন্তর্ভুক্ত রয়েছে। উল্লেখযোগ্য বাগ ফিক্সের তালিকা দেখতে, রিলিজ আপডেট ব্লগে সম্পর্কিত পোস্টটি পড়ুন।
৩.৪.১ (মে ২০১৯)
এই ছোটখাটো আপডেটটি অ্যান্ড্রয়েড স্টুডিও 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প্লাগইন ব্যবহার করেন, তাহলে অ্যান্ড্রয়েড গ্র্যাডেল প্লাগইন 3.4.0 আপনাকে ডিপ্রিকেশন সতর্কতা দেবে। প্লাগইনের ভবিষ্যতের সংস্করণগুলিতে আপনি এখনও আপনার ইনস্ট্যান্ট অ্যাপ তৈরি করতে পারেন তা নিশ্চিত করার জন্য, আপনার ইনস্ট্যান্ট অ্যাপটিকে ডায়নামিক ফিচার প্লাগইন ব্যবহার করে মাইগ্রেট করুন, যা আপনাকে একটি একক অ্যান্ড্রয়েড অ্যাপ বান্ডেল থেকে আপনার ইনস্টল করা এবং ইনস্ট্যান্ট অ্যাপ উভয় অভিজ্ঞতা প্রকাশ করতে দেয়।R8 ডিফল্টরূপে সক্ষম: R8 এক ধাপে ডিসাগারিং, সঙ্কুচিতকরণ, অস্পষ্টকরণ, অপ্টিমাইজেশন এবং ডেক্সিং-কে একীভূত করে—যার ফলে বিল্ড পারফরম্যান্সের লক্ষণীয় উন্নতি হয় । R8 অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.3.0-এ চালু করা হয়েছিল এবং এখন প্লাগইন 3.4.0 এবং উচ্চতর সংস্করণ ব্যবহার করে অ্যাপ এবং অ্যান্ড্রয়েড লাইব্রেরি প্রকল্প উভয়ের জন্যই ডিফল্টরূপে সক্ষম।
নীচের ছবিটি R8 চালু হওয়ার আগে কম্পাইল প্রক্রিয়ার একটি উচ্চ-স্তরের ওভারভিউ প্রদান করে।

এখন, R8 এর সাহায্যে, ডিসুগারিং, সঙ্কুচিতকরণ, অস্পষ্টকরণ, অপ্টিমাইজেশন এবং ডেক্সিং (D8) সবই এক ধাপে সম্পন্ন হয়, যেমনটি নীচে দেখানো হয়েছে।

মনে রাখবেন, R8 আপনার বিদ্যমান ProGuard নিয়মগুলির সাথে কাজ করার জন্য ডিজাইন করা হয়েছে, তাই R8 থেকে উপকৃত হওয়ার জন্য আপনাকে সম্ভবত কোনও পদক্ষেপ নেওয়ার প্রয়োজন হবে না। তবে, যেহেতু এটি ProGuard থেকে আলাদা একটি প্রযুক্তি যা বিশেষভাবে Android প্রকল্পগুলির জন্য ডিজাইন করা হয়েছে, তাই সঙ্কুচিত এবং অপ্টিমাইজেশনের ফলে এমন কোড সরানো হতে পারে যা ProGuard-এর কাছে নাও থাকতে পারে। তাই, এই অপ্রত্যাশিত পরিস্থিতিতে, আপনার বিল্ড আউটপুটে সেই কোডটি রাখার জন্য আপনাকে অতিরিক্ত নিয়ম যোগ করতে হতে পারে।
যদি আপনার 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 প্লাগইনটি আপনার প্রোজেক্টের gradle.properties ফাইলে R8 অক্ষম করুন না কেন, সেই বিল্ড টাইপের জন্য আপনার অ্যাপের কোড সঙ্কুচিত করতে R8 ব্যবহার করে।
-
ndkCompileবন্ধ করা হয়েছে: এখন যদি আপনি আপনার নেটিভ লাইব্রেরি কম্পাইল করার জন্যndkBuildব্যবহার করার চেষ্টা করেন তাহলে আপনি একটি বিল্ড ত্রুটি পাবেন। আপনার প্রোজেক্টে C এবং C++ কোড যোগ করার জন্য আপনার CMake অথবা ndk-build ব্যবহার করা উচিত।
জ্ঞাত সমস্যা
অনন্য প্যাকেজ নামের সঠিক ব্যবহার বর্তমানে জোরদার করা হচ্ছে না তবে প্লাগইনের পরবর্তী সংস্করণগুলিতে আরও কঠোর করা হবে। Android Gradle প্লাগইন সংস্করণ 3.4.0-এ, আপনি আপনার
gradle.propertiesফাইলে নীচের লাইনটি যোগ করে আপনার প্রকল্পটি গ্রহণযোগ্য প্যাকেজ নাম ঘোষণা করে কিনা তা পরীক্ষা করতে অপ্ট-ইন করতে পারেন।android.uniquePackageNames = trueঅ্যান্ড্রয়েড গ্রেডল প্লাগইনের মাধ্যমে প্যাকেজের নাম সেট করার বিষয়ে আরও জানতে, অ্যাপ্লিকেশন আইডি সেট করুন দেখুন।