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

অ্যান্ড্রয়েড প্লাগইনের এই সংস্করণটির জন্য নিম্নলিখিত বিষয়গুলো প্রয়োজন:

সর্বনিম্ন সংস্করণ ডিফল্ট সংস্করণ নোট
গ্রেডল ৪.৬ ৪.৬ আরও জানতে, Gradle আপডেট করা দেখুন।
এসডিকে বিল্ড টুলস ২৮.০.৩ ২৮.০.৩ এসডিকে বিল্ড টুলস ইনস্টল বা কনফিগার করুন

৩.২.১ (অক্টোবর ২০১৮)

এই আপডেটের ফলে, SDK বিল্ড টুলস-এর জন্য আপনাকে আর কোনো ভার্সন নির্দিষ্ট করতে হবে না। অ্যান্ড্রয়েড গ্রেডল প্লাগইনটি এখন ডিফল্টরূপে ভার্সন ২৮.০.৩ ব্যবহার করে।

নতুন বৈশিষ্ট্য

  • অ্যান্ড্রয়েড অ্যাপ বান্ডেল তৈরির সুবিধা: অ্যাপ বান্ডেল হলো একটি নতুন আপলোড ফরম্যাট, যা আপনার অ্যাপের সমস্ত কম্পাইল করা কোড এবং রিসোর্স অন্তর্ভুক্ত করে এবং গুগল প্লে স্টোরের জন্য APK তৈরি ও সাইন করার প্রক্রিয়াকে স্থগিত রাখে। এর ফলে আপনাকে আর একাধিক APK তৈরি, সাইন এবং পরিচালনা করতে হবে না, এবং ব্যবহারকারীরা তাদের ডিভাইসের জন্য অপ্টিমাইজ করা ছোট আকারের ডাউনলোড ফাইল পাবেন। আরও জানতে, ‘অ্যান্ড্রয়েড অ্যাপ বান্ডেল সম্পর্কে’ পড়ুন।

  • অ্যানোটেশন প্রসেসর ব্যবহার করার সময় উন্নত ইনক্রিমেন্টাল বিল্ড স্পিডের জন্য সাপোর্ট: AnnotationProcessorOptions DSL এখন CommandLineArgumentProvider এক্সটেন্ড করে, যা আপনাকে অথবা অ্যানোটেশন প্রসেসরের লেখককে ইনক্রিমেন্টাল বিল্ড প্রপার্টি টাইপ অ্যানোটেশন ব্যবহার করে প্রসেসরের জন্য আর্গুমেন্ট অ্যানোটেট করার সুযোগ দেয়। এই অ্যানোটেশনগুলো ব্যবহার করলে ইনক্রিমেন্টাল এবং ক্যাশড ক্লিন বিল্ডের সঠিকতা ও পারফরম্যান্স উন্নত হয়। আরও জানতে, “Pass arguments to annotation processors” পড়ুন।

  • AndroidX-এর জন্য মাইগ্রেশন টুল: Android 3.2 এবং তার উচ্চতর সংস্করণের সাথে Android Gradle প্লাগইন 3.2.0 ব্যবহার করার সময়, আপনি মেনু বার থেকে Refactor > Migrate to AndroidX নির্বাচন করে আপনার প্রোজেক্টের লোকাল এবং Maven ডিপেন্ডেন্সিগুলোকে নতুন AndroidX লাইব্রেরি ব্যবহার করার জন্য মাইগ্রেট করতে পারেন। এই মাইগ্রেশন টুলটি ব্যবহার করলে আপনার gradle.properties ফাইলে নিম্নলিখিত ফ্ল্যাগগুলোও true সেট হয়ে যায়:

    • android.useAndroidX : যখন এটি ' true তে সেট করা হয়, তখন অ্যান্ড্রয়েড প্লাগইনটি সাপোর্ট লাইব্রেরির পরিবর্তে উপযুক্ত AndroidX লাইব্রেরি ব্যবহার করে। যখন এই ফ্ল্যাগটি নির্দিষ্ট করা থাকে না, তখন প্লাগইনটি ডিফল্টরূপে এটিকে false এ সেট করে।

    • android.enableJetifier : যখন এটি ' true তে সেট করা হয়, তখন অ্যান্ড্রয়েড প্লাগইনটি বিদ্যমান থার্ড-পার্টি লাইব্রেরিগুলোর বাইনারি পুনরায় লিখে সেগুলোকে স্বয়ংক্রিয়ভাবে AndroidX ব্যবহার করার জন্য মাইগ্রেট করে। যখন এই ফ্ল্যাগটি নির্দিষ্ট করা থাকে না, তখন প্লাগইনটি ডিফল্টরূপে এটিকে false এ সেট করে। আপনি এই ফ্ল্যাগটি শুধুমাত্র তখনই true তে সেট করতে পারবেন যখন android.useAndroidXtrue তে সেট করা থাকে, অন্যথায় আপনি একটি বিল্ড এরর পাবেন।

      আরও জানতে, AndroidX ওভারভিউ পড়ুন।

  • নতুন কোড শ্রিংকার, R8: R8 হলো কোড শ্রিংকিং এবং অবফাসকেশনের একটি নতুন টুল যা ProGuard-কে প্রতিস্থাপন করে। আপনার প্রোজেক্টের gradle.properties ফাইলে নিম্নলিখিতটি অন্তর্ভুক্ত করে আপনি R8-এর প্রিভিউ সংস্করণ ব্যবহার শুরু করতে পারেন:

            android.enableR8 = true
            
            android.enableR8 = true
            

