গ্রেডলের জন্য অ্যান্ড্রয়েড প্লাগইন, সংস্করণ ১.৫.০ (নভেম্বর ২০১৫)

নির্ভরশীলতা:
সর্বনিম্ন সংস্করণ ডিফল্ট সংস্করণ নোট
গ্রেডল ২.২.১ ২.২.১ আরও জানতে, Gradle আপডেট করা দেখুন।
এসডিকে বিল্ড টুলস ২১.১.১ ২১.১.১ এসডিকে বিল্ড টুলস ইনস্টল বা কনফিগার করুন
সাধারণ নোট:
  • Gradle-এর Android প্লাগইনে Data Binding প্লাগইনটি সংযুক্ত করা হয়েছে। এটি সক্রিয় করতে, প্লাগইনটি ব্যবহারকারী প্রতিটি প্রজেক্ট-ভিত্তিক build.gradle ফাইলে নিম্নলিখিত কোডটি যোগ করুন:
  • android {
        dataBinding {
            enabled = true
        }
    }
            
    android {
        dataBinding {
            enabled = true
        }
    }
            
  • একটি নতুন Transform API যোগ করা হয়েছে, যা থার্ড-পার্টি প্লাগইনগুলোকে কম্পাইল করা .class ফাইলগুলোকে .dex ফাইলে রূপান্তর করার আগে সেগুলোকে পরিবর্তন করার সুযোগ দেবে। Transform API কাস্টম ক্লাস ম্যানিপুলেশন যুক্ত করাকে সহজ করে এবং আপনি কী পরিবর্তন করতে পারবেন সে বিষয়ে আরও বেশি নমনীয়তা প্রদান করে। একটি বিল্ডে ট্রান্সফর্ম যুক্ত করতে, Transform ইন্টারফেসগুলোর মধ্যে যেকোনো একটি ইমপ্লিমেন্ট করে একটি নতুন ক্লাস তৈরি করুন এবং android.registerTransform(theTransform) অথবা android.registerTransform(theTransform, dependencies) দিয়ে এটি রেজিস্টার করুন। টাস্কগুলোকে একসাথে সংযুক্ত করার কোনো প্রয়োজন নেই। Transform API সম্পর্কে নিম্নলিখিত বিষয়গুলো লক্ষ্য করুন:
    • একটি ট্রান্সফর্ম নিম্নলিখিত এক বা একাধিকের উপর প্রয়োগ করা যেতে পারে: বর্তমান প্রজেক্ট, সাবপ্রজেক্ট এবং এক্সটার্নাল লাইব্রেরি।
    • একটি ট্রান্সফর্মকে অবশ্যই বিশ্বব্যাপী নিবন্ধন করতে হবে, যা সেগুলোকে সমস্ত ভ্যারিয়েন্টের উপর প্রয়োগ করে।
    • জাভা কোড কভারেজ লাইব্রেরি (JaCoCo), ProGuard, এবং MultiDex-এর মাধ্যমে অভ্যন্তরীণ কোড প্রক্রিয়াকরণে এখন Transform API ব্যবহৃত হয়। তবে, জাভা অ্যান্ড্রয়েড কম্পাইলার কিট (Jack) এই API ব্যবহার করে না: শুধুমাত্র javac/dx কোড পাথই এটি ব্যবহার করে।
    • Gradle ট্রান্সফর্মগুলো এই ক্রমে সম্পাদন করে: JaCoCo, থার্ড-পার্টি প্লাগইন, ProGuard। থার্ড-পার্টি প্লাগইনগুলোর সম্পাদনের ক্রমটি সেই ক্রমের সাথে মেলে, যে ক্রমে থার্ড-পার্টি প্লাগইনগুলো ট্রান্সফর্মগুলো যুক্ত করে; থার্ড-পার্টি প্লাগইনের ডেভেলপাররা কোনো API-এর মাধ্যমে ট্রান্সফর্মগুলোর সম্পাদনের ক্রম নিয়ন্ত্রণ করতে পারেন না।
  • ApplicationVariant ক্লাস থেকে dex getter-টি অপ্রচলিত ঘোষণা করা হয়েছে। আপনি এখন আর ভ্যারিয়েন্ট এপিআই (variant API) এর মাধ্যমে Dex টাস্কটি অ্যাক্সেস করতে পারবেন না, কারণ এটি এখন একটি ট্রান্সফর্মের (transform) মাধ্যমে সম্পন্ন করা হয়। বর্তমানে dex প্রসেসটি নিয়ন্ত্রণ করার কোনো বিকল্প নেই।
  • সম্পদের জন্য নির্দিষ্ট ক্রমবর্ধমান সমর্থন।
  • টেস্ট প্রোজেক্টের জন্য মাল্টিডেক্স উপলব্ধ করার মাধ্যমে এর সাপোর্ট উন্নত করা হয়েছে, এবং টেস্টগুলোতে এখন স্বয়ংক্রিয়ভাবে com.android.support:multidex-instrumentation ডিপেন্ডেন্সিটি যুক্ত থাকবে।
  • যখন গ্রেডল বিল্ড অ্যাসিঙ্ক্রোনাস টাস্ক চালু করে এবং ওয়ার্কার প্রসেসে কোনো ব্যর্থতা ঘটে, তখন গ্রেডল বিল্ডটিকে সঠিকভাবে ব্যর্থ করার এবং অন্তর্নিহিত ত্রুটির কারণ রিপোর্ট করার ক্ষমতা যোগ করা হয়েছে।
  • যেসব ভ্যারিয়েন্টে একাধিক অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) রয়েছে, সেগুলোতে একটি নির্দিষ্ট ABI কনফিগার করার সুবিধা যোগ করা হয়েছে।
  • টেস্ট ইনস্টল বা রান করার সময় ANDROID_SERIAL এনভায়রনমেন্ট ভেরিয়েবলের জন্য ডিভাইস সিরিয়াল নম্বরের কমা-বিভক্ত তালিকা ব্যবহারের সুবিধা যোগ করা হয়েছে।
  • Android 5.0 (API লেভেল 20) এবং এর চেয়ে উচ্চতর সংস্করণে চালিত ডিভাইসগুলিতে APK নামের মধ্যে স্পেস থাকলে ইনস্টলেশন ব্যর্থ হওয়ার সমস্যাটি সমাধান করা হয়েছে।
  • অ্যান্ড্রয়েড অ্যাসেট প্যাকেজিং টুল (AAPT)-এর ত্রুটি আউটপুট সম্পর্কিত বিভিন্ন সমস্যা সমাধান করা হয়েছে।
  • দ্রুততর ইনক্রিমেন্টাল বিল্ডের জন্য JaCoCo ইনক্রিমেন্টাল ইন্সট্রুমেন্টেশন সাপোর্ট যোগ করা হয়েছে। Gradle-এর অ্যান্ড্রয়েড প্লাগইন এখন সরাসরি JaCoCo ইন্সট্রুমেন্টারকে কল করে। JaCoCo ইন্সট্রুমেন্টারের একটি নতুন সংস্করণ জোর করে ব্যবহার করতে, আপনাকে এটিকে একটি বিল্ড স্ক্রিপ্ট ডিপেন্ডেন্সি হিসেবে যোগ করতে হবে।
  • JaCoCo সাপোর্ট ঠিক করা হয়েছে, যাতে এটি ক্লাস নয় এমন ফাইলগুলোকে উপেক্ষা করে।
  • ব্যাকওয়ার্ড-কম্প্যাটিবিলিটির জন্য বিল্ড টাইমে PNG তৈরি করতে ভেক্টর ড্রয়েবল সাপোর্ট যোগ করা হয়েছে। Gradle-এর জন্য অ্যান্ড্রয়েড প্লাগইনটি রিসোর্স ডিরেক্টরিতে থাকা প্রতিটি ভেক্টর ড্রয়েবলের জন্য PNG তৈরি করে, যেগুলোতে কোনো API ভার্সন উল্লেখ করা থাকে না অথবা অ্যাপ ম্যানিফেস্টের <uses-sdk> এলিমেন্টে android:minSdkVersion অ্যাট্রিবিউটের মান ২০ বা তার কম উল্লেখ করা থাকে। আপনি build.gradle ফাইলের defaultConfig বা productFlavor সেকশনে generatedDensities প্রপার্টি ব্যবহার করে PNG-এর ডেনসিটি সেট করতে পারেন।
  • মকযোগ্য android.jar শেয়ার করার সুবিধা যোগ করা হয়েছে, যা প্লাগইনটি শুধুমাত্র একবার তৈরি করে এবং ইউনিট টেস্টিংয়ের জন্য ব্যবহার করে। এখন app এবং lib মতো একাধিক মডিউল এটি শেয়ার করে। এটি পুনরায় তৈরি করতে $rootDir/build ডিলিট করুন।
  • জাভা রিসোর্সের প্রসেসিং এখন APK প্যাকেজিংয়ের পরিবর্তে অবফাসকেশন টাস্কগুলোর আগে সম্পন্ন হবে। এই পরিবর্তনের ফলে প্যাকেজ অবফাসকেশনের পরে অবফাসকেশন টাস্কগুলো জাভা রিসোর্সগুলোকে মানিয়ে নেওয়ার সুযোগ পায়।
  • পরীক্ষামূলক লাইব্রেরি প্লাগইনে জাভা নেটিভ ইন্টারফেস (JNI) কোড ব্যবহারের একটি সমস্যা সমাধান করা হয়েছে।
  • এক্সপেরিমেন্টাল লাইব্রেরি প্লাগইনে android:compileSdkVersion অ্যাট্রিবিউট থেকে আলাদাভাবে প্ল্যাটফর্ম ভার্সন সেট করার সুবিধা যোগ করা হয়েছে।