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

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

সর্বনিম্ন সংস্করণ ডিফল্ট সংস্করণ নোট
গ্রেডল ৪.৪ ৪.৪ আরও জানতে, Gradle আপডেট করা দেখুন।
এসডিকে বিল্ড টুলস ২৭.০.৩ ২৭.০.৩ এসডিকে বিল্ড টুলস ইনস্টল বা কনফিগার করুন । মনে রাখবেন, android.buildToolsVersion প্রপার্টি ব্যবহার করে বিল্ড টুলসের জন্য আর কোনো ভার্সন নির্দিষ্ট করার প্রয়োজন নেই—প্লাগইনটি ডিফল্টরূপে সর্বনিম্ন প্রয়োজনীয় ভার্সনটি ব্যবহার করে।

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

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

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

      android.enableD8=false
    

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

      android.enableIncrementalDesugaring=false.
    

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

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

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

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

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

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

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

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

সংশোধন

  • কম্পোজিট বিল্ডে অ্যান্ড্রয়েড স্টুডিওর ডিপেন্ডেন্সিগুলো সঠিকভাবে শনাক্ত করতে না পারার সমস্যাটির সমাধান করা হয়েছে।
  • একটি বিল্ডে একাধিকবার অ্যান্ড্রয়েড প্লাগইন লোড করার সময় যে প্রজেক্ট সিঙ্ক এরর হতো, সেই সমস্যার সমাধান করা হয়েছে—উদাহরণস্বরূপ, যখন একাধিক সাবপ্রজেক্টের প্রত্যেকটি তাদের বিল্ডস্ক্রিপ্ট ক্লাসপাথে অ্যান্ড্রয়েড প্লাগইনটি অন্তর্ভুক্ত করে।