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

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

সর্বনিম্ন সংস্করণ ডিফল্ট সংস্করণ মন্তব্য
গ্রেডল ৪.৪ ৪.৪ আরও জানতে, Gradle আপডেট করা দেখুন।
SDK বিল্ড টুলস ২৭.০.৩ ২৭.০.৩ SDK বিল্ড টুলস ইনস্টল বা কনফিগার করুন । মনে রাখবেন, আপনাকে আর 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 এর একটি পূর্বরূপ সংস্করণ ব্যবহার করে থাকেন, তাহলে মনে রাখবেন যে এটি এখন SDK বিল্ড টুলগুলিতে অন্তর্ভুক্ত লাইব্রেরিগুলির সাথে কম্পাইল করে - JDK তে নয়। সুতরাং, যদি আপনি JDK তে বিদ্যমান কিন্তু SDK বিল্ড টুল লাইব্রেরিতে নেই এমন API গুলি অ্যাক্সেস করেন, তাহলে আপনি একটি কম্পাইল ত্রুটি পাবেন।

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

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

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

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

  • "auto" কে resConfig এ পাস করলে আর স্বয়ংক্রিয়ভাবে আপনার 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'
            

সংশোধন

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