অ্যান্ড্রয়েড স্টুডিও ৩.৪ (এপ্রিল ২০১৯)
অ্যান্ড্রয়েড স্টুডিও ৩.৪ একটি প্রধান সংস্করণ, যাতে বিভিন্ন নতুন বৈশিষ্ট্য এবং উন্নতি অন্তর্ভুক্ত রয়েছে।
৩.৪.২ (জুলাই ২০১৯)
এই ছোট আপডেটটিতে বিভিন্ন বাগ সংশোধন এবং পারফরম্যান্সের উন্নতি অন্তর্ভুক্ত রয়েছে। উল্লেখযোগ্য বাগ সংশোধনের তালিকা দেখতে, রিলিজ আপডেট ব্লগে সংশ্লিষ্ট পোস্টটি পড়ুন।
৩.৪.১ (মে ২০১৯)
এই ছোট আপডেটটিতে বিভিন্ন বাগ সংশোধন এবং পারফরম্যান্সের উন্নতি অন্তর্ভুক্ত রয়েছে। উল্লেখযোগ্য বাগ সংশোধনের তালিকা দেখতে, রিলিজ আপডেট ব্লগে সংশ্লিষ্ট পোস্টটি পড়ুন।
৩.৪.০ পরিচিত সমস্যাসমূহ
অ্যান্ড্রয়েড কিউ বিটা চালিত কোনো ডিভাইসে আপনার অ্যাপ স্থাপন করার সময় প্রোফাইলিং নিষ্ক্রিয় থাকে।
- ডেটা বাইন্ডিং লাইব্রেরি ব্যবহার করার সময়,
LiveDataListener.onChanged()একটি NPE (নন-প্যারামিটার এক্সেপশন) এর কারণে ব্যর্থ হতে পারে। এই সমস্যার সমাধান Android Studio 3.4.1-এ অন্তর্ভুক্ত করা হবে এবং এটি ইতিমধ্যেই Android Studio 3.5-এর সর্বশেষ প্রিভিউ সংস্করণে উপলব্ধ। ( ইস্যু #122066788 দেখুন)
ইন্টেলিজ আইডিয়া ২০১৮.৩.৪
2018.3.4 রিলিজের মাধ্যমে ইন্টেলিজ আইডিয়া থেকে প্রাপ্ত উন্নতিসমূহ দ্বারা মূল অ্যান্ড্রয়েড স্টুডিও আইডিই আপডেট করা হয়েছে।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৩.৪.০ আপডেট
অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৩.৪.০-তে নতুন কী কী রয়েছে, সে সম্পর্কে জানতে এর রিলিজ নোট দেখুন।
নতুন প্রকল্পের কাঠামো সংলাপ
নতুন প্রজেক্ট স্ট্রাকচার ডায়ালগ (PSD) এর মাধ্যমে ডিপেন্ডেন্সি আপডেট করা এবং আপনার প্রজেক্টের বিভিন্ন দিক, যেমন মডিউল, বিল্ড ভ্যারিয়েন্ট, সাইনিং কনফিগারেশন ও বিল্ড ভ্যারিয়েবল কনফিগার করা আরও সহজ হয়।
মেনু বার থেকে ফাইল > প্রজেক্ট স্ট্রাকচার নির্বাচন করে আপনি PSD ফাইলটি খুলতে পারেন। এছাড়াও, Windows এবং Linux-এ Ctrl+Shift+Alt+S , অথবা macOS-এ Command+; (সেমিকোলন) চেপেও আপনি PSD ফাইলটি খুলতে পারেন। PSD-টির কিছু নতুন এবং হালনাগাদ করা অংশের বিবরণ নিচে দেওয়া হলো।
ভেরিয়েবল
PSD-এর নতুন ভেরিয়েবল সেকশনটি আপনাকে বিল্ড ভেরিয়েবল তৈরি ও পরিচালনা করার সুযোগ দেয়, যেমন আপনার প্রোজেক্ট জুড়ে ডিপেন্ডেন্সিগুলোর ভার্সন নম্বর সামঞ্জস্যপূর্ণ রাখার জন্য ব্যবহৃত ভেরিয়েবল।

- আপনার প্রোজেক্টের গ্রেডল বিল্ড স্ক্রিপ্টে আগে থেকে থাকা বিল্ড ভেরিয়েবলগুলো দ্রুত দেখুন এবং সম্পাদনা করুন।
- সরাসরি PSD থেকে প্রজেক্ট বা মডিউল পর্যায়ে নতুন বিল্ড ভেরিয়েবল যোগ করুন।
দ্রষ্টব্য: যদি আপনার বিদ্যমান বিল্ড কনফিগারেশন ফাইলগুলো জটিল Groovy স্ক্রিপ্টের মাধ্যমে মান নির্ধারণ করে থাকে, তাহলে আপনি PSD-এর মাধ্যমে সেই মানগুলো সম্পাদনা করতে পারবেন না। এছাড়াও, আপনি PSD ব্যবহার করে Kotlin-এ লেখা বিল্ড ফাইল সম্পাদনা করতে পারবেন না।
মডিউল
বিদ্যমান কোনো মডিউলের সমস্ত বিল্ড ভ্যারিয়েন্টে প্রযোজ্য প্রোপার্টিগুলো কনফিগার করুন অথবা মডিউলস সেকশন থেকে আপনার প্রোজেক্টে নতুন মডিউল যোগ করুন। উদাহরণস্বরূপ, এখান থেকেই আপনি defaultConfig প্রোপার্টিগুলো কনফিগার করতে বা সাইনিং কনফিগারেশনগুলো পরিচালনা করতে পারেন।
নির্ভরশীলতা
প্রজেক্ট সিঙ্কের সময় গ্রেডল দ্বারা সমাধান করা আপনার প্রজেক্টের ডিপেন্ডেন্সি গ্রাফের প্রতিটি ডিপেন্ডেন্সি পরিদর্শন ও দেখার জন্য এই ধাপগুলো অনুসরণ করুন:
- PSD-এর বাম প্যানে, Dependencies নির্বাচন করুন।
- মডিউল প্যানে, এমন একটি মডিউল নির্বাচন করুন যার সমাধানকৃত নির্ভরতাগুলো আপনি পরীক্ষা করতে চান।
- PSD ফাইলের ডান দিকে, নিচে দেখানো Resolved Dependencies প্যানেটি খুলুন।

এছাড়াও, প্রথমে PSD-এর 'Dependencies' সেকশন থেকে একটি মডিউল নির্বাচন করে, 'Declared Dependencies' সেকশনে থাকা (+) বোতামে ক্লিক করে এবং আপনি যে ধরনের ডিপেন্ডেন্সি যোগ করতে চান তা নির্বাচন করে, আপনি আপনার প্রোজেক্টে দ্রুত ডিপেন্ডেন্সি অনুসন্ধান ও যোগ করতে পারেন।
আপনার নির্বাচিত নির্ভরতার ধরনের ওপর নির্ভর করে, আপনি নীচেরটির মতো একটি ডায়ালগ দেখতে পাবেন, যা আপনাকে মডিউলটিতে নির্ভরতাটি যোগ করতে সাহায্য করবে।

বিভিন্ন নির্মাণ
PSD-এর এই অংশে, আপনার প্রোজেক্টের প্রতিটি মডিউলের জন্য বিল্ড ভ্যারিয়েন্ট এবং প্রোডাক্ট ফ্লেভার তৈরি ও কনফিগার করুন। আপনি ম্যানিফেস্ট প্লেসহোল্ডার যোগ করতে, ProGuard ফাইল যোগ করতে, সাইনিং কী নির্ধারণ করতে এবং আরও অনেক কিছু করতে পারেন।

পরামর্শ
প্রোজেক্টের নির্ভরতা এবং বিল্ড ভেরিয়েবলের জন্য প্রস্তাবিত আপডেটগুলো নিচে দেখানো অনুযায়ী ' সাজেশনস' বিভাগে দেখুন।

নতুন রিসোর্স ম্যানেজার
রিসোর্স ম্যানেজার হলো আপনার অ্যাপে রিসোর্স ইম্পোর্ট, তৈরি, পরিচালনা এবং ব্যবহার করার জন্য একটি নতুন টুল উইন্ডো। আপনি মেনু বার থেকে ভিউ > টুল উইন্ডোজ > রিসোর্স ম্যানেজার নির্বাচন করে টুল উইন্ডোটি খুলতে পারেন। রিসোর্স ম্যানেজার আপনাকে নিম্নলিখিত কাজগুলো করতে দেয়:

- রিসোর্সসমূহ দেখুন: আপনার প্রয়োজনীয় রিসোর্স দ্রুত খুঁজে পেতে আপনি ড্রয়েবল, রঙ এবং লেআউট প্রিভিউ করতে পারেন।
- একসাথে একাধিক ড্রয়েবল অ্যাসেট ইম্পোর্ট করতে, আপনি সেগুলোকে রিসোর্স ম্যানেজার টুল উইন্ডোতে ড্র্যাগ ও ড্রপ করে অথবা ইমপোর্ট ড্রয়েবলস উইজার্ড ব্যবহার করতে পারেন। উইজার্ডটি অ্যাক্সেস করতে, টুল উইন্ডোর উপরের-বাম কোণায় থাকা (+) বোতামটি সিলেক্ট করুন এবং তারপর ড্রপ-ডাউন মেনু থেকে ইমপোর্ট ড্রয়েবলস নির্বাচন করুন।
- SVG-কে
VectorDrawableঅবজেক্টে রূপান্তর করুন: আপনি আপনার SVG ছবিগুলোকেVectorDrawableঅবজেক্টে রূপান্তর করতে Import Drawables উইজার্ড ব্যবহার করতে পারেন। - অ্যাসেট ড্র্যাগ ও ড্রপ করুন: রিসোর্স ম্যানেজার টুল উইন্ডো থেকে, আপনি লেআউট এডিটরের ডিজাইন এবং এক্সএমএল ভিউ উভয়ের উপরেই ড্রয়েবলগুলো ড্র্যাগ ও ড্রপ করতে পারেন।
- বিকল্প সংস্করণগুলো দেখুন: এখন আপনি টুল উইন্ডোর মধ্যে কোনো রিসোর্সে ডাবল-ক্লিক করে সেটির বিকল্প সংস্করণগুলো দেখতে পারবেন। এই ভিউতে আপনার তৈরি করা বিভিন্ন সংস্করণ এবং সেগুলোতে অন্তর্ভুক্ত কোয়ালিফায়ারগুলো দেখানো হয়।
- টাইল এবং তালিকা ভিউ: আপনি টুল উইন্ডোর মধ্যে ভিউ পরিবর্তন করে আপনার রিসোর্সগুলোকে বিভিন্ন বিন্যাসে দেখতে পারেন।
আরও জানতে, অ্যাপ রিসোর্স কীভাবে পরিচালনা করবেন সে সম্পর্কিত নির্দেশিকাটি পড়ুন।
APK প্রোফাইলিং এবং ডিবাগ করার সময় বিল্ড আইডি পরীক্ষা করা
যখন আপনি আপনার APK-এর ভেতরের .so শেয়ার্ড লাইব্রেরিগুলোর জন্য ডিবাগিং সিম্বল ফাইল প্রদান করেন, তখন অ্যান্ড্রয়েড স্টুডিও যাচাই করে দেখে যে প্রদত্ত সিম্বল ফাইলগুলোর বিল্ড আইডি , APK-এর ভেতরের .so লাইব্রেরিগুলোর বিল্ড আইডির সাথে মেলে কি না।
আপনি যদি আপনার APK-তে নেটিভ লাইব্রেরিগুলো একটি বিল্ড আইডি দিয়ে বিল্ড করেন, তাহলে অ্যান্ড্রয়েড স্টুডিও আপনার সিম্বল ফাইলের বিল্ড আইডিটি নেটিভ লাইব্রেরির বিল্ড আইডির সাথে মেলে কিনা তা পরীক্ষা করে এবং অমিল থাকলে সিম্বল ফাইলগুলো বাতিল করে দেয়। আপনি যদি বিল্ড আইডি ছাড়া বিল্ড করে থাকেন, তাহলে ভুল সিম্বল ফাইল সরবরাহ করলে ডিবাগিং-এ সমস্যা হতে পারে।
ডিফল্টরূপে R8 সক্রিয় করা হয়েছে
R8 এক ধাপেই ডিসুগারিং, শ্রিংকিং, অবফাসকেটিং, অপটিমাইজিং এবং ডেক্সিং-কে একীভূত করে—যার ফলে বিল্ড পারফরম্যান্সে লক্ষণীয় উন্নতি ঘটে । R8 অ্যান্ড্রয়েড গ্রেডল প্লাগইন 3.3.0-এ চালু করা হয়েছিল এবং এখন প্লাগইন 3.4.0 ও তার পরবর্তী সংস্করণ ব্যবহারকারী অ্যাপ এবং অ্যান্ড্রয়েড লাইব্রেরি উভয় প্রোজেক্টের জন্য এটি ডিফল্টরূপে সক্রিয় থাকে।
নিচের চিত্রটি R8 প্রবর্তনের আগে কম্পাইল প্রক্রিয়ার একটি সামগ্রিক চিত্র তুলে ধরে।

এখন, R8-এর সাহায্যে, ডিসুগারিং, শ্রিংকিং, অবফাসকেটিং, অপটিমাইজিং এবং ডেক্সিং (D8) সবই এক ধাপে সম্পন্ন হয়, যেমনটি নিচে দেখানো হয়েছে।

মনে রাখবেন, R8 আপনার বিদ্যমান ProGuard রুলগুলোর সাথে কাজ করার জন্য ডিজাইন করা হয়েছে, তাই R8-এর সুবিধা পেতে আপনাকে সম্ভবত কোনো পদক্ষেপ নিতে হবে না। তবে, যেহেতু এটি ProGuard থেকে ভিন্ন একটি প্রযুক্তি যা বিশেষভাবে অ্যান্ড্রয়েড প্রোজেক্টের জন্য ডিজাইন করা হয়েছে, তাই সঙ্কুচিতকরণ এবং অপ্টিমাইজেশনের ফলে এমন কোড বাদ পড়তে পারে যা ProGuard হয়তো বাদ দেয়নি। সুতরাং, এই বিরল পরিস্থিতিতে, আপনার বিল্ড আউটপুটে সেই কোডটি রাখার জন্য অতিরিক্ত রুল যোগ করার প্রয়োজন হতে পারে।
R8 ব্যবহারে কোনো সমস্যা হলে, আপনার সমস্যার কোনো সমাধান আছে কিনা তা জানতে R8 কম্প্যাটিবিলিটি FAQ পড়ুন। যদি কোনো সমাধান নথিভুক্ত না থাকে, তবে অনুগ্রহ করে একটি বাগ রিপোর্ট করুন । আপনার প্রোজেক্টের gradle.properties ফাইলে নিম্নলিখিত লাইনগুলোর মধ্যে একটি যোগ করে আপনি R8 নিষ্ক্রিয় করতে পারেন:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
দ্রষ্টব্য: কোনো নির্দিষ্ট বিল্ড টাইপের জন্য, যদি আপনি আপনার অ্যাপ মডিউলের build.gradle ফাইলে useProguard false সেট করেন, তাহলে অ্যান্ড্রয়েড গ্রেডল প্লাগইনটি সেই বিল্ড টাইপের জন্য আপনার অ্যাপের কোড সংকুচিত করতে R8 ব্যবহার করে, আপনি আপনার প্রোজেক্টের gradle.properties ফাইলে R8 নিষ্ক্রিয় করলেও।
নেভিগেশন এডিটর এখন সব ধরনের আর্গুমেন্ট সমর্থন করে।
নেভিগেশন কম্পোনেন্ট দ্বারা সমর্থিত সকল আর্গুমেন্ট টাইপ এখন নেভিগেশন এডিটরেও সমর্থিত। সমর্থিত টাইপগুলো সম্পর্কে আরও তথ্যের জন্য, “গন্তব্যস্থলগুলোর মধ্যে ডেটা পাস করুন” দেখুন।
লেআউট এডিটরের উন্নতিসমূহ {:#layout-editor}
লেআউট এডিটরের অ্যাট্রিবিউটস প্যানটিকে একটি একক পৃষ্ঠায় সুসংহত করা হয়েছে, যেখানে বিভিন্ন সেকশন রয়েছে যা আপনি প্রসারিত করে কনফিগারযোগ্য অ্যাট্রিবিউটগুলো দেখতে পারবেন। অ্যাট্রিবিউটস প্যানটিতে নিম্নলিখিত আপডেটগুলোও অন্তর্ভুক্ত রয়েছে:
- একটি নতুন 'Declared Attributes' বিভাগে লেআউট ফাইলে নির্দিষ্ট করা অ্যাট্রিবিউটগুলোর তালিকা থাকে এবং এটি আপনাকে দ্রুত নতুন অ্যাট্রিবিউট যোগ করার সুযোগ দেয়।
- অ্যাট্রিবিউটস প্যানে এখন প্রতিটি অ্যাট্রিবিউটের পাশে ইন্ডিকেটরও রয়েছে, যা অ্যাট্রিবিউটের মান একটি রিসোর্স রেফারেন্স হলে সলিড (সবল) এবং অন্যথায় খালি থাকে।
- ত্রুটি বা সতর্কতাযুক্ত অ্যাট্রিবিউটগুলো এখন হাইলাইট করা হয়। লাল হাইলাইট ত্রুটি নির্দেশ করে (উদাহরণস্বরূপ, যখন আপনি অবৈধ লেআউট মান ব্যবহার করেন) এবং কমলা হাইলাইট সতর্কতা নির্দেশ করে (উদাহরণস্বরূপ, যখন আপনি হার্ড-কোডেড মান ব্যবহার করেন)।
নির্ভরতা দ্রুত আমদানি করার জন্য নতুন উদ্দেশ্যমূলক পদক্ষেপ
আপনি যদি আপনার কোডে নির্দিষ্ট কিছু Jetpack এবং Firebase ক্লাস ব্যবহার করা শুরু করেন, তাহলে একটি নতুন ইনটেনশন অ্যাকশন আপনার প্রোজেক্টে প্রয়োজনীয় Gradle লাইব্রেরি ডিপেন্ডেন্সি যোগ করার পরামর্শ দেয়, যদি আপনি আগে থেকে তা না করে থাকেন। উদাহরণস্বরূপ, আপনি যদি প্রথমে প্রয়োজনীয় android.arch.work:work-runtime ডিপেন্ডেন্সিটি ইম্পোর্ট না করেই WorkManager ক্লাসটি রেফারেন্স করেন, তাহলে একটি ইনটেনশন অ্যাকশন আপনাকে নিচের ছবির মতো করে এক ক্লিকেই তা সহজে করতে দেয়।

বিশেষ করে, যেহেতু জেটপ্যাক সাপোর্ট লাইব্রেরিটিকে আলাদা প্যাকেজে পুনরায় সাজিয়েছে যা পরিচালনা এবং আপডেট করা সহজ, তাই এই ইনটেনশন অ্যাকশনটি আপনাকে আপনার ব্যবহার করতে চাওয়া জেটপ্যাক কম্পোনেন্টগুলোর জন্য শুধুমাত্র প্রয়োজনীয় ডিপেন্ডেন্সিগুলো দ্রুত যোগ করতে সাহায্য করে।