অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.3.0 (জানুয়ারি 2019)

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

ন্যূনতম সংস্করণ ডিফল্ট সংস্করণ নোট
গ্রেডল 4.10.1 4.10.1 আরও জানতে, Gradle আপডেট করা দেখুন। Gradle 5.0 এবং উচ্চতর ব্যবহার করার সময়, ডিফল্ট Gradle ডেমন মেমরির হিপের আকার 1 GB থেকে 512 MB পর্যন্ত কমে যায়। এর ফলে বিল্ড পারফরম্যান্স রিগ্রেশন হতে পারে। এই ডিফল্ট সেটিং ওভাররাইড করতে, আপনার প্রকল্পের gradle.properties ফাইলে Gradle ডেমন হিপের আকার নির্দিষ্ট করুন।
SDK বিল্ড টুলস 28.0.3 28.0.3 SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন

3.3.3 (জুলাই 2020)

এই ছোটখাট আপডেটটি Android 11-এ প্যাকেজ দৃশ্যমানতার জন্য নতুন ডিফল্ট সেটিংস এবং বৈশিষ্ট্যগুলির সাথে সামঞ্জস্যপূর্ণতা সমর্থন করে৷

বিস্তারিত জানার জন্য 4.0.1 রিলিজ নোট দেখুন।

3.3.2 (মার্চ 2019)

এই ছোটখাট আপডেটটি অ্যান্ড্রয়েড স্টুডিও 3.3.2 সমর্থন করে এবং এতে বিভিন্ন বাগ ফিক্স এবং পারফরম্যান্সের উন্নতি রয়েছে। উল্লেখযোগ্য বাগ ফিক্সের তালিকা দেখতে, রিলিজ আপডেট ব্লগে সম্পর্কিত পোস্ট পড়ুন।

3.3.1 (ফেব্রুয়ারি 2019)

এই ছোটখাট আপডেটটি অ্যান্ড্রয়েড স্টুডিও 3.3.1 সমর্থন করে এবং এতে বিভিন্ন বাগ ফিক্স এবং পারফরম্যান্সের উন্নতি অন্তর্ভুক্ত রয়েছে।

