অ্যান্ড্রয়েড স্টুডিও হেজহগ | 2023.1.1 (নভেম্বর 2023)

নিম্নলিখিত Android স্টুডিও হেজহগ নতুন বৈশিষ্ট্য আছে.

IntelliJ IDEA 2023.1 প্ল্যাটফর্ম আপডেট

অ্যান্ড্রয়েড স্টুডিও হেজহগ ইন্টেলিজে আইডিইএ 2023.1 আপডেটগুলি অন্তর্ভুক্ত করে, যা স্টুডিও আইডিই অভিজ্ঞতা উন্নত করে। পরিবর্তনের বিস্তারিত জানার জন্য, IntelliJ IDEA 2023.1 রিলিজ নোটগুলি দেখুন।

অ্যাপ কোয়ালিটি ইনসাইটসে অ্যান্ড্রয়েডের গুরুত্বপূর্ণ বিষয়গুলো বিশ্লেষণ করুন

অ্যাপ কোয়ালিটি ইনসাইটস এখন অ্যান্ড্রয়েডের গুরুত্বপূর্ণ ডেটা অন্তর্ভুক্ত করে, যাতে আপনি আরও সহজে Google Play দ্বারা সংগৃহীত মূল মেট্রিক্স অ্যাক্সেস করতে পারেন এবং আপনার ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারেন। Google Play-তে আপনার অ্যাপের গুণমান উন্নত করতে সাহায্য করার জন্য অ্যাপের স্থায়িত্ব সংক্রান্ত সমস্যা সমাধানের জন্য Android ভাইটাল ব্যবহার করুন।

আপনি অ্যাপ্লিকেশান কোয়ালিটি ইনসাইট টুল উইন্ডো থেকে অ্যান্ড্রয়েডের গুরুত্বপূর্ণ সমস্যাগুলি দেখতে, সেগুলিকে ফিল্টার করতে এবং স্ট্যাক ট্রেস থেকে কোডে যেতে পারেন। শুরু করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. প্রোফাইল আইকন ব্যবহার করে Android স্টুডিওতে আপনার ডেভেলপার অ্যাকাউন্টে সাইন ইন করুন টুলবারের শেষে।
  2. অ্যান্ড্রয়েড স্টুডিওতে টুল উইন্ডোতে ক্লিক করে বা ভিউ > টুল উইন্ডোজ > অ্যাপ কোয়ালিটি ইনসাইটস-এ ক্লিক করে অ্যাপ কোয়ালিটি ইনসাইট খুলুন।
  3. অ্যাপ কোয়ালিটি ইনসাইটের মধ্যে Android ভাইটাল ট্যাবে ক্লিক করুন।

অ্যান্ড্রয়েড ভাইটাল এবং ক্র্যাশলিটিক্সের মধ্যে বিভিন্ন সংখ্যা

মনে রাখবেন যে Android vitals এবং Crashlytics একই ক্র্যাশের সাথে যুক্ত ব্যবহারকারীর সংখ্যা এবং ইভেন্টের জন্য বিভিন্ন মান রিপোর্ট করতে পারে। এই অসঙ্গতিগুলি ঘটে কারণ Play এবং Crashlytics বিভিন্ন সময়ে এবং বিভিন্ন ব্যবহারকারীর জন্য ক্র্যাশ ধরতে পারে। প্লে এবং ক্র্যাশলিটিক্সের সংখ্যা আলাদা হতে পারে তার কয়েকটি কারণ এখানে রয়েছে:

  • Play ক্যাচ ক্র্যাশগুলি বুট করার সময় শুরু হয়, যেখানে Crashlytics ক্যাচ ক্র্যাশ হয় যা Crashlytics SDK শুরু হওয়ার পরে ঘটে।
  • যদি কোনো ব্যবহারকারী একটি নতুন ফোন পাওয়ার সময় ক্র্যাশ রিপোর্টিং থেকে অপ্ট আউট করে, সেই ক্র্যাশগুলি প্লে-তে রিপোর্ট করা হয় না; যাইহোক, Crashlytics একটি অ্যাপের নিজস্ব গোপনীয়তা নীতির উপর ভিত্তি করে ক্র্যাশ ক্যাচ করে।

নতুন পাওয়ার প্রোফাইলার

অ্যান্ড্রয়েড স্টুডিও হেজহগ থেকে শুরু করে, পাওয়ার প্রোফাইলার ডিভাইসে পাওয়ার খরচ দেখায়। আপনি ডিভাইস পাওয়ার রেল মনিটরে (ODPM) এই নতুন ডেটা দেখতে পারেন। ওডিপিএম পাওয়ার রেল নামক সাবসিস্টেম দ্বারা ডেটা ভাগ করে। সমর্থিত সাবসিস্টেমের তালিকার জন্য প্রোফাইলেবল পাওয়ার রেল দেখুন।

