অ্যান্ড্রয়েড গ্রেডল প্লাগইন ২.২.০ (সেপ্টেম্বর ২০১৬)
- নির্ভরশীলতা:
- নতুন:
- গ্রেডল ২.১৪.১ ব্যবহার করা হয়েছে, যাতে পারফরম্যান্সের উন্নতি ও নতুন ফিচার অন্তর্ভুক্ত রয়েছে এবং গ্রেডল ডেমন ব্যবহারের সময় লোকাল প্রিভিলেজ এসক্যালেশনের সুযোগ করে দেওয়া একটি নিরাপত্তা দুর্বলতা সংশোধন করা হয়েছে। আরও বিস্তারিত জানতে, গ্রেডল রিলিজ নোট দেখুন।
-
externalNativeBuild {}DSL ব্যবহার করে, Gradle এখন আপনাকে CMake বা ndk-build দিয়ে আপনার নেটিভ সোর্স লিঙ্ক করতে এবং নেটিভ লাইব্রেরি কম্পাইল করতে দেয়। আপনার নেটিভ লাইব্রেরিগুলো বিল্ড করার পর, Gradle সেগুলোকে আপনার APK-তে প্যাকেজ করে। Gradle-এর সাথে CMake এবং ndk-build ব্যবহারের বিষয়ে আরও জানতে, “Add C and C++ Code to Your Project” পড়ুন। - আপনি যখন কমান্ড লাইন থেকে বিল্ড চালান , তখন গ্রেডল এখন আপনার প্রোজেক্টের জন্য প্রয়োজনীয় কোনো অনুপস্থিত SDK কম্পোনেন্ট বা আপডেট স্বয়ংক্রিয়ভাবে ডাউনলোড করার চেষ্টা করে। আরও জানতে, “গ্রেডল দিয়ে অনুপস্থিত প্যাকেজ স্বয়ংক্রিয়ভাবে ডাউনলোড” পড়ুন।
- একটি নতুন পরীক্ষামূলক ক্যাশিং ফিচার আপনার লাইব্রেরিগুলোকে প্রি-ডেক্স করে, সংরক্ষণ করে এবং সেই প্রি-ডেক্স করা সংস্করণগুলো পুনরায় ব্যবহার করার মাধ্যমে গ্রেডল-এর বিল্ড টাইম দ্রুততর করে। এই পরীক্ষামূলক ফিচারটির ব্যবহার সম্পর্কে আরও জানতে, বিল্ড ক্যাশ গাইডটি পড়ুন।
- একটি নতুন ডিফল্ট প্যাকেজিং পাইপলাইন গ্রহণ করার মাধ্যমে বিল্ড পারফরম্যান্স উন্নত করা হয়েছে, যা একটি টাস্কের মধ্যেই জিপিং, সাইনিং এবং জিপঅ্যালাইনিং-এর কাজ সম্পন্ন করে। আপনার
gradle.propertiesফাইলেandroid.useOldPackaging=trueযোগ করে আপনি পুরোনো প্যাকেজিং টুল ব্যবহারে ফিরে যেতে পারেন। নতুন প্যাকেজিং টুলটি ব্যবহার করার সময়zipalignDebugটাস্কটি পাওয়া যায় না। তবে, আপনিcreateZipAlignTask(String taskName, File inputFile, File outputFile)মেথডটি কল করে নিজেই একটি টাস্ক তৈরি করতে পারেন। - এখন APK সাইনিং-এ প্রচলিত JAR সাইনিং-এর পাশাপাশি APK সিগনেচার স্কিম v2 ব্যবহার করা হয়। এর ফলে তৈরি হওয়া APK ফাইলগুলো সকল অ্যান্ড্রয়েড প্ল্যাটফর্ম গ্রহণ করে। সাইনিং-এর পরে এই APK ফাইলগুলোতে কোনো পরিবর্তন করা হলে, সেগুলোর v2 সিগনেচার অকার্যকর হয়ে যায় এবং ডিভাইসে ইনস্টল করা যায় না। এই ফিচারটি নিষ্ক্রিয় করতে, আপনার মডিউল-স্তরের
build.gradleফাইলে নিম্নলিখিত কোডটি যোগ করুন:গ্রুভি
android { ... signingConfigs { config { ... v2SigningEnabled false } } }
কোটলিন
android { ... signingConfigs { create("config") { ... v2SigningEnabled = false } } }
- মাল্টিডেক্স বিল্ডের জন্য, আপনি এখন ProGuard রুল ব্যবহার করে নির্ধারণ করতে পারেন যে Gradle কোন ক্লাসগুলোকে আপনার অ্যাপের প্রধান DEX ফাইলে কম্পাইল করবে। যেহেতু অ্যান্ড্রয়েড সিস্টেম আপনার অ্যাপ চালু করার সময় প্রথমে প্রধান DEX ফাইলটি লোড করে, তাই আপনি নির্দিষ্ট কিছু ক্লাসকে প্রধান DEX ফাইলে কম্পাইল করে স্টার্টআপের সময় অগ্রাধিকার দিতে পারেন। আপনার প্রধান DEX ফাইলের জন্য বিশেষভাবে একটি ProGuard কনফিগারেশন ফাইল তৈরি করার পর,
buildTypes.multiDexKeepProguardব্যবহার করে কনফিগারেশন ফাইলটির পাথ Gradle-এ পাঠান। এই DSL ব্যবহার করাbuildTypes.proguardFilesব্যবহার করার থেকে ভিন্ন, যা আপনার অ্যাপের জন্য সাধারণ ProGuard রুল সরবরাহ করে এবং প্রধান DEX ফাইলের জন্য কোনো ক্লাস নির্দিষ্ট করে না। -
android:extractNativeLibsফ্ল্যাগের জন্য সমর্থন যোগ করা হয়েছে, যা ডিভাইসে আপনার অ্যাপ ইনস্টল করার সময় সেটির আকার কমাতে পারে। যখন আপনি আপনার অ্যাপ ম্যানিফেস্টের<application>এলিমেন্টে এই ফ্ল্যাগটিকে `falseসেট করেন, তখন গ্রেডল আপনার APK-এর সাথে আপনার নেটিভ লাইব্রেরিগুলোর অসংকুচিত এবং অ্যালাইনড সংস্করণ প্যাকেজ করে। এটি ইনস্টলেশনের সময়PackageManagerAPK থেকে আপনার নেটিভ লাইব্রেরিগুলোকে ডিভাইসের ফাইল সিস্টেমে কপি করা থেকে বিরত রাখে এবং এর অতিরিক্ত সুবিধা হলো এটি আপনার অ্যাপের ডেল্টা আপডেটগুলোকে আরও ছোট করে তোলে। - এখন আপনি প্রোডাক্ট ফ্লেভারের জন্য
versionNameSuffixএবংapplicationIdSuffixনির্দিষ্ট করতে পারবেন। ( ইস্যু ৫৯৬১৪ )
- পরিবর্তনসমূহ:
-
getDefaultProguardFileএখন Gradle-এর জন্য Android প্লাগইন দ্বারা প্রদত্ত ডিফল্ট ProGuard ফাইলগুলো রিটার্ন করে এবং Android SDK-তে থাকা ফাইলগুলো আর ব্যবহার করে না। - জ্যাক কম্পাইলারের উন্নত পারফরম্যান্স এবং বৈশিষ্ট্যসমূহ:
-
testCoverageEnabledtrueসেট করলে Jack এখন Jacoco টেস্ট কভারেজ সমর্থন করে। - অ্যানোটেশন প্রসেসরের জন্য উন্নত সাপোর্ট। আপনার ক্লাসপাথে থাকা অ্যানোটেশন প্রসেসর, যেমন যেকোনো
compileডিপেন্ডেন্সি, আপনার বিল্ডে স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়। এছাড়াও, আপনি আপনার মডিউল-স্তরেরbuild.gradleফাইলেjavaCompileOptions.annotationProcessorOptions {}DSL ব্যবহার করে আপনার বিল্ডে একটি অ্যানোটেশন প্রসেসর নির্দিষ্ট করতে এবং আর্গুমেন্ট পাস করতে পারেন:গ্রুভি
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { className 'com.example.MyProcessor' // Arguments are optional. arguments = [ foo : 'bar' ] } } } }
কোটলিন
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { className = "com.example.MyProcessor" // Arguments are optional. arguments(mapOf(foo to "bar")) } } } }
যদি আপনি কম্পাইল টাইমে কোনো অ্যানোটেশন প্রসেসর প্রয়োগ করতে চান কিন্তু আপনার APK-তে তা অন্তর্ভুক্ত করতে না চান, তাহলে
annotationProcessorডিপেন্ডেন্সি স্কোপটি ব্যবহার করুন:গ্রুভি
dependencies { compile 'com.google.dagger:dagger:2.0' annotationProcessor 'com.google.dagger:dagger-compiler:2.0' // or use buildVariantAnnotationProcessor to target a specific build variant }
কোটলিন
dependencies { implementation("com.google.dagger:dagger:2.0") annotationProcessor("com.google.dagger:dagger-compiler:2.0") // or use buildVariantAnnotationProcessor to target a specific build variant }
- ডিফল্টরূপে, যদি গ্রেডল ডেমন-এর হিপ সাইজ কমপক্ষে ১.৫ জিবি হয়, তাহলে জ্যাক এখন গ্রেডল-এর সাথে একই প্রসেসে চলে। ডেমন হিপ সাইজ পরিবর্তন করতে, আপনার
gradle.propertiesফাইলে নিম্নলিখিত লাইনটি যোগ করুন:# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
আপনি যে প্যারামিটারগুলো সেট করতে পারবেন তার তালিকা পেতে, কমান্ড লাইন থেকে নিম্নলিখিতটি চালান:
java -jar /build-tools/jack.jar --help-properties
-
-
| সর্বনিম্ন সংস্করণ | ডিফল্ট সংস্করণ | নোট | |
|---|---|---|---|
| গ্রেডল | ২.১৪.১ | ২.১৪.১ | আরও জানতে, Gradle আপডেট করা দেখুন। |
| এসডিকে বিল্ড টুলস | ২৩.০.২ | ২৩.০.২ | এসডিকে বিল্ড টুলস ইনস্টল বা কনফিগার করুন । |