আচরণের পরিবর্তন

  • D8 ব্যবহার করে ডিসুগারিং এখন ডিফল্টরূপে সক্রিয় করা হয়েছে।

  • AAPT2 এখন গুগলের মাভেন রিপোতে রয়েছে। AAPT2 ব্যবহার করতে, নিশ্চিত করুন যে আপনার build.gradle ফাইলে google() ডিপেন্ডেন্সিটি রয়েছে, যেমনটি নিচে দেখানো হয়েছে:

              buildscript {
                    repositories {
                        google() // here
                        jcenter()
                    }
                    dependencies {
                        classpath 'com.android.tools.build:gradle:3.2.0'
                    }
                }
                allprojects {
                    repositories {
                        google() // and here
                        jcenter()
                }
              
              buildscript {
                    repositories {
                        google() // here
                        jcenter()
                    }
                    dependencies {
                        classpath 'com.android.tools.build:gradle:3.2.0'
                    }
                }
                allprojects {
                    repositories {
                        google() // and here
                        jcenter()
                }
              
  • নেটিভ মাল্টিডেক্স এখন ডিফল্টরূপে সক্রিয় করা হয়েছে। অ্যান্ড্রয়েড স্টুডিও-র পূর্ববর্তী সংস্করণগুলিতে, অ্যান্ড্রয়েড এপিআই লেভেল ২১ বা তার উচ্চতর সংস্করণে চালিত কোনো ডিভাইসে অ্যাপের ডিবাগ সংস্করণ ডেপ্লয় করার সময় নেটিভ মাল্টিডেক্স সক্রিয় করা হতো। এখন, আপনি ডিভাইসে ডেপ্লয় করুন বা রিলিজের জন্য এপিকে তৈরি করুন, অ্যান্ড্রয়েড গ্রেডল প্লাগইনটি সেই সমস্ত মডিউলের জন্য নেটিভ মাল্টিডেক্স সক্রিয় করে, যেগুলিতে minSdkVersion=21 বা তার উচ্চতর মান সেট করা আছে।

  • প্লাগইনটি এখন প্রোটোবাফ প্লাগইন (0.8.6), কোটলিন প্লাগইন (1.2.50), এবং ক্র্যাশলিটিক্স প্লাগইন (1.25.4)-এর ন্যূনতম সংস্করণ বাধ্যতামূলক করেছে।

  • ফিচার মডিউল প্লাগইন, com.android.feature , এখন মডিউলের নাম উল্লেখ করার সময় শুধুমাত্র অক্ষর, সংখ্যা এবং আন্ডারস্কোর ব্যবহার বাধ্যতামূলক করেছে। উদাহরণস্বরূপ, যদি আপনার ফিচার মডিউলের নামে ড্যাশ থাকে, তাহলে আপনি একটি বিল্ড এরর পাবেন। এই আচরণটি ডাইনামিক ফিচার প্লাগইনের আচরণের অনুরূপ।

বাগ সংশোধন

  • ডেটা বাইন্ডিং যুক্ত প্রোজেক্টগুলিতে JavaCompile এখন ক্যাশেযোগ্য। ( ইস্যু #69243050 )
  • ডেটা বাইন্ডিং সহ লাইব্রেরি মডিউলগুলির জন্য উন্নততর কম্পাইল এভয়ডেন্স। ( ইস্যু #77539932 )
  • যদি কিছু অপ্রত্যাশিত বিল্ড ত্রুটির কারণে পূর্ববর্তী সংস্করণগুলিতে কনফিগার-অন-ডিমান্ড নিষ্ক্রিয় করে থাকেন, তবে এখন আপনি এটি পুনরায় সক্রিয় করতে পারেন। ( ইস্যু #77910727 )