সিস্টেম ট্রেস পাওয়ার খরচ ডেটা রেকর্ড করে এবং প্রদর্শন করে। এটি CPU প্রোফাইলারের অংশ। এই ডেটা আপনাকে আপনার অ্যাপে ঘটছে এমন ক্রিয়াগুলির সাথে ডিভাইসের পাওয়ার খরচকে দৃশ্যত সম্পর্কযুক্ত করতে সহায়তা করে। পাওয়ার প্রোফাইলার এই ডেটা ভিজ্যুয়ালাইজ করতে সক্ষম করে।

নতুন পাওয়ার প্রোফাইলার

নতুন পাওয়ার প্রোফাইলার থেকে ডেটা দেখতে, একটি Pixel 6+ ডিভাইসে একটি সিস্টেম ট্রেস নিন:

  1. দেখুন > টুল উইন্ডোজ > প্রোফাইলার নির্বাচন করুন।
  2. CPU প্রোফাইলার খুলতে এবং একটি সিস্টেম ট্রেস শুরু করতে CPU টাইমলাইনের যেকোনো জায়গায় ক্লিক করুন।

নতুন অ্যাপ লিঙ্ক সহকারী আপনার অ্যাপে সেট আপ করা গভীর লিঙ্কগুলির একটি ব্যাপক ওভারভিউ প্রদান করে। অ্যাসিস্ট্যান্ট অ্যাপের AndroidManifest.xml ফাইলে বিদ্যমান সমস্ত ডিপ লিঙ্ক প্রদর্শন করে, সেই ডিপ লিঙ্কগুলির কনফিগারেশন সঠিক কিনা তা যাচাই করে এবং ভুল কনফিগারেশনগুলি স্বয়ংক্রিয়ভাবে ঠিক করার দ্রুত উপায় প্রদান করে।

অ্যাপ লিঙ্ক সহকারী খুলতে Android স্টুডিওতে টুলস > অ্যাপ লিঙ্ক সহকারীতে নেভিগেট করুন। অ্যাপ লিঙ্ক সম্পর্কে আরও তথ্যের জন্য, Android অ্যাপ লিঙ্ক যোগ করুন দেখুন।

লাইভ এডিট আপডেট করা ম্যানুয়াল মোড শর্টকাট

অ্যান্ড্রয়েড স্টুডিওতে লাইভ এডিট হেজহগ ম্যানুয়াল মোডের জন্য একটি নতুন শর্টকাট অন্তর্ভুক্ত করে ( ম্যানুয়ালি পুশ করুন ): Control+\ ( Command+\ for macOS)। ম্যানুয়াল মোড এমন পরিস্থিতিতে সহায়ক যেখানে আপনি যখন চলমান অ্যাপ্লিকেশনে আপডেটগুলি স্থাপন করা হয় তার উপর সুনির্দিষ্ট নিয়ন্ত্রণ রাখতে চান৷ উদাহরণস্বরূপ, যদি আপনি একটি ফাইলে বড় আকারের পরিবর্তন করছেন এবং ডিভাইসে কোনো মধ্যবর্তী অবস্থা প্রতিফলিত হতে চান না। আপনি লাইভ এডিট সেটিংসে বা লাইভ এডিট UI সূচক ব্যবহার করে পুশ ম্যানুয়ালি এবং পুশ ম্যানুয়ালি সেভ করার মধ্যে বেছে নিতে পারেন। আরও তথ্যের জন্য, জেটপ্যাক রচনার জন্য লাইভ এডিট -এ ভিডিও ক্লিপটি দেখুন।

মাল্টিপ্রিভিউ টেমপ্লেট রচনা করুন

androidx.compose.ui:ui-tooling-preview 1.6.0-alpha01+ নতুন মাল্টিপ্রিভিউ API টেমপ্লেট উপস্থাপন করেছে: @PreviewScreenSizes , @PreviewFontScales , @PreviewLightDark , এবং @PreviewDynamicColors , যাতে আপনি একটি কমন ইউআই-এর মাধ্যমে একটি কমন প্রিভিউ দেখতে পারেন। দৃশ্যকল্প

