Android Gradle প্লাগ-ইন 2.2.0 (সেপ্টেম্বর ২০১৬)

ডিপেন্ডেন্সি:
সর্বনিম্ন ভার্সন ডিফল্ট ভার্সন নোট
Gradle ২.১৪.১ ২.১৪.১ আরও জানতে, Gradle আপডেট করা দেখুন।
SDK বিল্ড টুল ২৩.০.২ ২৩.০.২ SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন।
নতুন:
  • Gradle 2.14.1 ব্যবহার করে, যার মধ্যে পারফর্ম্যান্সের উন্নতি এবং নতুন ফিচার অন্তর্ভুক্ত আছে এবং একটি নিরাপত্তা সংক্রান্ত দুর্বলতা ঠিক করে যা Gradle ডেমন ব্যবহার করার সময় স্থানীয় বিশেষাধিকার বৃদ্ধির অনুমতি দেয়। আরও বিবরণের জন্য, Gradle রিলিজ নোট দেখুন।
  • externalNativeBuild {} DSL ব্যবহার করে, Gradle এখন আপনাকে CMake বা ndk-build ব্যবহার করে আপনার C/C++ সোর্সের সাথে লিঙ্ক করতে এবং C/C++ লাইব্রেরি কম্পাইল করতে দেয়। আপনার C/C++ লাইব্রেরি তৈরি করার পরে, Gradle সেগুলিকে আপনার APK-তে প্যাকেজ করে। Gradle-এর সাথে CMake ও ndk-build ব্যবহার করার ব্যাপারে আরও জানতে, আপনার প্রোজেক্টে C ও C++ কোড যোগ করুন নিবন্ধটি পড়ুন।
  • আপনি যখন কমান্ড লাইন থেকে বিল্ড রান করেন, Gradle এখন আপনার প্রোজেক্ট নির্ভর করে এমন কোনও অনুপস্থিত SDK কম্পোনেন্ট বা আপডেট অটোমেটিক ডাউনলোড করার চেষ্টা করে। আরও জানতে, Gradle-এর মাধ্যমে মিসিং প্যাকেজ অটো-ডাউনলোড করা নিবন্ধটি পড়ুন।
  • একটি নতুন পরীক্ষামূলক ক্যাশিং ফিচার Gradle-কে আপনার লাইব্রেরির প্রি-ডেক্সড ভার্সন প্রি-ডেক্সিং, স্টোরিং এবং পুনরায় ব্যবহার করার মাধ্যমে বিল্ড টাইম দ্রুত করতে দেয়। এই পরীক্ষামূলক ফিচার ব্যবহার করার ব্যাপারে আরও জানতে, বিল্ড ক্যাশে গাইড পড়ুন।
  • নতুন ডিফল্ট প্যাকেজিং পাইপলাইন গ্রহণ করার মাধ্যমে বিল্ড পারফর্ম্যান্স উন্নত করে যা একটি টাস্কে জিপিং, সাইনিং এবং zipaligning ম্যানেজ করে। আপনি gradle.properties ফাইলে android.useOldPackaging=true যোগ করে পুরনো প্যাকেজিং টুল ব্যবহার করতে পারবেন। নতুন প্যাকেজিং টুল ব্যবহার করার সময়, zipalignDebug টাস্ক উপলভ্য থাকে না। তবে, আপনি নিজে createZipAlignTask(String taskName, File inputFile, File outputFile) পদ্ধতি কল করে একটি তৈরি করতে পারেন।
  • APK সাইনিং এখন স্ট্যান্ডার্ড JAR সাইনিং ছাড়াও APK সিগনেচার স্কিম v2 ব্যবহার করে। সব Android প্ল্যাটফর্ম, ফলাফল হিসেবে পাওয়া APK গ্রহণ করে। সাইন করার পরে এইসব APK-তে কোনও পরিবর্তন করা হলে, সেগুলির v2 স্বাক্ষর বাতিল হয়ে যায় এবং ডিভাইসে ইনস্টল করা যায় না। এই ফিচার বন্ধ করতে, আপনার মডিউল-লেভেল build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

    গ্ৰুভি

    android {
      ...
      signingConfigs {
        config {
          ...
          v2SigningEnabled false
        }
      }
    }
          

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • মাল্টিডেক্স বিল্ডের জন্য, আপনি এখন ProGuard নিয়ম ব্যবহার করে নির্ধারণ করতে পারবেন যে কোন ক্লাস Gradle আপনার অ্যাপের প্রধান DEX ফাইলে কম্পাইল করবে। কারণ আপনার অ্যাপ চালু করার সময় Android সিস্টেম প্রথমে প্রধান DEX ফাইল লোড করে, আপনি প্রধান DEX ফাইলে কম্পাইল করার মাধ্যমে স্টার্টআপের সময় নির্দিষ্ট ক্লাসকে অগ্রাধিকার দিতে পারেন। আপনার প্রধান DEX ফাইলের জন্য বিশেষভাবে ProGuard কনফিগারেশন ফাইল তৈরি করার পরে, buildTypes.multiDexKeepProguard ব্যবহার করে Gradle-এ কনফিগারেশন ফাইলের পাথ পাস করুন। এই DSL ব্যবহার করা buildTypes.proguardFiles ব্যবহার করার থেকে আলাদা, যা আপনার অ্যাপের জন্য সাধারণ ProGuard নিয়ম প্রদান করে এবং প্রধান DEX ফাইলের জন্য ক্লাস নির্দিষ্ট করে না।
  • android:extractNativeLibs ফ্ল্যাগের জন্য সহায়তা যোগ করে, যা কোনও ডিভাইসে আপনার অ্যাপ ইনস্টল করার সময় তার সাইজ কমাতে পারে। আপনার অ্যাপ ম্যানিফেস্টের <application> এলিমেন্টে এই ফ্ল্যাগ false-এ সেট করলে, Gradle আপনার APK-এর সাথে আপনার C/C++ লাইব্রেরির আনকমপ্রেসড এবং অ্যালাইন করা ভার্সন প্যাকেজ করে। এটি ইনস্টলেশনের সময় APK থেকে ডিভাইসের ফাইল সিস্টেমে আপনার C/C++ লাইব্রেরি কপি করা থেকে PackageManager-কে আটকায় এবং আপনার অ্যাপের ডেল্টা আপডেট আরও ছোট করার অতিরিক্ত সুবিধা প্রদান করে।
  • আপনি এখন প্রোডাক্ট ফ্লেভারের জন্য versionNameSuffix এবং applicationIdSuffix নির্দিষ্ট করতে পারবেন। (সমস্যা 59614)