নতুন বৈশিষ্ট্য

  • উন্নত ক্লাসপাথ সিঙ্ক্রোনাইজেশন: আপনার রানটাইম এবং কম্পাইল টাইম ক্লাসপাথের উপর নির্ভরতা সমাধান করার সময়, অ্যান্ড্রয়েড গ্রেডল প্লাগইন একাধিক ক্লাসপাথ জুড়ে প্রদর্শিত নির্ভরতার জন্য নির্দিষ্ট ডাউনস্ট্রিম সংস্করণ দ্বন্দ্বগুলি সমাধান করার চেষ্টা করে।

    উদাহরণস্বরূপ, যদি রানটাইম ক্লাসপাথ লাইব্রেরি A সংস্করণ 2.0 অন্তর্ভুক্ত করে এবং কম্পাইল ক্লাসপথে লাইব্রেরি A সংস্করণ 1.0 অন্তর্ভুক্ত থাকে, তাহলে ত্রুটি এড়াতে প্লাগইন স্বয়ংক্রিয়ভাবে লাইব্রেরি A সংস্করণ 2.0 তে কম্পাইল ক্লাসপাথের উপর নির্ভরতা আপডেট করে।

    যাইহোক, যদি রানটাইম ক্লাসপাথ লাইব্রেরি A সংস্করণ 1.0 অন্তর্ভুক্ত করে এবং কম্পাইলে লাইব্রেরি A সংস্করণ 2.0 অন্তর্ভুক্ত থাকে, তাহলে প্লাগইনটি লাইব্রেরি A সংস্করণ 1.0 এ কম্পাইল ক্লাসপাথের উপর নির্ভরতাকে ডাউনগ্রেড করে না এবং আপনি একটি ত্রুটি পাবেন। আরও জানতে, ক্লাসপাথের মধ্যে দ্বন্দ্ব ঠিক করুন দেখুন।

  • টীকা প্রসেসর ব্যবহার করার সময় উন্নত বর্ধিত জাভা সংকলন: এই আপডেটটি টীকা প্রসেসর ব্যবহার করার সময় ক্রমবর্ধমান জাভা সংকলনের জন্য সমর্থন উন্নত করে বিল্ড টাইম হ্রাস করে।

    দ্রষ্টব্য: Gradle ইস্যু 8194 এর কারণে Gradle 5.1 ব্যতীত এই বৈশিষ্ট্যটি Gradle 4.10.1 এবং উচ্চতর এর সাথে সামঞ্জস্যপূর্ণ।

    • ক্যাপ্ট (অধিকাংশ কোটলিন-কেবল প্রকল্প এবং কোটলিন-জাভা হাইব্রিড প্রকল্প) ব্যবহার করা প্রকল্পগুলির জন্য: ইনক্রিমেন্টাল জাভা সংকলন সক্ষম করা হয়, এমনকি আপনি যখন ডেটা বাইন্ডিং বা রেট্রো-ল্যাম্বডা প্লাগইন ব্যবহার করেন। ক্যাপ্ট টাস্ক দ্বারা টীকা প্রক্রিয়াকরণ এখনও বৃদ্ধি পায়নি।

    • Kapt ব্যবহার না করা প্রকল্পগুলির জন্য (শুধুমাত্র জাভা প্রকল্পগুলি): যদি আপনি সমস্ত টীকা প্রসেসর ব্যবহার করেন ক্রমবর্ধমান টীকা প্রসেসিং সমর্থন করে, তবে ক্রমবর্ধমান জাভা সংকলন ডিফল্টরূপে সক্রিয় থাকে। ক্রমবর্ধমান টীকা প্রসেসর গ্রহণ নিরীক্ষণ করতে, Gradle সমস্যা 5277 দেখুন।

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

      android.enableSeparateAnnotationProcessing=true
                  

      আপনি যখন এই ফ্ল্যাগটি অন্তর্ভুক্ত করেন, তখন Android Gradle প্লাগইন একটি পৃথক টাস্কে টীকা প্রসেসরগুলি চালায় এবং জাভা সংকলন কাজটিকে ক্রমবর্ধমানভাবে চালানোর অনুমতি দেয়।

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

              android.debug.obsoleteApi=true
            

    আপনি কমান্ড লাইন থেকে -Pandroid.debug.obsoleteApi=true পাস করেও পতাকা সক্রিয় করতে পারেন।

  • আপনি কমান্ড লাইন থেকে বৈশিষ্ট্য মডিউলগুলিতে ইন্সট্রুমেন্টেশন পরীক্ষা চালাতে পারেন।

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

  • অলস টাস্ক কনফিগারেশন: প্লাগইনটি এখন গ্রেডলের নতুন টাস্ক ক্রিয়েশন API ব্যবহার করে এমন কাজগুলি শুরু এবং কনফিগার করা এড়াতে যা বর্তমান বিল্ডটি সম্পূর্ণ করার জন্য প্রয়োজন হয় না (বা কার্য সম্পাদন টাস্ক গ্রাফে নেই)। উদাহরণস্বরূপ, যদি আপনার একাধিক বিল্ড ভেরিয়েন্ট থাকে, যেমন "রিলিজ" এবং "ডিবাগ" বিল্ড ভেরিয়েন্ট, এবং আপনি আপনার অ্যাপের "ডিবাগ" সংস্করণ তৈরি করছেন, প্লাগইনটি "রিলিজ" সংস্করণের জন্য কাজগুলি শুরু এবং কনফিগার করা এড়িয়ে যায় আপনার অ্যাপ।

    variant.getJavaCompile() এর মতো ভেরিয়েন্ট এপিআই-তে কিছু পুরানো পদ্ধতি কল করা এখনও টাস্ক কনফিগারেশনকে বাধ্য করতে পারে। আপনার বিল্ডটি অলস টাস্ক কনফিগারেশনের জন্য অপ্টিমাইজ করা হয়েছে তা নিশ্চিত করতে, নতুন পদ্ধতি ব্যবহার করুন যা পরিবর্তে একটি TaskProvider অবজেক্ট ফেরত দেয়, যেমন variant.getJavaCompileProvider()

    আপনি যদি কাস্টম বিল্ড টাস্কগুলি চালান, শিখুন কিভাবে Gradle এর নতুন টাস্ক-সৃষ্টি API এর সাথে মানিয়ে নিতে হয়

  • একটি প্রদত্ত বিল্ড প্রকারের জন্য, useProguard false সেট করার সময়, প্লাগইনটি এখন আপনার অ্যাপের কোড এবং সংস্থানগুলিকে সঙ্কুচিত এবং অস্পষ্ট করতে ProGuard-এর পরিবর্তে R8 ব্যবহার করে৷ R8 সম্পর্কে আরও জানতে, Android বিকাশকারীর ব্লগ থেকে এই ব্লগ পোস্টটি পড়ুন৷

  • লাইব্রেরি প্রোজেক্টের জন্য দ্রুত R ক্লাস জেনারেশন: পূর্বে, Android Gradle প্লাগইন আপনার প্রতিটি প্রোজেক্টের নির্ভরতার জন্য একটি R.java ফাইল তৈরি করবে এবং তারপর সেই R ক্লাসগুলিকে আপনার অ্যাপের অন্যান্য ক্লাসের সাথে কম্পাইল করবে। প্লাগইনটি এখন প্রথম মধ্যবর্তী R.java ক্লাস তৈরি না করে সরাসরি আপনার অ্যাপের সংকলিত R ক্লাস ধারণকারী একটি JAR তৈরি করে। এই অপ্টিমাইজেশানটি অনেকগুলি লাইব্রেরি সাবপ্রজেক্ট এবং নির্ভরতা অন্তর্ভুক্ত প্রকল্পগুলির জন্য বিল্ড কার্যক্ষমতাকে উল্লেখযোগ্যভাবে উন্নত করতে পারে এবং অ্যান্ড্রয়েড স্টুডিওতে ইন্ডেক্সিং গতি উন্নত করতে পারে।

  • একটি অ্যান্ড্রয়েড অ্যাপ বান্ডেল তৈরি করার সময়, সেই অ্যাপ বান্ডেল থেকে জেনারেট করা APKগুলি যা Android 6.0 (API লেভেল 23) বা উচ্চতরকে লক্ষ্য করে সেগুলি এখন ডিফল্টরূপে আপনার নেটিভ লাইব্রেরির আনকমপ্রেসড সংস্করণ অন্তর্ভুক্ত করে। এই অপ্টিমাইজেশানটি লাইব্রেরির একটি অনুলিপি তৈরি করার জন্য ডিভাইসের প্রয়োজনীয়তা এড়ায় এবং এইভাবে আপনার অ্যাপের অন-ডিস্কের আকার হ্রাস করে৷ আপনি যদি এই অপ্টিমাইজেশানটি অক্ষম করতে চান তবে আপনার gradle.properties ফাইলে নিম্নলিখিত যোগ করুন:

    android.bundle.enableUncompressedNativeLibs = false
            
  • প্লাগইনটি কিছু তৃতীয় পক্ষের প্লাগইনগুলির ন্যূনতম সংস্করণ প্রয়োগ করে৷

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

    এই অপ্টিমাইজেশানটি সক্ষম করার জন্য আপনাকে Android Gradle Plugin 3.3.0 বা উচ্চতর সহ Android Studio 3.3 বা উচ্চতর ব্যবহার করতে হবে৷ আপনি যখন এই প্রয়োজনীয়তাগুলি পূরণ করেন, আপনি যখন আপনার প্রকল্প সিঙ্ক করেন তখন IDE আপনাকে এই অপ্টিমাইজেশান সক্ষম করতে অনুরোধ করে। অপ্টিমাইজেশন নতুন প্রকল্পে ডিফল্টরূপে সক্রিয় করা হয়.

    এই অপ্টিমাইজেশনটি ম্যানুয়ালি সক্ষম করতে, ফাইল > সেটিংস > পরীক্ষামূলক > গ্রেডল ( অ্যান্ড্রয়েড স্টুডিও > পছন্দগুলি > পরীক্ষামূলক > একটি ম্যাকের উপর গ্রেডল ) ক্লিক করুন এবং শুধুমাত্র সক্রিয় বৈকল্পিক চেকবক্সটি সিঙ্ক করুন।

    দ্রষ্টব্য : এই অপ্টিমাইজেশানটি সম্পূর্ণরূপে জাভা এবং C++ ভাষা অন্তর্ভুক্ত প্রকল্পগুলিকে সমর্থন করে এবং কোটলিনের জন্য কিছু সমর্থন রয়েছে৷ Kotlin বিষয়বস্তু সহ প্রকল্পগুলির জন্য অপ্টিমাইজেশান সক্ষম করার সময়, Gradle সিঙ্ক অভ্যন্তরীণভাবে সম্পূর্ণ বৈকল্পিক ব্যবহারে ফিরে আসে।

  • অনুপস্থিত SDK প্যাকেজগুলির স্বয়ংক্রিয় ডাউনলোড : NDK সমর্থন করার জন্য এই কার্যকারিতা প্রসারিত করা হয়েছে৷ আরও জানতে, Gradle এর সাথে অনুপস্থিত প্যাকেজগুলি অটো-ডাউনলোড করুন

বাগ ফিক্স

  • অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.3.0 নিম্নলিখিত সমস্যাগুলি সমাধান করে:

    • জেটিফায়ার সক্রিয় থাকা সত্ত্বেও, AndroidX সংস্করণের পরিবর্তে android.support.v8.renderscript.RenderScript কল করার বিল্ড প্রক্রিয়া
    • স্ট্যাটিকালি বান্ডেল করা annotation.AnyRes সহ androidx-rs.jar এর কারণে সংঘর্ষ। AnyRes
    • RenderScript ব্যবহার করার সময়, আপনাকে আর আপনার build.gradle ফাইলগুলিতে বিল্ড টুলস সংস্করণ ম্যানুয়ালি সেট করতে হবে না