অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.1.0 (মার্চ 2018)

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

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

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

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

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

      android.enableD8=false
    

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

      android.enableIncrementalDesugaring=false.
    

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

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

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

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

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

  • resConfig"auto" পাস করা আপনার 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'
            

সংশোধন করে

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