অ্যান্ড্রয়েড স্টুডিও হেজহগ-এ, কম্পোজ প্রিভিউতে একটি নতুন গ্যালারি মোড চালু করা হয়েছে, যা আপনাকে একবারে একটি প্রিভিউতে ফোকাস করতে এবং রেন্ডারিংয়ে সম্পদ সংরক্ষণ করতে দেয়। আপনি যখন আপনার অ্যাপের UI-তে পুনরাবৃত্তি করতে হবে এবং অন্যান্য মোডে স্যুইচ করতে হবে, উদাহরণস্বরূপ গ্রিড বা তালিকা, যখন আপনার UI ভেরিয়েন্টগুলি দেখতে হবে তখন আমরা গ্যালারি মোড ব্যবহার করার পরামর্শ দিই।

ডিবাগারে রাষ্ট্রীয় তথ্য রচনা করুন

যখন আপনার কম্পোজ UI এর কিছু অংশ অপ্রত্যাশিতভাবে পুনরায় কম্পোজ করে, তখন কেন তা বোঝা কঠিন। এখন, একটি কম্পোজেবল ফাংশনে একটি ব্রেকপয়েন্ট সেট করার সময়, ডিবাগার কম্পোজেবলের প্যারামিটার এবং তাদের অবস্থা তালিকাভুক্ত করে, যাতে আপনি আরও সহজে সনাক্ত করতে পারেন যে কোন পরিবর্তনগুলি পুনর্গঠনের কারণ হতে পারে। উদাহরণস্বরূপ, যখন আপনি একটি কম্পোজেবলের উপর বিরতি দেন, তখন ডিবাগার আপনাকে ঠিক কোন প্যারামিটারগুলি "পরিবর্তিত" বা "অপরিবর্তিত" থেকে যায় তা বলতে পারে, যাতে আপনি পুনর্গঠনের কারণটি আরও দক্ষতার সাথে তদন্ত করতে পারেন।

ডিভাইস মিররিং

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

ডিভাইস মিররিং সর্বদা উপলব্ধ থাকে যখন কম্পিউটারের সাথে সংযুক্ত ডিভাইস থাকে যেগুলিতে USB বা ওয়্যারলেস ডিবাগিং সক্ষম থাকে৷ আপনি রানিং ডিভাইস উইন্ডো বা ডিভাইস ম্যানেজার ( দেখুন > টুল উইন্ডোজ > ডিভাইস ম্যানেজার ) ব্যবহার করে মিররিং শুরু এবং বন্ধ করতে পারেন। আপনি যখন ডিভাইস মিররিং সক্রিয় হয় তখন এটির সেটিংসে ( সেটিংস > টুলস > ডিভাইস মিররিং ) কাস্টমাইজ করতে পারেন।

চলমান ডিভাইস UI

পরিচিত সমস্যা

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

2023-06-01 15:32:22,675 [  56094]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - Too many video encoder errors:
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - encoder: c2.android.vp8.encoder
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - mime type: video/x-vnd.on2.vp8
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - max resolution: 640x640
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - min resolution: 2x2
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - alignment: 2x2
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - max frame rate: 960
2023-06-01 15:32:22,676 [  56095]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - max frame rate for 288x640: 960
2023-06-01 15:32:22,870 [  56289]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - max bitrate: 20000000
2023-06-01 15:32:22,871 [  56290]   WARN - ScreenSharingAgent Samsung SM-A045F API 33 - terminated with code 1

গোপনীয়তা বিজ্ঞপ্তি

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

হার্ডওয়্যার ইনপুট ফরওয়ার্ডিং

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

রানিং ডিভাইস উইন্ডো থেকে সরাসরি ডিভাইস পরিচালনা করুন

আপনি এখন একটি অ্যান্ড্রয়েড ভার্চুয়াল ডিভাইস (AVD) শুরু করতে পারেন, অথবা একটি ফিজিক্যাল ডিভাইস মিরর করা শুরু করতে পারেন, সরাসরি রানিং ডিভাইস উইন্ডো থেকে + আইকনে ক্লিক করে এবং একটি ডিভাইস নির্বাচন করে। একটি ফিজিক্যাল ডিভাইসের AVD বা মিররিং বন্ধ করতে, ডিভাইস ট্যাবটি বন্ধ করুন।

চলমান ডিভাইস থেকে ডিভাইস ড্রপ-ডাউন

এমবেডেড লেআউট ইন্সপেক্টর