পরিবর্তন:
  • getDefaultProguardFile এখন ডিফল্ট ProGuard ফাইল ফিরিয়ে দেয় যা Gradle-এর জন্য Android প্লাগ-ইন প্রদান করে এবং Android SDK-তে থাকা ফাইল আর ব্যবহার করে না।
  • Jack কম্পাইলারের উন্নত পারফর্ম্যান্স ও ফিচার:
    • Jack এখন Jacoco টেস্ট কভারেজ সাপোর্ট করে যখন testCoverageEnabled থেকে true সেট করা হয়।
    • অ্যানোটেশন প্রসেসরের জন্য উন্নত সহায়তা। আপনার ক্লাসপাথে থাকা অ্যানোটেশন প্রসেসর, যেমন যেকোনও compile ডিপেন্ডেন্সি, আপনার বিল্ডে অটোমেটিক প্রয়োগ করা হয়। এছাড়াও, আপনি বিল্ডে অ্যানোটেশন প্রসেসর নির্দিষ্ট করতে এবং javaCompileOptions.annotationProcessorOptions {} DSL ব্যবহার করে আর্গুমেন্ট পাস করতে পারবেন, আপনার মডিউল-লেভেল build.gradle ফাইলে:

      গ্ৰুভি

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className 'com.example.MyProcessor'
              // Arguments are optional.
              arguments = [ foo : 'bar' ]
            }
          }
        }
      }
          

      Kotlin

      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
      }
          

      Kotlin

      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
      }
          
    • আপনি সেট করতে পারেন এমন প্যারামিটারের তালিকা পেতে, কমান্ড লাইন থেকে নিম্নলিখিত কমান্ড রান করুন:

      java -jar /build-tools/jack.jar --help-properties
      

    • ডিফল্ট হিসেবে, Gradle ডেমন হিপ সাইজ কমপক্ষে ১.৫ জিবি হলে, Jack এখন Gradle-এর মতো একই প্রসেসে রান করে। ডেমন হিপ সাইজ অ্যাডজাস্ট করতে, আপনার gradle.properties ফাইলে নিম্নলিখিতগুলি যোগ করুন:

      # This sets the daemon heap size to 1.5GB.
      org.gradle.jvmargs=-Xmx1536M