Android Gradle Plugin 3.1.0 (মার্চ ২০১৮)

Android প্লাগ-ইনের এই ভার্সনের জন্য নিম্নলিখিত বিষয়গুলি প্রয়োজন:

ন্যূনতম ভার্সন ডিফল্ট ভার্সন নোট
Gradle ৪.৪ ৪.৪ আরও জানতে, Gradle আপডেট করা দেখুন।
SDK Build Tools 27.0.3 27.0.3 SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন। মনে রাখবেন, android.buildToolsVersion প্রপার্টি ব্যবহার করে বিল্ড টুলের জন্য আপনাকে আর কোনও ভার্সন নির্দিষ্ট করতে হবে না—প্লাগ-ইন ডিফল্ট হিসেবে ন্যূনতম প্রয়োজনীয় ভার্সন ব্যবহার করে।

নতুন DEX কম্পাইলার, D8

ডিফল্ট হিসেবে, Android Studio এখন D8 নামের একটি নতুন DEX কম্পাইলার ব্যবহার করে। DEX কম্পাইলেশন হল .class বাইটকোডকে .dex বাইটকোডে পরিবর্তন করার প্রসেস যা Android রানটাইম (বা Android-এর পুরনো ভার্সনের জন্য Dalvik) ব্যবহার করে। আগের কম্পাইলার DX-এর তুলনায় D8 দ্রুত কম্পাইল করে এবং ছোট DEX ফাইল আউটপুট দেয়। এর পাশাপাশি, অ্যাপ রানটাইম পারফর্ম্যান্স একই রকম বা আরও ভালো হয়।

D8 আপনার দৈনন্দিন অ্যাপ ডেভেলপমেন্ট ওয়ার্কফ্লো পরিবর্তন করবে না। তবে, নতুন কম্পাইলারের সাথে সম্পর্কিত কোনও সমস্যা হলে, বাগ রিপোর্ট করুন। আপনি সাময়িকভাবে D8 বন্ধ করতে এবং আপনার প্রজেক্টের gradle.properties ফাইলে নিম্নলিখিতগুলি যোগ করে DX ব্যবহার করতে পারবেন:

      android.enableD8=false
    

যেসব প্রোজেক্ট Java 8 ল্যাঙ্গুয়েজ ফিচার ব্যবহার করে, সেগুলির জন্য ইনক্রিমেন্টাল ডিসুগারিং ডিফল্ট হিসেবে চালু করা থাকে। আপনার প্রোজেক্টের gradle.properties ফাইলে নিম্নলিখিত বিষয় উল্লেখ করে আপনি এটি বন্ধ করতে পারবেন:

      android.enableIncrementalDesugaring=false.
    

প্রিভিউ ব্যবহারকারী: আপনি যদি আগে থেকেই D8-এর প্রিভিউ ভার্সন ব্যবহার করে থাকেন, তাহলে মনে রাখবেন যে এটি এখন JDK-এর পরিবর্তে SDK বিল্ড টুলে অন্তর্ভুক্ত লাইব্রেরির বিরুদ্ধে কম্পাইল করে। তাই, আপনি যদি এমন API অ্যাক্সেস করেন যা JDK-তে আছে কিন্তু SDK build টুল লাইব্রেরিতে নেই, তাহলে আপনি একটি কম্পাইল ত্রুটি পাবেন।

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

  • একাধিক APK তৈরি করার সময়, প্রতিটি আলাদা আলাদা ABI-কে টার্গেট করে। ডিফল্ট হিসেবে নিম্নলিখিত ABI-এর জন্য আর APK তৈরি করে না: mips, mips64 এবং armeabi।

    আপনি যদি এমন APK তৈরি করতে চান যা এইসব ABI-কে টার্গেট করে, তাহলে আপনাকে অবশ্যই NDK r16b বা এর আগের যেকোনও ভার্সন ব্যবহার করতে হবে এবং নিচে দেখানো মতো আপনার build.gradle ফাইলে ABI উল্লেখ করতে হবে:

              splits {
                  abi {
                      include 'armeabi', 'mips', 'mips64'
                      ...
                  }
              }
            
              splits {
                  abi {
                      include("armeabi", "mips", "mips64")
                      ...
                  }
              }
            
  • Android প্লাগ-ইনের বিল্ড ক্যাশে এখন ৩০ দিনের বেশি পুরনো ক্যাশে এন্ট্রি সরিয়ে দেয়।

  • "auto"-এ পাস করা resConfig আপনার APK-তে প্যাকেজ করার জন্য আর অটোমেটিক স্ট্রিং রিসোর্স বেছে নেয় না। আপনি "auto" ব্যবহার করা চালিয়ে গেলে, প্লাগ-ইন আপনার অ্যাপ ও এর ডিপেন্ডেন্সি প্রদান করা সব স্ট্রিং সম্পদ প্যাকেজ করে। তাই, এর পরিবর্তে আপনাকে প্রতিটি লোকেল নির্দিষ্ট করতে হবে যা আপনি চান যে প্লাগ-ইনটি আপনার APK-তে প্যাকেজ করুক।

  • যেহেতু লোকাল মডিউল আপনার অ্যাপের টেস্ট APK-এর উপর নির্ভর করতে পারে না, তাই androidTestApi কনফিগারেশন ব্যবহার করে আপনার ইন্সট্রুমেন্টেড টেস্টে ডিপেন্ডেন্সি যোগ করলে, androidTestImplementation-এর পরিবর্তে, Gradle নিম্নলিখিত সতর্কতা জারি করে:

            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            
            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            

সমাধান করা

  • Android Studio কম্পোজিট বিল্ডে ডিপেন্ডেন্সি সঠিকভাবে শনাক্ত করতে না পারার সমস্যা সমাধান করা হয়েছে।
  • এমন একটি সমস্যার সমাধান করে যেখানে আপনি একটি বিল্ডে একাধিকবার Android প্লাগ-ইন লোড করার সময় একটি প্রোজেক্ট সিঙ্ক সংক্রান্ত সমস্যা পান (যেমন, একাধিক সাবপ্রোজেক্টের প্রত্যেকটিতে তাদের বিল্ডস্ক্রিপ্ট ক্লাসপাথে Android প্লাগ-ইন অন্তর্ভুক্ত থাকে)।