অ্যান্ড্রয়েড স্টুডিও হেজহগ ক্যানারি 2 দিয়ে শুরু করে, আপনি রানিং ডিভাইস টুল উইন্ডোতে সরাসরি লেআউট ইন্সপেক্টর চালাতে পারেন। এই পরীক্ষামূলক বৈশিষ্ট্যটি স্ক্রীন রিয়েল এস্টেট সংরক্ষণ করে এবং একটি একক টুল উইন্ডোতে আপনার UI ডিবাগিং কর্মপ্রবাহকে সংগঠিত করতে সহায়তা করে। এমবেডেড মোডে আপনি একটি ভিউ হায়ারার্কি দেখাতে পারেন, প্রতিটি ভিউয়ের বৈশিষ্ট্যগুলি পরিদর্শন করতে পারেন এবং অন্যান্য সাধারণ লেআউট ইন্সপেক্টর বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারেন। বিকল্পগুলির সম্পূর্ণ সেট অ্যাক্সেস করতে, আপনাকে এখনও একটি স্বতন্ত্র উইন্ডোতে লেআউট ইন্সপেক্টর চালাতে হবে ( ফাইল > সেটিংস > পরীক্ষামূলক > উইন্ডোজ বা অ্যান্ড্রয়েড স্টুডিওতে লেআউট ইন্সপেক্টর > সেটিংস > পরীক্ষামূলক > ম্যাকওএস-এ লেআউট ইন্সপেক্টর )।

এমবেডেড লেআউট ইন্সপেক্টরের একটি সীমাবদ্ধতা হল যে 3D মোড শুধুমাত্র স্ন্যাপশটে উপলব্ধ।

এমবেডেড লেআউট ইন্সপেক্টর উন্নত করতে আমাদের সাহায্য করতে, অনুগ্রহ করে আমাদের প্রতিক্রিয়া পাঠান।

নতুন UI উন্নতি

অ্যান্ড্রয়েড স্টুডিওর জন্য নতুন UI স্টুডিও IDE-তে আরও আধুনিক, পরিষ্কার চেহারা এবং অনুভূতি নিয়ে আসে। আমরা এখন পর্যন্ত আপনার প্রতিক্রিয়া শুনেছি এবং Android Studio Hedgehog-এর নিম্নলিখিত বৈশিষ্ট্যগুলির সাথে সম্পর্কিত সমস্যাগুলি সমাধান করেছি:

  • কমপ্যাক্ট মোড
  • উল্লম্ব বা অনুভূমিকভাবে বিভক্ত করার জন্য সমর্থন
  • macOS এর জন্য প্রকল্প ট্যাব
  • বিভ্রান্তি-মুক্ত মোডে সংশোধন করে
  • সর্বদা টুল উইন্ডো অ্যাকশন দেখানোর জন্য উন্নত সেটিংস

SDK আপগ্রেড সহকারী আপডেট

SDK আপগ্রেড সহকারী একটি ধাপে ধাপে উইজার্ড ফ্লো প্রদান করে আপনাকে targetSdkVersion সংস্করণ আপগ্রেডে সাহায্য করতে। অ্যান্ড্রয়েড স্টুডিও হেজহগে এসডিকে আপগ্রেড সহকারীর আপডেটগুলি এখানে রয়েছে:

  • Android 14 এ আপগ্রেড করার জন্য ব্রেকিং পরিবর্তনগুলি দেখুন
  • প্রাসঙ্গিক ফিল্টার যোগ করা হয়েছে তাই কিছু অপ্রয়োজনীয় পদক্ষেপ সরানো হয়েছে
  • নির্দিষ্ট পরিবর্তনের জন্য, কোডে ঠিক কোথায় পরিবর্তনগুলি করা দরকার তা চিহ্নিত করুন

শুধুমাত্র লক্ষ্য API স্তরের জন্য বিল্ড অপ্টিমাইজেশান অক্ষম করুন৷

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

[শুধুমাত্র উইন্ডোজ] বিল্ড গতিতে অ্যান্টিভাইরাস সফ্টওয়্যারের প্রভাব কমিয়ে দিন

বিল্ড অ্যানালাইজার আপনাকে জানায় যে অ্যান্টিভাইরাস সফ্টওয়্যার আপনার বিল্ড কর্মক্ষমতা প্রভাবিত করতে পারে কিনা। এটি ঘটতে পারে যদি অ্যান্টিভাইরাস সফ্টওয়্যার, যেমন Windows ডিফেন্ডার, Gradle দ্বারা ব্যবহৃত ডিরেক্টরিগুলির রিয়েল-টাইম স্ক্যানিং করে। বিল্ড অ্যানালাইজার সক্রিয় স্ক্যানিং থেকে বাদ দেওয়ার জন্য ডিরেক্টরিগুলির একটি তালিকা সুপারিশ করে এবং, যদি সম্ভব হয়, এটি উইন্ডোজ ডিফেন্ডার ফোল্ডার বর্জন তালিকায় যুক্ত করার জন্য একটি লিঙ্ক অফার করে।

Eclipse Android ডেভেলপমেন্ট টুল প্রোজেক্ট আর সমর্থিত নয়

অ্যান্ড্রয়েড স্টুডিও হেজহগ এবং উচ্চতর Eclipse ADT প্রকল্পগুলি আমদানি করা সমর্থন করে না। আপনি এখনও এই প্রকল্পগুলি খুলতে পারেন, কিন্তু সেগুলি আর Android প্রকল্প হিসাবে স্বীকৃত নয়৷ আপনি যদি এই ধরনের প্রকল্প আমদানি করতে চান তাহলে আপনি Android Studio এর আগের সংস্করণ ব্যবহার করতে পারেন। অ্যান্ড্রয়েড স্টুডিওর একটি প্রদত্ত সংস্করণ আপনার প্রকল্প আমদানি করতে অক্ষম হলে, আপনি আরও আগের সংস্করণ দিয়ে চেষ্টা করতে পারেন। একবার অ্যান্ড্রয়েড স্টুডিওর পূর্ববর্তী সংস্করণ ব্যবহার করে প্রকল্পটিকে একটি অ্যান্ড্রয়েড প্রকল্পে রূপান্তর করা হলে, আপনি সর্বশেষ অ্যান্ড্রয়েড স্টুডিও সংস্করণ ব্যবহার করে সেই প্রকল্পে কাজ করতে AGP আপগ্রেড সহকারী ব্যবহার করতে পারেন।

Gradle-পরিচালিত ডিভাইসের সাথে Firebase টেস্ট ল্যাব ডিভাইস ব্যবহার করুন

AGP 8.2.0-alpha03 বা উচ্চতর ব্যবহার করার সময়, Gradle-পরিচালিত ডিভাইসগুলি ব্যবহার করার সময় আপনি Firebase টেস্ট ল্যাব ডিভাইসে স্কেলে আপনার স্বয়ংক্রিয় যন্ত্রযুক্ত পরীক্ষা চালাতে পারেন। টেস্ট ল্যাব আপনাকে শারীরিক এবং ভার্চুয়াল উভয় ধরনের Android ডিভাইসের বিস্তৃত পরিসরে আপনার পরীক্ষাগুলি একই সাথে চালাতে দেয়। এই পরীক্ষাগুলি দূরবর্তী Google ডেটা সেন্টারে চালানো হয়। Gradle-পরিচালিত ডিভাইস (GMD) থেকে সমর্থন সহ, বিল্ড সিস্টেম এখন আপনার প্রকল্পের Gradle ফাইলের কনফিগারেশনের উপর ভিত্তি করে এই টেস্ট ল্যাব ডিভাইসগুলির বিরুদ্ধে চলমান পরীক্ষাগুলি সম্পূর্ণরূপে পরিচালনা করতে পারে।

Gradle-পরিচালিত Firebase টেস্ট ল্যাব ডিভাইসগুলির সাথে শুরু করুন৷

নিম্নলিখিত ধাপগুলি বর্ণনা করে যে কীভাবে GMD-এর সাথে ফায়ারবেস টেস্ট ল্যাব ডিভাইসগুলি ব্যবহার করা শুরু করবেন। মনে রাখবেন যে এই পদক্ষেপগুলি ব্যবহারকারীর শংসাপত্রগুলি প্রদান করতে gcloud CLI ব্যবহার করে, যা সমস্ত উন্নয়ন পরিবেশে প্রযোজ্য নাও হতে পারে। আপনার প্রয়োজনের জন্য কোন প্রমাণীকরণ প্রক্রিয়া ব্যবহার করতে হবে সে সম্পর্কে আরও তথ্যের জন্য, দেখুন কিভাবে অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র কাজ করে

  1. একটি Firebase প্রকল্প তৈরি করতে, Firebase কনসোলে যান। প্রকল্প যোগ করুন ক্লিক করুন এবং একটি প্রকল্প তৈরি করতে অন-স্ক্রীন প্রম্পট অনুসরণ করুন। আপনার প্রকল্প আইডি মনে রাখবেন.

  2. গুগল ক্লাউড সিএলআই ইনস্টল করতে, জিক্লাউড সিএলআই ইনস্টল করুন এর ধাপগুলি অনুসরণ করুন।
  3. আপনার স্থানীয় পরিবেশ কনফিগার করুন।
    1. gcloud এ আপনার ফায়ারবেস প্রকল্পের লিঙ্ক:
        gcloud config set project FIREBASE_PROJECT_ID
        
    2. API অ্যাক্সেসের জন্য আপনার ব্যবহারকারীর শংসাপত্রের ব্যবহার অনুমোদন করুন। আমরা মডিউল-স্তরের বিল্ড স্ক্রিপ্টে DSL ব্যবহার করে গ্রেডলে একটি পরিষেবা অ্যাকাউন্ট JSON ফাইল পাস করে অনুমোদন করার সুপারিশ করছি:

      কোটলিন

        firebaseTestLab {
          ...
          serviceAccountCredentials.set(file(SERVICE_ACCOUNT_JSON_FILE))
        }
        

      গ্রোভি

        firebaseTestLab {
          ...
          serviceAccountCredentials = file(SERVICE_ACCOUNT_JSON_FILE)
        }
        

      বিকল্পভাবে, আপনি নিম্নলিখিত টার্মিনাল কমান্ড ব্যবহার করে ম্যানুয়ালি অনুমোদন করতে পারেন:

        gcloud auth application-default login
        
    3. ঐচ্ছিক: কোটা প্রকল্প হিসাবে আপনার Firebase প্রকল্প যোগ করুন। আপনি টেস্ট ল্যাবের জন্য নো-কস্ট কোটা অতিক্রম করলেই এই পদক্ষেপের প্রয়োজন।

        gcloud auth application-default set-quota-project FIREBASE_PROJECT_ID
        
  4. প্রয়োজনীয় API সক্রিয় করুন।

    Google Developers Console API লাইব্রেরি পৃষ্ঠায় , Cloud Testing API এবং Cloud Tool Results API সক্ষম করুন কনসোলের শীর্ষে অনুসন্ধান বাক্সে এই API নামগুলি টাইপ করে এবং তারপর প্রতিটি API-এর জন্য ওভারভিউ পৃষ্ঠায় API সক্ষম করুন ক্লিক করে৷

  5. আপনার Android প্রকল্প কনফিগার করুন.

    1. শীর্ষ-স্তরের বিল্ড স্ক্রিপ্টে ফায়ারবেস টেস্ট ল্যাব প্লাগইন যোগ করুন:

      কোটলিন

        plugins {
          ...
          id("com.google.firebase.testlab") version "0.0.1-alpha05" apply false
        }
        

      গ্রোভি

        plugins {
          ...
          id 'com.google.firebase.testlab' version '0.0.1-alpha05' apply false
        }
        
    2. gradle.properties ফাইলে কাস্টম ডিভাইস প্রকার সক্ষম করুন:

        android.experimental.testOptions.managedDevices.customDevice=true
        
    3. মডিউল-স্তরের বিল্ড স্ক্রিপ্টে ফায়ারবেস টেস্ট ল্যাব প্লাগইন যোগ করুন:

      কোটলিন

        plugins {
          ...
          id "com.google.firebase.testlab"
        }
        

      গ্রোভি

        plugins {
          ...
          id 'com.google.firebase.testlab'
        }
        

    একটি Gradle-পরিচালিত Firebase টেস্ট ল্যাব ডিভাইসে পরীক্ষা তৈরি করুন এবং চালান

    আপনি মডিউল-স্তরের বিল্ড স্ক্রিপ্টে আপনার অ্যাপ পরীক্ষা করার জন্য গ্রেডলের জন্য একটি ফায়ারবেস টেস্ট ল্যাব ডিভাইস নির্দিষ্ট করতে পারেন। নিম্নলিখিত কোডের নমুনাটি ftlDevice নামে একটি গ্রেডল-পরিচালিত টেস্ট ল্যাব ডিভাইস হিসাবে একটি Pixel 3 চলমান API স্তর 30 তৈরি করে। আপনি যখন আপনার মডিউলে com.google.firebase.testlab প্লাগইন প্রয়োগ করেন তখন firebaseTestLab {} ব্লকটি পাওয়া যায়। ন্যূনতম সমর্থিত Android Gradle Plugin সংস্করণ হল 8.2.0-alpha01।

    কোটলিন

    firebaseTestLab {
      managedDevices {
        create("ftlDevice") {
          device = "Pixel3"
          apiLevel = 30
        }
      }
      ...
    }
    

    গ্রোভি

    firebaseTestLab {
      managedDevices {
        ftlDevice {
          device = "Pixel3"
          apiLevel = 30
        }
      }
      ...
    }
    

    আপনার কনফিগার করা Gradle-পরিচালিত টেস্ট ল্যাব ডিভাইসগুলি ব্যবহার করে আপনার পরীক্ষা চালানোর জন্য, নিম্নলিখিত কমান্ডটি ব্যবহার করুন। device-name হল সেই ডিভাইসের নাম যা আপনি আপনার Gradle বিল্ড স্ক্রিপ্টে কনফিগার করেছেন, যেমন ftlDevice , এবং BuildVariant হল আপনার অ্যাপের বিল্ড ভেরিয়েন্ট যা আপনি পরীক্ষা করতে চান। মনে রাখবেন যে Gradle সমান্তরালভাবে পরীক্ষা চালায় না বা টেস্ট ল্যাব ডিভাইসের জন্য অন্যান্য Google ক্লাউড CLI কনফিগারেশন সমর্থন করে না।

    উইন্ডোজে:

    gradlew device-nameBuildVariantAndroidTest
    

    লিনাক্স বা ম্যাকোসে:

    ./gradlew device-nameBuildVariantAndroidTest
    

    পরীক্ষার আউটপুটে একটি এইচটিএমএল ফাইলের একটি পাথ রয়েছে যেখানে পরীক্ষার রিপোর্ট রয়েছে। আপনি IDE-তে Run > Test History- এ ক্লিক করে আরও বিশ্লেষণের জন্য Android স্টুডিওতে পরীক্ষার ফলাফল আমদানি করতে পারেন।

    একটি ডিভাইস গ্রুপে পরীক্ষা তৈরি করুন এবং চালান

    আপনার টেস্টিং স্কেল করতে, একটি ডিভাইস গ্রুপে একাধিক গ্রেডল-পরিচালিত ফায়ারবেস টেস্ট ল্যাব ডিভাইস যোগ করুন এবং তারপরে একটি একক কমান্ডের মাধ্যমে সেগুলির সবকটিতে পরীক্ষা চালান। বলুন আপনার একাধিক ডিভাইস নিম্নরূপ সেট আপ আছে:

    firebaseTestLab {
      managedDevices {
        create("GalaxyS23Ultra") { ... }
        create("GalaxyZFlip3") { ... }
        create("GalaxyZFold3") { ... }
        create("GalaxyTabS2") { ... }
      }
    }
    

    সেগুলিকে samsungGalaxy নামক একটি ডিভাইস গ্রুপে যুক্ত করতে, groups {} ব্লক ব্যবহার করুন:

    firebaseTestLab {
      managedDevices {...}
    }
    
    android {
      ...
      testOptions {
        managedDevices {
          groups {
            create("samsungGalaxy") {
              targetDevices.add(devices["GalaxyS23Ultra"])
              targetDevices.add(devices["GalaxyZFlip3"])
              targetDevices.add(devices["GalaxyZFold3"])
              targetDevices.add(devices["GalaxyTabS3"])
            }
          }
        }
      }
    }
    

    ডিভাইস গ্রুপের সমস্ত ডিভাইসে পরীক্ষা চালানোর জন্য, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

    উইন্ডোজে:

    gradlew group-nameGroupBuildVariantAndroidTest
    

    লিনাক্স বা ম্যাকোসে:

    ./gradlew group-nameGroupBuildVariantAndroidTest
    

    স্মার্ট শার্ডিংয়ের মাধ্যমে টেস্ট রান অপ্টিমাইজ করুন

    Gradle-পরিচালিত টেস্ট ল্যাব ডিভাইসে পরীক্ষা করা এখন স্মার্ট শার্ডিং সমর্থন করে। স্মার্ট শার্ডিং স্বয়ংক্রিয়ভাবে আপনার পরীক্ষাগুলিকে সমস্ত শার্ডগুলিতে বিতরণ করে যাতে প্রতিটি শার্ড প্রায় একই সময়ের জন্য চলে, ম্যানুয়াল বরাদ্দের প্রচেষ্টা এবং সামগ্রিক পরীক্ষা চালানোর সময়কাল হ্রাস করে। স্মার্ট শার্ডিং একটি সর্বোত্তম উপায়ে পরীক্ষাগুলি বিতরণ করতে আপনার পরীক্ষার ইতিহাস বা আপনার পরীক্ষাগুলি আগে চালানোর জন্য কতক্ষণ সময় নিয়েছে সে সম্পর্কে তথ্য ব্যবহার করে। মনে রাখবেন যে স্মার্ট শার্ডিং ব্যবহার করার জন্য আপনার Firebase টেস্ট ল্যাবের জন্য Gradle প্লাগইনের 0.0.1-alpha05 সংস্করণ প্রয়োজন।

    স্মার্ট শার্ডিং সক্ষম করতে, প্রতিটি শার্ডের মধ্যে কত সময় পরীক্ষা করা উচিত তা নির্দিষ্ট করুন। পরীক্ষা শেষ হওয়ার আগে শার্ড বাতিল করা হয় এমন পরিস্থিতি এড়াতে আপনার লক্ষ্য শর্ডের সময়কাল timeoutMinutes থেকে কমপক্ষে পাঁচ মিনিট কম সেট করা উচিত।

    firebaseTestLab {
      ...
      testOptions {
        targetedShardDurationMinutes = 2
      }
    }
    

    আরও জানতে, নতুন ডিএসএল বিকল্পগুলি সম্পর্কে পড়ুন।

    Gradle-পরিচালিত Firebase টেস্ট ল্যাব ডিভাইসের জন্য আপডেট করা DSL

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

    firebaseTestLab {
      ...
    
      /**
       * A path to a JSON file that contains service account credentials to access to
       * a Firebase Test Lab project.
       */
      serviceAccountCredentials.set(file("your_service_account_credentials.json"))
    
    
      testOptions {
        fixture {
          /**
           * Whether to grant permissions on the device before tests begin.
           * Available options are "all" or "none".
           *
           * Default value is "all".
           */
          grantedPermissions = "all"
    
          /**
           * Map of files to push to the device before starting the test.
           *
           * The key is the location on the device.
           * The value is the location of the file, either local or in Google Cloud.
           */
          extraDeviceFiles["/sdcard/dir1/file1.txt"] = "local/file.txt"
          extraDeviceFiles["/sdcard/dir2/file2.txt"] = "gs://bucket/file.jpg"
    
          /**
           * The name of the network traffic profile.
           *
           * Specifies network conditions to emulate when running tests.
           *
           * Default value is empty.
           */
          networkProfile = "LTE"
        }
    
        execution {
          /**
           * The maximum time to run the test execution before cancellation,
           * measured in minutes. Does not include the setup or teardown of device,
           * and is handled server-side.
           *
           * The maximum possible testing time is 45 minutes on physical devices
           * and 60 minutes on virtual devices.
           *
           * Defaults to 15 minutes.
           */
           timeoutMinutes = 30
    
          /**
           * Number of times the test should be rerun if tests fail.
           * The number of times a test execution should be retried if one
           * or more of its test cases fail.
           *
           * The max number of times is 10.
           *
           * The default number of times is 0.
           */
          maxTestReruns = 2
    
          /**
           * Ensures only a single attempt is made for each execution if
           * an infrastructure issue occurs. This doesn't affect `maxTestReruns`.
           * Normally, two or more attempts are made by Firebase Test Lab if a
           * potential infrastructure issue is detected. This is best enabled for
           * latency sensitive workloads. The number of execution failures might be
           * significantly greater with `failFast` enabled.
           *
           * Defaults to false.
           */
          failFast = false
    
          /**
           * The number of shards to split the tests across.
           * 
           * Default to 0 for no sharding.
           */
          numUniformShards = 20
    
          /**
          * For smart sharding, the target length of time each shard should takes in
          * minutes. Maxes out at 50 shards for physical devices and 100 shards for
          * virtual devices.
          *
          * Only one of numUniformShards or targetedShardDurationMinutes can be set.
          *
          * Defaults to 0 for no smart sharding.
          */
          targetedShardDurationMinutes = 15
        }
    
        results {
          /**
           * The name of the Google storage bucket to store the test results in.
           *
           * If left unspecified, the default bucket is used.
           *
           * Please refer to Firebase Test Lab permissions for required permissions
           * for using the bucket.
           */
          cloudStorageBucket = "bucketLocationName"
    
          /**
           * Name of test results for the Firebase console history list.
           * All tests results with the same history name are grouped
           * together in the Firebase console in a time-ordered test history list.
           *
           * Defaults to the application label in the APK manifest in Flank/Fladle.
           */
          resultsHistoryName = "application-history"
    
          /**
           * List of paths to copy from the test device's storage to the test
           * results folder. These must be absolute paths under /sdcard or
           * /data/local/tmp.
           */
          directoriesToPull.addAll(
            "/sdcard/path/to/something"
          )
    
          /**
           * Whether to enable video recording during the test.
           *
           * Disabled by default.
           */
          recordVideo = false
    
          /**
           * Whether to enable performance metrics. If enabled, monitors and records
           * performance metrics such as CPU, memory, and network usage.
           *
           * Defaults to false.
           */
          performanceMetrics = true
        }
      }
    }