গেমিং অ্যাপগুলি বিভিন্ন UI ফ্রেমওয়ার্কের উপর নির্মিত হলে গেম টেস্টিং স্বয়ংক্রিয় করা কঠিন হতে পারে। গেম লুপ টেস্টগুলি আপনাকে Test Lab সাথে আপনার নেটিভ টেস্টগুলিকে একীভূত করতে এবং আপনার নির্বাচিত ডিভাইসগুলিতে সহজেই চালাতে দেয়৷ একটি গেম লুপ পরীক্ষা আপনার গেমিং অ্যাপের মাধ্যমে আপনার পরীক্ষা চালায় যখন একজন প্রকৃত খেলোয়াড়ের ক্রিয়াগুলি অনুকরণ করে। এই নির্দেশিকা আপনাকে দেখায় কিভাবে একটি গেম লুপ পরীক্ষা চালাতে হয়, তারপর Firebase কনসোলে আপনার পরীক্ষার ফলাফল দেখুন এবং পরিচালনা করুন।
আপনার গেম ইঞ্জিনের উপর নির্ভর করে, আপনি একক বা একাধিক লুপ সহ পরীক্ষাগুলি প্রয়োগ করতে পারেন। লুপ হল আপনার গেমিং অ্যাপে আপনার পরীক্ষার সম্পূর্ণ বা আংশিক রান-থ্রু। গেম লুপ ব্যবহার করা যেতে পারে:
- আপনার গেমের একটি স্তর চালান যেভাবে একজন শেষ ব্যবহারকারী এটি খেলবে। আপনি হয় ব্যবহারকারীর ইনপুট স্ক্রিপ্ট করতে পারেন, ব্যবহারকারীকে নিষ্ক্রিয় থাকতে দিন, অথবা ব্যবহারকারীকে AI দিয়ে প্রতিস্থাপন করতে পারেন যদি এটি আপনার গেমে বোধগম্য হয় (উদাহরণস্বরূপ, বলুন আপনার কাছে একটি রেস কার গেমিং অ্যাপ রয়েছে এবং ইতিমধ্যেই একটি AI প্রয়োগ করা হয়েছে৷ আপনি করতে পারেন৷ সহজেই একজন এআই ড্রাইভারকে ব্যবহারকারীর ইনপুটের দায়িত্বে রাখুন)।
- ডিভাইসগুলি এটি সমর্থন করে কিনা তা দেখতে সর্বোচ্চ মানের সেটিংসে আপনার গেমটি চালান৷
- একটি প্রযুক্তিগত পরীক্ষা চালান (একাধিক শেডার কম্পাইল করুন, তাদের চালান, পরীক্ষা করুন যে আউটপুট প্রত্যাশিত, ইত্যাদি)।
আপনি একটি একক টেস্ট ডিভাইস, টেস্ট ডিভাইসের একটি সেট বা Test Lab একটি গেম লুপ পরীক্ষা চালাতে পারেন। যাইহোক, আমরা ভার্চুয়াল ডিভাইসগুলিতে গেম লুপ পরীক্ষা চালানোর পরামর্শ দিই না কারণ তাদের গ্রাফিক্স ফ্রেম রেট শারীরিক ডিভাইসের তুলনায় কম।
আপনি শুরু করার আগে
একটি পরীক্ষা বাস্তবায়ন করতে, আপনাকে প্রথমে গেম লুপ পরীক্ষার জন্য আপনার অ্যাপ কনফিগার করতে হবে।
আপনার অ্যাপ ম্যানিফেস্টে, আপনার কার্যকলাপে একটি নতুন অভিপ্রায় ফিল্টার যোগ করুন:
<activity android:name=".MyActivity"> <intent-filter> <action android:name="com.google.intent.action.TEST_LOOP"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="application/javascript"/> </intent-filter> <intent-filter> ... (other intent filters here) </intent-filter> </activity>
এটি Test Lab একটি নির্দিষ্ট অভিপ্রায়ে ট্রিগার করে আপনার গেমটি চালু করার অনুমতি দেয়।
আপনার কোডে (আমরা
onCreate
পদ্ধতি ঘোষণার ভিতরে সুপারিশ করি), নিম্নলিখিত যোগ করুন:Kotlin+KTX
val launchIntent = intent if (launchIntent.action == "com.google.intent.action.TEST_LOOP") { val scenario = launchIntent.getIntExtra("scenario", 0) // Code to handle your game loop here }
Java
Intent launchIntent = getIntent(); if(launchIntent.getAction().equals("com.google.intent.action.TEST_LOOP")) { int scenario = launchIntent.getIntExtra("scenario", 0); // Code to handle your game loop here }
এটি আপনার ক্রিয়াকলাপটিকে এটি চালু করার অভিপ্রায়টি পরীক্ষা করার অনুমতি দেয়৷ আপনি যদি চান তবে আপনি পরে এই কোডটি যোগ করতে পারেন (যেমন, প্রাথমিকভাবে আপনার গেম ইঞ্জিন লোড করার পরে)।
প্রস্তাবিত: পরীক্ষার শেষে, যোগ করুন:
Kotlin+KTX
yourActivity.finish()
Java
yourActivity.finish();
গেম লুপ পরীক্ষা সম্পূর্ণ হলে এটি আপনার অ্যাপ বন্ধ করে দেয়। পরীক্ষাটি পরবর্তী লুপ শুরু করার জন্য আপনার অ্যাপের UI ফ্রেমওয়ার্কের উপর নির্ভর করে এবং আপনার অ্যাপটি বন্ধ করা বলে যে পরীক্ষাটি শেষ হয়েছে।
একটি গেম লুপ পরীক্ষা তৈরি করুন এবং চালান
আপনি গেম লুপ পরীক্ষার জন্য আপনার অ্যাপটি কনফিগার করার পরে, আপনি অবিলম্বে একটি পরীক্ষা তৈরি করতে এবং আপনার গেমিং অ্যাপে এটি চালাতে পারেন। আপনি Firebase কনসোল বা gcloud কমান্ড লাইন ইন্টারফেস (CLI) , অথবা টেস্ট লুপ ম্যানেজার ব্যবহার করে একটি স্থানীয় ডিভাইস ব্যবহার করে Test Lab একটি পরীক্ষা চালানো বেছে নিতে পারেন।
একটি স্থানীয় ডিভাইসে চালান
Test Lab টেস্ট লুপ ম্যানেজার হল একটি ওপেন সোর্স অ্যাপ যা আপনাকে গেম লুপ টেস্টগুলিকে একীভূত করতে এবং আপনার স্থানীয় ডিভাইসগুলিতে চালাতে সাহায্য করে৷ এটি আপনার কোয়ালিটি অ্যাসুরেন্স টিমকে তাদের ডিভাইসে একই গেম লুপ চালানোর অনুমতি দেয়।
টেস্ট লুপ ম্যানেজার ব্যবহার করে একটি স্থানীয় ডিভাইসে একটি পরীক্ষা চালানোর জন্য:
- একটি ফোন বা ট্যাবলেটে টেস্ট লুপ ম্যানেজার ডাউনলোড করুন এবং এটি চালিয়ে ইনস্টল করুন:
adb install testloopmanager.apk
- আপনার ডিভাইসে, আপনার ফোন বা ট্যাবলেটে টেস্ট লুপ অ্যাপস অ্যাপ খুলুন। অ্যাপটি আপনার ডিভাইসে অ্যাপ্লিকেশানগুলির একটি তালিকা প্রদর্শন করে যা গেম লুপ দিয়ে চালানো যেতে পারে। আপনি যদি এখানে আপনার গেমিং অ্যাপটি দেখতে না পান, তাহলে নিশ্চিত করুন যে আপনার অভিপ্রায় ফিল্টারটি আপনি শুরু করার আগে বিভাগের প্রথম ধাপে বর্ণিত একটির সাথে মেলে।
- আপনার গেমিং অ্যাপ্লিকেশন নির্বাচন করুন, তারপর আপনি চালাতে চান লুপ সংখ্যা নির্বাচন করুন. দ্রষ্টব্য: এই ধাপে, আপনি শুধুমাত্র একটি লুপের পরিবর্তে লুপের একটি উপসেট চালানো বেছে নিতে পারেন। একবারে একাধিক লুপ চালানোর বিষয়ে আরও তথ্যের জন্য, ঐচ্ছিক বৈশিষ্ট্যগুলি দেখুন।
- রান পরীক্ষা ক্লিক করুন। আপনার পরীক্ষা অবিলম্বে চলমান শুরু হয়.
Test Lab চালান
আপনি Firebase কনসোল বা gcloud CLI ব্যবহার করে Test Lab একটি গেম লুপ পরীক্ষা চালাতে পারেন। আপনি শুরু করার আগে, যদি আপনি ইতিমধ্যে না করে থাকেন, Firebase কনসোল খুলুন এবং একটি প্রকল্প তৈরি করুন।
Firebase কনসোল ব্যবহার করুন
- Firebase কনসোলে, বাম প্যানেল থেকে Test Lab ক্লিক করুন।
- আপনার প্রথম পরীক্ষা চালান ক্লিক করুন (অথবা আপনার প্রকল্প আগে একটি পরীক্ষা চালানো হলে একটি পরীক্ষা চালান )।
- পরীক্ষার ধরন হিসাবে গেম লুপ নির্বাচন করুন এবং তারপরে অবিরত ক্লিক করুন।
- Browse এ ক্লিক করুন এবং তারপর আপনার অ্যাপের
.apk
ফাইলে ব্রাউজ করুন। দ্রষ্টব্য: এই ধাপে, আপনি শুধুমাত্র একটি লুপের পরিবর্তে লুপের একটি উপসেট চালানো বেছে নিতে পারেন। একবারে একাধিক লুপ চালানোর বিষয়ে আরও তথ্যের জন্য, ঐচ্ছিক বৈশিষ্ট্যগুলি দেখুন। - অবিরত ক্লিক করুন.
- আপনার অ্যাপ পরীক্ষা করতে ব্যবহার করার জন্য শারীরিক ডিভাইস নির্বাচন করুন।
- স্টার্ট টেস্টে ক্লিক করুন।
Firebase কনসোল দিয়ে শুরু করার বিষয়ে আরও তথ্যের জন্য, Firebase কনসোল দিয়ে পরীক্ষা শুরু করুন দেখুন।
gcloud কমান্ড লাইন (CLI) ব্যবহার করুন
আপনি যদি ইতিমধ্যেই না করে থাকেন তবে Google Cloud SDK ডাউনলোড এবং ইনস্টল করুন৷
আপনার Google অ্যাকাউন্ট ব্যবহার করে gcloud CLI-তে সাইন ইন করুন:
gcloud auth login
gcloud-এ আপনার Firebase প্রকল্প সেট করুন, যেখানে
PROJECT_ID
হল আপনার Firebase প্রকল্পের ID:gcloud config set project PROJECT_ID
আপনার প্রথম পরীক্ষা চালান:
gcloud firebase test android run \ --type=game-loop --app=<var>path-to-apk</var> \ --device model=herolte,version=23
gcloud CLI দিয়ে শুরু করার বিষয়ে আরও তথ্যের জন্য, gcloud কমান্ড লাইন থেকে পরীক্ষা শুরু করুন দেখুন।
ঐচ্ছিক বৈশিষ্ট্য
Test Lab বিভিন্ন ঐচ্ছিক বৈশিষ্ট্যগুলি অফার করে যা আপনাকে আপনার পরীক্ষাগুলিকে আরও কাস্টমাইজ করতে দেয়, যার মধ্যে আউটপুট ডেটা লেখার ক্ষমতা, একাধিক গেম লুপগুলির জন্য সমর্থন এবং সম্পর্কিত লুপের জন্য লেবেল রয়েছে৷
আউটপুট ডেটা লিখুন
আপনার গেম লুপ পরীক্ষা launchIntent.getData()
পদ্ধতিতে নির্দিষ্ট করা ফাইলে আউটপুট লিখতে পারে। আপনি একটি পরীক্ষা চালানোর পরে, আপনি Firebase কনসোলের Test Lab বিভাগে এই আউটপুট ডেটা অ্যাক্সেস করতে পারেন ( গেম লুপ টেস্ট আউটপুট ফাইলের উদাহরণ দেখুন)।
Test Lab একটি ফাইল শেয়ারিং এ বর্ণিত অ্যাপগুলির মধ্যে একটি ফাইল ভাগ করার জন্য সর্বোত্তম অনুশীলনগুলি অনুসরণ করে৷ আপনার কার্যকলাপের onCreate()
পদ্ধতিতে, যেখানে আপনার উদ্দেশ্য অবস্থিত, আপনি নিম্নলিখিত কোডটি চালিয়ে আপনার ডেটা আউটপুট ফাইলটি পরীক্ষা করতে পারেন:
Kotlin+KTX
val launchIntent = intent val logFile = launchIntent.data logFile?.let { Log.i(TAG, "Log file ${it.encodedPath}") // ... }
Java
Intent launchIntent = getIntent(); Uri logFile = launchIntent.getData(); if (logFile != null) { Log.i(TAG, "Log file " + logFile.getEncodedPath()); // ... }
আপনি যদি আপনার গেম অ্যাপের C++ পাশ থেকে ফাইলটিতে লিখতে চান তবে আপনি ফাইল পাথের পরিবর্তে ফাইল বর্ণনাকারীতে পাস করতে পারেন:
Kotlin+KTX
val launchIntent = intent val logFile = launchIntent.data var fd = -1 logFile?.let { Log.i(TAG, "Log file ${it.encodedPath}") fd = try { contentResolver .openAssetFileDescriptor(logFile, "w")!! .parcelFileDescriptor .fd } catch (e: FileNotFoundException) { e.printStackTrace() -1 } catch (e: NullPointerException) { e.printStackTrace() -1 } } // C++ code invoked here. // native_function(fd);
Java
Intent launchIntent = getIntent(); Uri logFile = launchIntent.getData(); int fd = -1; if (logFile != null) { Log.i(TAG, "Log file " + logFile.getEncodedPath()); try { fd = getContentResolver() .openAssetFileDescriptor(logFile, "w") .getParcelFileDescriptor() .getFd(); } catch (FileNotFoundException e) { e.printStackTrace(); fd = -1; } catch (NullPointerException e) { e.printStackTrace(); fd = -1; } } // C++ code invoked here. // native_function(fd);
সি++
#include <unistd.h> JNIEXPORT void JNICALL Java_my_package_name_MyActivity_native_function(JNIEnv *env, jclass type, jint log_file_descriptor) { // The file descriptor needs to be duplicated. int my_file_descriptor = dup(log_file_descriptor); }
আউটপুট ফাইলের উদাহরণ
আপনি Firebase কনসোলের Test Lab বিভাগে গেম লুপ পরীক্ষার ফলাফল প্রদর্শন করতে আউটপুট ডেটা ফাইল (নীচের উদাহরণের মতো ফর্ম্যাট করা) ব্যবহার করতে পারেন। /.../
হিসাবে দেখানো ক্ষেত্রগুলিতে আপনার প্রয়োজনীয় যে কোনও কাস্টম ক্ষেত্র থাকতে পারে, যতক্ষণ না তারা এই ফাইলে ব্যবহৃত অন্যান্য ক্ষেত্রের নামের সাথে বিরোধ না করে:
{ "name": "test name", "start_timestamp": 0, // Timestamp of the test start (in us). Can be absolute or relative "driver_info": "...", "frame_stats": [ { "timestamp": 1200000, // Timestamp at which this section was written It contains value regarding the period start_timestamp(0) -> this timestamp (1200000 us) "avg_frame_time": 15320, // Average time to render a frame in ns "nb_swap": 52, // Number of frame rendered "threads": [ { "name": "physics", "Avg_time": 8030 // Average time spent in this thread per frame in us }, { "name": "AI", "Avg_time": 2030 // Average time spent in this thread per frame in us } ], /.../ // Any custom field you want (vertices display on the screen, nb units …) }, { // Next frame data here, same format as above } ], "loading_stats": [ { "name": "assets_level_1", "total_time": 7850, // in us /.../ }, { "name": "victory_screen", "total_time": 554, // in us /.../ } ], /.../, // You can add custom fields here }
একাধিক গেম লুপ
আপনি আপনার অ্যাপে একাধিক গেম লুপ চালানোর জন্য এটি দরকারী বলে মনে করতে পারেন। একটি লুপ হল আপনার গেম অ্যাপের শুরু থেকে শেষ পর্যন্ত সম্পূর্ণ রান-থ্রু। উদাহরণস্বরূপ, যদি আপনার গেমে একাধিক স্তর থাকে, তাহলে আপনি প্রতিটি স্তর চালু করার জন্য একটি গেম লুপ রাখতে চাইতে পারেন যার পরিবর্তে একটি লুপ থাকে যা সেগুলির মধ্যে পুনরাবৃত্তি করে। এইভাবে, যদি আপনার অ্যাপটি লেভেল 32-এ ক্র্যাশ হয়, আপনি ক্র্যাশ পুনরুত্পাদন করতে এবং বাগ ফিক্স পরীক্ষা করতে সরাসরি সেই গেম লুপটি চালু করতে পারেন।
একবারে একাধিক লুপ চালানোর জন্য আপনার অ্যাপকে সক্ষম করতে:
আপনি যদি টেস্ট লুপ ম্যানেজারের সাথে একটি পরীক্ষা চালাচ্ছেন:
<application>
উপাদানের ভিতরে, আপনার অ্যাপের ম্যানিফেস্টে নিম্নলিখিত লাইনটি যোগ করুন:<meta-data android:name="com.google.test.loops" android:value="5" />
এই লঞ্চের উদ্দেশ্য একটি পূর্ণসংখ্যা প্যারামিটার হিসাবে লক্ষ্য লুপ ধারণ করে।
android:value
ফিল্ডে, আপনি 1 থেকে 1024 পর্যন্ত একটি পূর্ণসংখ্যা নির্দিষ্ট করতে পারেন (একটি পরীক্ষার জন্য সর্বাধিক সংখ্যক লুপ অনুমোদিত)। লক্ষ্য করুন যে লুপগুলি 1 থেকে শুরু করে সূচক করা হয়, 0 নয়।টেস্ট লুপ ম্যানেজার অ্যাপে, একটি নির্বাচন স্ক্রীন প্রদর্শিত হয় যা আপনাকে কোন লুপ(গুলি) চালাতে চান তা নির্বাচন করতে দেয়। আপনি একাধিক লুপ নির্বাচন করলে, পূর্ববর্তী লুপ সম্পূর্ণ হওয়ার পর প্রতিটি লুপ ক্রমানুসারে চালু হয়।
আপনি যদি Firebase কনসোলের সাথে একটি পরীক্ষা চালাচ্ছেন, দৃশ্যকল্প ক্ষেত্রে একটি তালিকা বা লুপ নম্বরগুলির একটি পরিসর লিখুন৷
আপনি যদি জিক্লাউড সিএলআই-এর সাথে একটি পরীক্ষা চালাচ্ছেন, তাহলে
--scenario-numbers
পতাকা ব্যবহার করে লুপ সংখ্যার একটি তালিকা নির্দিষ্ট করুন। উদাহরণস্বরূপ,--scenario-numbers=1,3,5
রান লুপ 1, 3, এবং 5।আপনি যদি C++ লিখছেন এবং আপনার লুপের আচরণ পরিবর্তন করতে চান, তাহলে আপনার নেটিভ C++ কোডে নিম্নলিখিত অতিরিক্তটি পাস করুন:
Kotlin+KTX
val launchIntent = intent val scenario = launchIntent.getIntExtra("scenario", 0)
Java
Intent launchIntent = getIntent(); int scenario = launchIntent.getIntExtra("scenario", 0);
আপনি এখন ফলাফল
int
মানের উপর ভিত্তি করে আপনার লুপের আচরণ পরিবর্তন করতে পারেন।
লেবেল খেলা loops
আপনি যখন আপনার গেম লুপগুলিকে এক বা একাধিক দৃশ্যের লেবেল দিয়ে লেবেল করেন, তখন আপনি এবং আপনার QA টিম সহজেই সম্পর্কিত গেম লুপগুলির একটি সেট চালু করতে পারেন (যেমন, "সমস্ত সামঞ্জস্যপূর্ণ গেম লুপ") এবং একটি একক ম্যাট্রিক্সে পরীক্ষা করতে পারেন৷ আপনি নিজের লেবেল তৈরি করতে পারেন বা Test Lab দ্বারা দেওয়া পূর্বনির্ধারিত লেবেলগুলি ব্যবহার করতে পারেন:
-
com.google.test.loops.player_experience
: গেম খেলার সময় প্রকৃত ব্যবহারকারীর অভিজ্ঞতা পুনরুত্পাদন করতে ব্যবহৃত লুপের জন্য। এই লুপগুলির সাথে পরীক্ষার লক্ষ্য হল এমন সমস্যাগুলি খুঁজে বের করা যা একজন প্রকৃত ব্যবহারকারী গেম খেলার সময় সম্মুখীন হবে। -
com.google.test.loops.gpu_compatibility
: জিপিইউ-সম্পর্কিত সমস্যাগুলি পরীক্ষা করতে ব্যবহৃত লুপের জন্য। এই লুপগুলির সাথে পরীক্ষা করার লক্ষ্য হল GPU কোড চালানো যা উৎপাদনে সঠিকভাবে চলতে পারে না, হার্ডওয়্যার এবং ড্রাইভারের সমস্যাগুলি প্রকাশ করা। -
com.google.test.loops.compatibility
: I/O সমস্যা এবং OpenSSL সমস্যা সহ সামঞ্জস্যতার সমস্যাগুলির একটি বিস্তৃত পরিসর পরীক্ষা করতে ব্যবহৃত লুপের জন্য। -
com.google.test.loops.performance
: ডিভাইসের কার্যক্ষমতা পরীক্ষা করতে ব্যবহৃত লুপের জন্য। উদাহরণস্বরূপ, একটি নতুন ডিভাইস কীভাবে আচরণ করে তা দেখতে একটি গেম সবচেয়ে জটিল গ্রাফিক্স সেটিংসে চলতে পারে।
একই লেবেল দিয়ে লুপ চালানোর জন্য আপনার অ্যাপকে সক্ষম করতে:
আপনি যদি টেস্ট লুপ ম্যানেজারের সাথে একটি পরীক্ষা চালাচ্ছেন:
আপনার অ্যাপের ম্যানিফেস্টে, নিম্নলিখিত মেটা-ডেটা লাইন যোগ করুন এবং আপনার পছন্দের একটি লেবেল দিয়ে LABEL_NAME প্রতিস্থাপন করুন:
<meta-data android:name="com.google.test.loops.LABEL_NAME" android:value="1,3-5" />
android:value
ফিল্ডে, আপনি 1 থেকে 1024 পর্যন্ত একটি পরিসর বা পূর্ণসংখ্যার একটি সেট নির্দিষ্ট করতে পারেন (একটি পরীক্ষার জন্য সর্বাধিক সংখ্যক লুপ অনুমোদিত) যা আপনি যে লুপগুলিকে লেবেল করতে চান তা প্রতিনিধিত্ব করে৷ মনে রাখবেন যে লুপগুলি 1 থেকে শুরু করে সূচিত করা হয়েছে, 0 নয়৷ উদাহরণস্বরূপ,android:value="1,3-5"
LABEL_NAME লুপ 1, 3, 4 এবং 5-এ প্রযোজ্য৷টেস্ট লুপ ম্যানেজার অ্যাপে, লেবেল ক্ষেত্রে এক বা একাধিক লেবেল লিখুন।
আপনি যদি Firebase কনসোল দিয়ে একটি পরীক্ষা চালান, তাহলে লেবেল ক্ষেত্রে এক বা একাধিক লেবেল লিখুন।
আপনি যদি gcloud CLI এর সাথে একটি পরীক্ষা চালাচ্ছেন,
--scenario-labels
পতাকা (যেমন,--scenario-labels=performance,gpu
) ব্যবহার করে এক বা একাধিক দৃশ্যের লেবেল নির্দিষ্ট করুন।
অ্যাপ লাইসেন্সিং সমর্থন
Test Lab এমন অ্যাপগুলিকে সমর্থন করে যেগুলি Google Play দ্বারা প্রদত্ত অ্যাপ লাইসেন্সিং পরিষেবা ব্যবহার করে৷ Test Lab সাথে আপনার অ্যাপ পরীক্ষা করার সময় সফলভাবে লাইসেন্সিং পরীক্ষা করতে, আপনাকে অবশ্যই আপনার অ্যাপটি প্লে স্টোরে প্রোডাকশন চ্যানেলে প্রকাশ করতে হবে। Test Lab ব্যবহার করে আলফা বা বিটা চ্যানেলে আপনার অ্যাপ পরীক্ষা করতে, Test Lab আপনার অ্যাপ আপলোড করার আগে লাইসেন্সিং চেক সরিয়ে ফেলুন।
পরিচিত সমস্যা
Test Lab গেম লুপ পরীক্ষায় নিম্নলিখিত পরিচিত সমস্যা রয়েছে:
- কিছু ক্র্যাশ ব্যাকট্রেস সমর্থন করে না। উদাহরণস্বরূপ, কিছু রিলিজ বিল্ড
prctl(PR_SET_DUMPABLE, 0)
ব্যবহার করেdebuggerd
প্রক্রিয়ার আউটপুটকে দমন করতে পারে। আরও জানতে,debuggerd
দেখুন। - ফাইল অনুমতি ত্রুটির কারণে API স্তর 19 বর্তমানে সমর্থিত নয়।
গেমিং অ্যাপগুলি বিভিন্ন UI ফ্রেমওয়ার্কের উপর নির্মিত হলে গেম টেস্টিং স্বয়ংক্রিয় করা কঠিন হতে পারে। গেম লুপ টেস্টগুলি আপনাকে Test Lab সাথে আপনার নেটিভ টেস্টগুলিকে একীভূত করতে এবং আপনার নির্বাচিত ডিভাইসগুলিতে সহজেই চালাতে দেয়৷ একটি গেম লুপ পরীক্ষা আপনার গেমিং অ্যাপের মাধ্যমে আপনার পরীক্ষা চালায় যখন একজন প্রকৃত খেলোয়াড়ের ক্রিয়াগুলি অনুকরণ করে। এই নির্দেশিকা আপনাকে দেখায় কিভাবে একটি গেম লুপ পরীক্ষা চালাতে হয়, তারপর Firebase কনসোলে আপনার পরীক্ষার ফলাফল দেখুন এবং পরিচালনা করুন।
আপনার গেম ইঞ্জিনের উপর নির্ভর করে, আপনি একক বা একাধিক লুপ সহ পরীক্ষাগুলি প্রয়োগ করতে পারেন। লুপ হল আপনার গেমিং অ্যাপে আপনার পরীক্ষার সম্পূর্ণ বা আংশিক রান-থ্রু। গেম লুপ ব্যবহার করা যেতে পারে:
- আপনার গেমের একটি স্তর চালান যেভাবে একজন শেষ ব্যবহারকারী এটি খেলবে। আপনি হয় ব্যবহারকারীর ইনপুট স্ক্রিপ্ট করতে পারেন, ব্যবহারকারীকে নিষ্ক্রিয় থাকতে দিন, অথবা ব্যবহারকারীকে AI দিয়ে প্রতিস্থাপন করতে পারেন যদি এটি আপনার গেমে বোধগম্য হয় (উদাহরণস্বরূপ, বলুন আপনার কাছে একটি রেস কার গেমিং অ্যাপ রয়েছে এবং ইতিমধ্যেই একটি AI প্রয়োগ করা হয়েছে৷ আপনি করতে পারেন৷ সহজেই একজন এআই ড্রাইভারকে ব্যবহারকারীর ইনপুটের দায়িত্বে রাখুন)।
- ডিভাইসগুলি এটি সমর্থন করে কিনা তা দেখতে সর্বোচ্চ মানের সেটিংসে আপনার গেমটি চালান৷
- একটি প্রযুক্তিগত পরীক্ষা চালান (একাধিক শেডার কম্পাইল করুন, তাদের চালান, পরীক্ষা করুন যে আউটপুট প্রত্যাশিত, ইত্যাদি)।
আপনি একটি একক টেস্ট ডিভাইস, টেস্ট ডিভাইসের একটি সেট বা Test Lab একটি গেম লুপ পরীক্ষা চালাতে পারেন। যাইহোক, আমরা ভার্চুয়াল ডিভাইসগুলিতে গেম লুপ পরীক্ষা চালানোর পরামর্শ দিই না কারণ তাদের গ্রাফিক্স ফ্রেম রেট শারীরিক ডিভাইসের তুলনায় কম।
আপনি শুরু করার আগে
একটি পরীক্ষা বাস্তবায়ন করতে, আপনাকে প্রথমে গেম লুপ পরীক্ষার জন্য আপনার অ্যাপ কনফিগার করতে হবে।
আপনার অ্যাপ ম্যানিফেস্টে, আপনার কার্যকলাপে একটি নতুন অভিপ্রায় ফিল্টার যোগ করুন:
<activity android:name=".MyActivity"> <intent-filter> <action android:name="com.google.intent.action.TEST_LOOP"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="application/javascript"/> </intent-filter> <intent-filter> ... (other intent filters here) </intent-filter> </activity>
এটি Test Lab একটি নির্দিষ্ট অভিপ্রায়ে ট্রিগার করে আপনার গেমটি চালু করার অনুমতি দেয়।
আপনার কোডে (আমরা
onCreate
পদ্ধতি ঘোষণার ভিতরে সুপারিশ করি), নিম্নলিখিত যোগ করুন:Kotlin+KTX
val launchIntent = intent if (launchIntent.action == "com.google.intent.action.TEST_LOOP") { val scenario = launchIntent.getIntExtra("scenario", 0) // Code to handle your game loop here }
Java
Intent launchIntent = getIntent(); if(launchIntent.getAction().equals("com.google.intent.action.TEST_LOOP")) { int scenario = launchIntent.getIntExtra("scenario", 0); // Code to handle your game loop here }
এটি আপনার ক্রিয়াকলাপটিকে এটি চালু করার অভিপ্রায়টি পরীক্ষা করার অনুমতি দেয়৷ আপনি যদি চান তবে আপনি পরে এই কোডটি যোগ করতে পারেন (যেমন, প্রাথমিকভাবে আপনার গেম ইঞ্জিন লোড করার পরে)।
প্রস্তাবিত: পরীক্ষার শেষে, যোগ করুন:
Kotlin+KTX
yourActivity.finish()
Java
yourActivity.finish();
গেম লুপ পরীক্ষা সম্পূর্ণ হলে এটি আপনার অ্যাপ বন্ধ করে দেয়। পরীক্ষাটি পরবর্তী লুপ শুরু করার জন্য আপনার অ্যাপের UI ফ্রেমওয়ার্কের উপর নির্ভর করে এবং আপনার অ্যাপটি বন্ধ করা বলে যে পরীক্ষাটি শেষ হয়েছে।
একটি গেম লুপ পরীক্ষা তৈরি করুন এবং চালান
আপনি গেম লুপ পরীক্ষার জন্য আপনার অ্যাপটি কনফিগার করার পরে, আপনি অবিলম্বে একটি পরীক্ষা তৈরি করতে এবং আপনার গেমিং অ্যাপে এটি চালাতে পারেন। আপনি Firebase কনসোল বা gcloud কমান্ড লাইন ইন্টারফেস (CLI) , অথবা টেস্ট লুপ ম্যানেজার ব্যবহার করে একটি স্থানীয় ডিভাইস ব্যবহার করে Test Lab একটি পরীক্ষা চালানো বেছে নিতে পারেন।
একটি স্থানীয় ডিভাইসে চালান
Test Lab টেস্ট লুপ ম্যানেজার হল একটি ওপেন সোর্স অ্যাপ যা আপনাকে গেম লুপ টেস্টগুলিকে একীভূত করতে এবং আপনার স্থানীয় ডিভাইসগুলিতে চালাতে সাহায্য করে৷ এটি আপনার কোয়ালিটি অ্যাসুরেন্স টিমকে তাদের ডিভাইসে একই গেম লুপ চালানোর অনুমতি দেয়।
টেস্ট লুপ ম্যানেজার ব্যবহার করে একটি স্থানীয় ডিভাইসে একটি পরীক্ষা চালানোর জন্য:
- একটি ফোন বা ট্যাবলেটে টেস্ট লুপ ম্যানেজার ডাউনলোড করুন এবং এটি চালিয়ে ইনস্টল করুন:
adb install testloopmanager.apk
- আপনার ডিভাইসে, আপনার ফোন বা ট্যাবলেটে টেস্ট লুপ অ্যাপস অ্যাপ খুলুন। অ্যাপটি আপনার ডিভাইসে অ্যাপ্লিকেশানগুলির একটি তালিকা প্রদর্শন করে যা গেম লুপ দিয়ে চালানো যেতে পারে। আপনি যদি এখানে আপনার গেমিং অ্যাপটি দেখতে না পান, তাহলে নিশ্চিত করুন যে আপনার অভিপ্রায় ফিল্টারটি আপনি শুরু করার আগে বিভাগের প্রথম ধাপে বর্ণিত একটির সাথে মেলে।
- আপনার গেমিং অ্যাপ্লিকেশন নির্বাচন করুন, তারপর আপনি চালাতে চান লুপ সংখ্যা নির্বাচন করুন. দ্রষ্টব্য: এই ধাপে, আপনি শুধুমাত্র একটি লুপের পরিবর্তে লুপের একটি উপসেট চালানো বেছে নিতে পারেন। একবারে একাধিক লুপ চালানোর বিষয়ে আরও তথ্যের জন্য, ঐচ্ছিক বৈশিষ্ট্যগুলি দেখুন।
- রান পরীক্ষা ক্লিক করুন। আপনার পরীক্ষা অবিলম্বে চলমান শুরু হয়.
Test Lab চালান
আপনি Firebase কনসোল বা gcloud CLI ব্যবহার করে Test Lab একটি গেম লুপ পরীক্ষা চালাতে পারেন। আপনি শুরু করার আগে, যদি আপনি ইতিমধ্যে না করে থাকেন, Firebase কনসোল খুলুন এবং একটি প্রকল্প তৈরি করুন।
Firebase কনসোল ব্যবহার করুন
- Firebase কনসোলে, বাম প্যানেল থেকে Test Lab ক্লিক করুন।
- আপনার প্রথম পরীক্ষা চালান ক্লিক করুন (অথবা আপনার প্রকল্প আগে একটি পরীক্ষা চালানো হলে একটি পরীক্ষা চালান )।
- পরীক্ষার ধরন হিসাবে গেম লুপ নির্বাচন করুন এবং তারপরে অবিরত ক্লিক করুন।
- Browse এ ক্লিক করুন এবং তারপর আপনার অ্যাপের
.apk
ফাইলে ব্রাউজ করুন। দ্রষ্টব্য: এই ধাপে, আপনি শুধুমাত্র একটি লুপের পরিবর্তে লুপের একটি উপসেট চালানো বেছে নিতে পারেন। একবারে একাধিক লুপ চালানোর বিষয়ে আরও তথ্যের জন্য, ঐচ্ছিক বৈশিষ্ট্যগুলি দেখুন। - অবিরত ক্লিক করুন.
- আপনার অ্যাপ পরীক্ষা করতে ব্যবহার করার জন্য শারীরিক ডিভাইস নির্বাচন করুন।
- স্টার্ট টেস্টে ক্লিক করুন।
Firebase কনসোল দিয়ে শুরু করার বিষয়ে আরও তথ্যের জন্য, Firebase কনসোল দিয়ে পরীক্ষা শুরু করুন দেখুন।
gcloud কমান্ড লাইন (CLI) ব্যবহার করুন
আপনি যদি ইতিমধ্যেই না করে থাকেন তবে Google Cloud SDK ডাউনলোড এবং ইনস্টল করুন৷
আপনার Google অ্যাকাউন্ট ব্যবহার করে gcloud CLI-তে সাইন ইন করুন:
gcloud auth login
gcloud-এ আপনার Firebase প্রকল্প সেট করুন, যেখানে
PROJECT_ID
হল আপনার Firebase প্রকল্পের ID:gcloud config set project PROJECT_ID
আপনার প্রথম পরীক্ষা চালান:
gcloud firebase test android run \ --type=game-loop --app=<var>path-to-apk</var> \ --device model=herolte,version=23
gcloud CLI দিয়ে শুরু করার বিষয়ে আরও তথ্যের জন্য, gcloud কমান্ড লাইন থেকে পরীক্ষা শুরু করুন দেখুন।
ঐচ্ছিক বৈশিষ্ট্য
Test Lab বিভিন্ন ঐচ্ছিক বৈশিষ্ট্যগুলি অফার করে যা আপনাকে আপনার পরীক্ষাগুলিকে আরও কাস্টমাইজ করতে দেয়, যার মধ্যে আউটপুট ডেটা লেখার ক্ষমতা, একাধিক গেম লুপগুলির জন্য সমর্থন এবং সম্পর্কিত লুপের জন্য লেবেল রয়েছে৷
আউটপুট ডেটা লিখুন
আপনার গেম লুপ পরীক্ষা launchIntent.getData()
পদ্ধতিতে নির্দিষ্ট করা ফাইলে আউটপুট লিখতে পারে। আপনি একটি পরীক্ষা চালানোর পরে, আপনি Firebase কনসোলের Test Lab বিভাগে এই আউটপুট ডেটা অ্যাক্সেস করতে পারেন ( গেম লুপ টেস্ট আউটপুট ফাইলের উদাহরণ দেখুন)।
Test Lab একটি ফাইল শেয়ারিং এ বর্ণিত অ্যাপগুলির মধ্যে একটি ফাইল ভাগ করার জন্য সর্বোত্তম অনুশীলনগুলি অনুসরণ করে৷ আপনার কার্যকলাপের onCreate()
পদ্ধতিতে, যেখানে আপনার উদ্দেশ্য অবস্থিত, আপনি নিম্নলিখিত কোডটি চালিয়ে আপনার ডেটা আউটপুট ফাইলটি পরীক্ষা করতে পারেন:
Kotlin+KTX
val launchIntent = intent val logFile = launchIntent.data logFile?.let { Log.i(TAG, "Log file ${it.encodedPath}") // ... }
Java
Intent launchIntent = getIntent(); Uri logFile = launchIntent.getData(); if (logFile != null) { Log.i(TAG, "Log file " + logFile.getEncodedPath()); // ... }
আপনি যদি আপনার গেম অ্যাপের C++ পাশ থেকে ফাইলটিতে লিখতে চান তবে আপনি ফাইল পাথের পরিবর্তে ফাইল বর্ণনাকারীতে পাস করতে পারেন:
Kotlin+KTX
val launchIntent = intent val logFile = launchIntent.data var fd = -1 logFile?.let { Log.i(TAG, "Log file ${it.encodedPath}") fd = try { contentResolver .openAssetFileDescriptor(logFile, "w")!! .parcelFileDescriptor .fd } catch (e: FileNotFoundException) { e.printStackTrace() -1 } catch (e: NullPointerException) { e.printStackTrace() -1 } } // C++ code invoked here. // native_function(fd);
Java
Intent launchIntent = getIntent(); Uri logFile = launchIntent.getData(); int fd = -1; if (logFile != null) { Log.i(TAG, "Log file " + logFile.getEncodedPath()); try { fd = getContentResolver() .openAssetFileDescriptor(logFile, "w") .getParcelFileDescriptor() .getFd(); } catch (FileNotFoundException e) { e.printStackTrace(); fd = -1; } catch (NullPointerException e) { e.printStackTrace(); fd = -1; } } // C++ code invoked here. // native_function(fd);
সি++
#include <unistd.h> JNIEXPORT void JNICALL Java_my_package_name_MyActivity_native_function(JNIEnv *env, jclass type, jint log_file_descriptor) { // The file descriptor needs to be duplicated. int my_file_descriptor = dup(log_file_descriptor); }
আউটপুট ফাইলের উদাহরণ
আপনি Firebase কনসোলের Test Lab বিভাগে গেম লুপ পরীক্ষার ফলাফল প্রদর্শন করতে আউটপুট ডেটা ফাইল (নীচের উদাহরণের মতো ফর্ম্যাট করা) ব্যবহার করতে পারেন। /.../
হিসাবে দেখানো ক্ষেত্রগুলিতে আপনার প্রয়োজনীয় যে কোনও কাস্টম ক্ষেত্র থাকতে পারে, যতক্ষণ না তারা এই ফাইলে ব্যবহৃত অন্যান্য ক্ষেত্রের নামের সাথে বিরোধ না করে:
{ "name": "test name", "start_timestamp": 0, // Timestamp of the test start (in us). Can be absolute or relative "driver_info": "...", "frame_stats": [ { "timestamp": 1200000, // Timestamp at which this section was written It contains value regarding the period start_timestamp(0) -> this timestamp (1200000 us) "avg_frame_time": 15320, // Average time to render a frame in ns "nb_swap": 52, // Number of frame rendered "threads": [ { "name": "physics", "Avg_time": 8030 // Average time spent in this thread per frame in us }, { "name": "AI", "Avg_time": 2030 // Average time spent in this thread per frame in us } ], /.../ // Any custom field you want (vertices display on the screen, nb units …) }, { // Next frame data here, same format as above } ], "loading_stats": [ { "name": "assets_level_1", "total_time": 7850, // in us /.../ }, { "name": "victory_screen", "total_time": 554, // in us /.../ } ], /.../, // You can add custom fields here }
একাধিক গেম লুপ
আপনি আপনার অ্যাপে একাধিক গেম লুপ চালানোর জন্য এটি দরকারী বলে মনে করতে পারেন। একটি লুপ হল আপনার গেম অ্যাপের শুরু থেকে শেষ পর্যন্ত সম্পূর্ণ রান-থ্রু। উদাহরণস্বরূপ, যদি আপনার গেমে একাধিক স্তর থাকে, তাহলে আপনি প্রতিটি স্তর চালু করার জন্য একটি গেম লুপ রাখতে চাইতে পারেন যার পরিবর্তে একটি লুপ থাকে যা সেগুলির মধ্যে পুনরাবৃত্তি করে। এইভাবে, যদি আপনার অ্যাপটি লেভেল 32-এ ক্র্যাশ হয়, আপনি ক্র্যাশ পুনরুত্পাদন করতে এবং বাগ ফিক্স পরীক্ষা করতে সরাসরি সেই গেম লুপটি চালু করতে পারেন।
একবারে একাধিক লুপ চালানোর জন্য আপনার অ্যাপকে সক্ষম করতে:
আপনি যদি টেস্ট লুপ ম্যানেজারের সাথে একটি পরীক্ষা চালাচ্ছেন:
<application>
উপাদানের ভিতরে, আপনার অ্যাপের ম্যানিফেস্টে নিম্নলিখিত লাইনটি যোগ করুন:<meta-data android:name="com.google.test.loops" android:value="5" />
এই লঞ্চের উদ্দেশ্য একটি পূর্ণসংখ্যা প্যারামিটার হিসাবে লক্ষ্য লুপ ধারণ করে।
android:value
ফিল্ডে, আপনি 1 থেকে 1024 পর্যন্ত একটি পূর্ণসংখ্যা নির্দিষ্ট করতে পারেন (একটি পরীক্ষার জন্য সর্বাধিক সংখ্যক লুপ অনুমোদিত)। লক্ষ্য করুন যে লুপগুলি 1 থেকে শুরু করে সূচক করা হয়, 0 নয়।টেস্ট লুপ ম্যানেজার অ্যাপে, একটি নির্বাচন স্ক্রীন প্রদর্শিত হয় যা আপনাকে কোন লুপ(গুলি) চালাতে চান তা নির্বাচন করতে দেয়। আপনি একাধিক লুপ নির্বাচন করলে, পূর্ববর্তী লুপ সম্পূর্ণ হওয়ার পর প্রতিটি লুপ ক্রমানুসারে চালু হয়।
আপনি যদি Firebase কনসোলের সাথে একটি পরীক্ষা চালাচ্ছেন, দৃশ্যকল্প ক্ষেত্রে একটি তালিকা বা লুপ নম্বরগুলির একটি পরিসর লিখুন৷
আপনি যদি জিক্লাউড সিএলআই-এর সাথে একটি পরীক্ষা চালাচ্ছেন, তাহলে
--scenario-numbers
পতাকা ব্যবহার করে লুপ সংখ্যার একটি তালিকা নির্দিষ্ট করুন। উদাহরণস্বরূপ,--scenario-numbers=1,3,5
রান লুপ 1, 3, এবং 5।আপনি যদি C++ লিখছেন এবং আপনার লুপের আচরণ পরিবর্তন করতে চান, তাহলে আপনার নেটিভ C++ কোডে নিম্নলিখিত অতিরিক্তটি পাস করুন:
Kotlin+KTX
val launchIntent = intent val scenario = launchIntent.getIntExtra("scenario", 0)
Java
Intent launchIntent = getIntent(); int scenario = launchIntent.getIntExtra("scenario", 0);
আপনি এখন ফলাফল
int
মানের উপর ভিত্তি করে আপনার লুপের আচরণ পরিবর্তন করতে পারেন।
লেবেল খেলা loops
আপনি যখন আপনার গেম লুপগুলিকে এক বা একাধিক দৃশ্যের লেবেল দিয়ে লেবেল করেন, তখন আপনি এবং আপনার QA টিম সহজেই সম্পর্কিত গেম লুপগুলির একটি সেট চালু করতে পারেন (যেমন, "সমস্ত সামঞ্জস্যপূর্ণ গেম লুপ") এবং একটি একক ম্যাট্রিক্সে পরীক্ষা করতে পারেন৷ আপনি নিজের লেবেল তৈরি করতে পারেন বা Test Lab দ্বারা দেওয়া পূর্বনির্ধারিত লেবেলগুলি ব্যবহার করতে পারেন:
-
com.google.test.loops.player_experience
: গেম খেলার সময় প্রকৃত ব্যবহারকারীর অভিজ্ঞতা পুনরুত্পাদন করতে ব্যবহৃত লুপের জন্য। এই লুপগুলির সাথে পরীক্ষার লক্ষ্য হল এমন সমস্যাগুলি খুঁজে বের করা যা একজন প্রকৃত ব্যবহারকারী গেম খেলার সময় সম্মুখীন হবে। -
com.google.test.loops.gpu_compatibility
: জিপিইউ-সম্পর্কিত সমস্যাগুলি পরীক্ষা করতে ব্যবহৃত লুপের জন্য। এই লুপগুলির সাথে পরীক্ষা করার লক্ষ্য হল GPU কোড চালানো যা উৎপাদনে সঠিকভাবে চলতে পারে না, হার্ডওয়্যার এবং ড্রাইভারের সমস্যাগুলি প্রকাশ করা। -
com.google.test.loops.compatibility
: I/O সমস্যা এবং OpenSSL সমস্যা সহ সামঞ্জস্যতার সমস্যাগুলির একটি বিস্তৃত পরিসর পরীক্ষা করতে ব্যবহৃত লুপের জন্য। -
com.google.test.loops.performance
: ডিভাইসের কার্যক্ষমতা পরীক্ষা করতে ব্যবহৃত লুপের জন্য। উদাহরণস্বরূপ, একটি নতুন ডিভাইস কীভাবে আচরণ করে তা দেখতে একটি গেম সবচেয়ে জটিল গ্রাফিক্স সেটিংসে চলতে পারে।
একই লেবেল দিয়ে লুপ চালানোর জন্য আপনার অ্যাপকে সক্ষম করতে:
আপনি যদি টেস্ট লুপ ম্যানেজারের সাথে একটি পরীক্ষা চালাচ্ছেন:
আপনার অ্যাপের ম্যানিফেস্টে, নিম্নলিখিত মেটা-ডেটা লাইন যোগ করুন এবং আপনার পছন্দের একটি লেবেল দিয়ে LABEL_NAME প্রতিস্থাপন করুন:
<meta-data android:name="com.google.test.loops.LABEL_NAME" android:value="1,3-5" />
android:value
ফিল্ডে, আপনি 1 থেকে 1024 পর্যন্ত একটি পরিসর বা পূর্ণসংখ্যার একটি সেট নির্দিষ্ট করতে পারেন (একটি পরীক্ষার জন্য সর্বাধিক সংখ্যক লুপ অনুমোদিত) যা আপনি যে লুপগুলিকে লেবেল করতে চান তা প্রতিনিধিত্ব করে৷ মনে রাখবেন যে লুপগুলি 1 থেকে শুরু করে সূচিত করা হয়েছে, 0 নয়৷ উদাহরণস্বরূপ,android:value="1,3-5"
LABEL_NAME লুপ 1, 3, 4 এবং 5-এ প্রযোজ্য৷টেস্ট লুপ ম্যানেজার অ্যাপে, লেবেল ক্ষেত্রে এক বা একাধিক লেবেল লিখুন।
আপনি যদি Firebase কনসোল দিয়ে একটি পরীক্ষা চালান, তাহলে লেবেল ক্ষেত্রে এক বা একাধিক লেবেল লিখুন।
আপনি যদি gcloud CLI এর সাথে একটি পরীক্ষা চালাচ্ছেন,
--scenario-labels
পতাকা (যেমন,--scenario-labels=performance,gpu
) ব্যবহার করে এক বা একাধিক দৃশ্যের লেবেল নির্দিষ্ট করুন।
অ্যাপ লাইসেন্সিং সমর্থন
Test Lab এমন অ্যাপগুলিকে সমর্থন করে যেগুলি Google Play দ্বারা প্রদত্ত অ্যাপ লাইসেন্সিং পরিষেবা ব্যবহার করে৷ Test Lab সাথে আপনার অ্যাপ পরীক্ষা করার সময় সফলভাবে লাইসেন্সিং পরীক্ষা করতে, আপনাকে অবশ্যই আপনার অ্যাপটি প্লে স্টোরে প্রোডাকশন চ্যানেলে প্রকাশ করতে হবে। Test Lab ব্যবহার করে আলফা বা বিটা চ্যানেলে আপনার অ্যাপ পরীক্ষা করতে, Test Lab আপনার অ্যাপ আপলোড করার আগে লাইসেন্সিং চেক সরিয়ে ফেলুন।
পরিচিত সমস্যা
Test Lab গেম লুপ পরীক্ষায় নিম্নলিখিত পরিচিত সমস্যা রয়েছে:
- কিছু ক্র্যাশ ব্যাকট্রেস সমর্থন করে না। উদাহরণস্বরূপ, কিছু রিলিজ বিল্ড
prctl(PR_SET_DUMPABLE, 0)
ব্যবহার করেdebuggerd
প্রক্রিয়ার আউটপুটকে দমন করতে পারে। আরও জানতে,debuggerd
দেখুন। - ফাইল অনুমতি ত্রুটির কারণে API স্তর 19 বর্তমানে সমর্থিত নয়।
গেমিং অ্যাপগুলি বিভিন্ন UI ফ্রেমওয়ার্কের উপর নির্মিত হলে গেম টেস্টিং স্বয়ংক্রিয় করা কঠিন হতে পারে। গেম লুপ টেস্টগুলি আপনাকে Test Lab সাথে আপনার নেটিভ টেস্টগুলিকে একীভূত করতে এবং আপনার নির্বাচিত ডিভাইসগুলিতে সহজেই চালাতে দেয়৷ একটি গেম লুপ পরীক্ষা আপনার গেমিং অ্যাপের মাধ্যমে আপনার পরীক্ষা চালায় যখন একজন প্রকৃত খেলোয়াড়ের ক্রিয়াগুলি অনুকরণ করে। এই নির্দেশিকা আপনাকে দেখায় কিভাবে একটি গেম লুপ পরীক্ষা চালাতে হয়, তারপর Firebase কনসোলে আপনার পরীক্ষার ফলাফল দেখুন এবং পরিচালনা করুন।
আপনার গেম ইঞ্জিনের উপর নির্ভর করে, আপনি একক বা একাধিক লুপ সহ পরীক্ষাগুলি প্রয়োগ করতে পারেন। লুপ হল আপনার গেমিং অ্যাপে আপনার পরীক্ষার সম্পূর্ণ বা আংশিক রান-থ্রু। গেম লুপ ব্যবহার করা যেতে পারে:
- আপনার গেমের একটি স্তর চালান যেভাবে একজন শেষ ব্যবহারকারী এটি খেলবে। আপনি হয় ব্যবহারকারীর ইনপুট স্ক্রিপ্ট করতে পারেন, ব্যবহারকারীকে নিষ্ক্রিয় থাকতে দিন, অথবা ব্যবহারকারীকে AI দিয়ে প্রতিস্থাপন করতে পারেন যদি এটি আপনার গেমে বোধগম্য হয় (উদাহরণস্বরূপ, বলুন আপনার কাছে একটি রেস কার গেমিং অ্যাপ রয়েছে এবং ইতিমধ্যেই একটি AI প্রয়োগ করা হয়েছে৷ আপনি করতে পারেন৷ সহজেই একজন এআই ড্রাইভারকে ব্যবহারকারীর ইনপুটের দায়িত্বে রাখুন)।
- ডিভাইসগুলি এটি সমর্থন করে কিনা তা দেখতে সর্বোচ্চ মানের সেটিংসে আপনার গেমটি চালান৷
- একটি প্রযুক্তিগত পরীক্ষা চালান (একাধিক শেডার কম্পাইল করুন, তাদের চালান, পরীক্ষা করুন যে আউটপুট প্রত্যাশিত, ইত্যাদি)।
আপনি একটি একক টেস্ট ডিভাইস, টেস্ট ডিভাইসের একটি সেট বা Test Lab একটি গেম লুপ পরীক্ষা চালাতে পারেন। যাইহোক, আমরা ভার্চুয়াল ডিভাইসগুলিতে গেম লুপ পরীক্ষা চালানোর পরামর্শ দিই না কারণ তাদের গ্রাফিক্স ফ্রেম রেট শারীরিক ডিভাইসের তুলনায় কম।
আপনি শুরু করার আগে
একটি পরীক্ষা বাস্তবায়ন করতে, আপনাকে প্রথমে গেম লুপ পরীক্ষার জন্য আপনার অ্যাপ কনফিগার করতে হবে।
আপনার অ্যাপ ম্যানিফেস্টে, আপনার কার্যকলাপে একটি নতুন অভিপ্রায় ফিল্টার যোগ করুন:
<activity android:name=".MyActivity"> <intent-filter> <action android:name="com.google.intent.action.TEST_LOOP"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="application/javascript"/> </intent-filter> <intent-filter> ... (other intent filters here) </intent-filter> </activity>
এটি Test Lab একটি নির্দিষ্ট অভিপ্রায়ে ট্রিগার করে আপনার গেমটি চালু করার অনুমতি দেয়।
আপনার কোডে (আমরা
onCreate
পদ্ধতি ঘোষণার ভিতরে সুপারিশ করি), নিম্নলিখিত যোগ করুন:Kotlin+KTX
val launchIntent = intent if (launchIntent.action == "com.google.intent.action.TEST_LOOP") { val scenario = launchIntent.getIntExtra("scenario", 0) // Code to handle your game loop here }
Java
Intent launchIntent = getIntent(); if(launchIntent.getAction().equals("com.google.intent.action.TEST_LOOP")) { int scenario = launchIntent.getIntExtra("scenario", 0); // Code to handle your game loop here }
এটি আপনার ক্রিয়াকলাপটিকে এটি চালু করার অভিপ্রায়টি পরীক্ষা করার অনুমতি দেয়৷ আপনি যদি চান তবে আপনি পরে এই কোডটি যোগ করতে পারেন (যেমন, প্রাথমিকভাবে আপনার গেম ইঞ্জিন লোড করার পরে)।
প্রস্তাবিত: পরীক্ষার শেষে, যোগ করুন:
Kotlin+KTX
yourActivity.finish()
Java
yourActivity.finish();
গেম লুপ পরীক্ষা সম্পূর্ণ হলে এটি আপনার অ্যাপ বন্ধ করে দেয়। পরীক্ষাটি পরবর্তী লুপ শুরু করার জন্য আপনার অ্যাপের UI ফ্রেমওয়ার্কের উপর নির্ভর করে এবং আপনার অ্যাপটি বন্ধ করা বলে যে পরীক্ষাটি শেষ হয়েছে।
একটি গেম লুপ পরীক্ষা তৈরি করুন এবং চালান
আপনি গেম লুপ পরীক্ষার জন্য আপনার অ্যাপটি কনফিগার করার পরে, আপনি অবিলম্বে একটি পরীক্ষা তৈরি করতে এবং আপনার গেমিং অ্যাপে এটি চালাতে পারেন। আপনি Firebase কনসোল বা gcloud কমান্ড লাইন ইন্টারফেস (CLI) , অথবা টেস্ট লুপ ম্যানেজার ব্যবহার করে একটি স্থানীয় ডিভাইস ব্যবহার করে Test Lab একটি পরীক্ষা চালানো বেছে নিতে পারেন।
একটি স্থানীয় ডিভাইসে চালান
Test Lab টেস্ট লুপ ম্যানেজার হল একটি ওপেন সোর্স অ্যাপ যা আপনাকে গেম লুপ টেস্টগুলিকে একীভূত করতে এবং আপনার স্থানীয় ডিভাইসগুলিতে চালাতে সাহায্য করে৷ এটি আপনার কোয়ালিটি অ্যাসুরেন্স টিমকে তাদের ডিভাইসে একই গেম লুপ চালানোর অনুমতি দেয়।
টেস্ট লুপ ম্যানেজার ব্যবহার করে একটি স্থানীয় ডিভাইসে একটি পরীক্ষা চালানোর জন্য:
- একটি ফোন বা ট্যাবলেটে টেস্ট লুপ ম্যানেজার ডাউনলোড করুন এবং এটি চালিয়ে ইনস্টল করুন:
adb install testloopmanager.apk
- আপনার ডিভাইসে, আপনার ফোন বা ট্যাবলেটে টেস্ট লুপ অ্যাপস অ্যাপ খুলুন। অ্যাপটি আপনার ডিভাইসে অ্যাপ্লিকেশানগুলির একটি তালিকা প্রদর্শন করে যা গেম লুপ দিয়ে চালানো যেতে পারে। আপনি যদি এখানে আপনার গেমিং অ্যাপটি দেখতে না পান, তাহলে নিশ্চিত করুন যে আপনার অভিপ্রায় ফিল্টারটি আপনি শুরু করার আগে বিভাগের প্রথম ধাপে বর্ণিত একটির সাথে মেলে।
- আপনার গেমিং অ্যাপ্লিকেশন নির্বাচন করুন, তারপর আপনি চালাতে চান লুপ সংখ্যা নির্বাচন করুন. দ্রষ্টব্য: এই ধাপে, আপনি শুধুমাত্র একটি লুপের পরিবর্তে লুপের একটি উপসেট চালানো বেছে নিতে পারেন। একবারে একাধিক লুপ চালানোর বিষয়ে আরও তথ্যের জন্য, ঐচ্ছিক বৈশিষ্ট্যগুলি দেখুন।
- রান পরীক্ষা ক্লিক করুন। আপনার পরীক্ষা অবিলম্বে চলমান শুরু হয়.
Test Lab চালান
আপনি Firebase কনসোল বা gcloud CLI ব্যবহার করে Test Lab একটি গেম লুপ পরীক্ষা চালাতে পারেন। আপনি শুরু করার আগে, যদি আপনি ইতিমধ্যে না করে থাকেন, Firebase কনসোল খুলুন এবং একটি প্রকল্প তৈরি করুন।
Firebase কনসোল ব্যবহার করুন
- Firebase কনসোলে, বাম প্যানেল থেকে Test Lab ক্লিক করুন।
- আপনার প্রথম পরীক্ষা চালান ক্লিক করুন (অথবা আপনার প্রকল্প আগে একটি পরীক্ষা চালানো হলে একটি পরীক্ষা চালান )।
- পরীক্ষার ধরন হিসাবে গেম লুপ নির্বাচন করুন এবং তারপরে অবিরত ক্লিক করুন।
- Browse এ ক্লিক করুন এবং তারপর আপনার অ্যাপের
.apk
ফাইলে ব্রাউজ করুন। দ্রষ্টব্য: এই ধাপে, আপনি শুধুমাত্র একটি লুপের পরিবর্তে লুপের একটি উপসেট চালানো বেছে নিতে পারেন। একবারে একাধিক লুপ চালানোর বিষয়ে আরও তথ্যের জন্য, ঐচ্ছিক বৈশিষ্ট্যগুলি দেখুন। - অবিরত ক্লিক করুন.
- আপনার অ্যাপ পরীক্ষা করতে ব্যবহার করার জন্য শারীরিক ডিভাইস নির্বাচন করুন।
- স্টার্ট টেস্টে ক্লিক করুন।
Firebase কনসোল দিয়ে শুরু করার বিষয়ে আরও তথ্যের জন্য, Firebase কনসোল দিয়ে পরীক্ষা শুরু করুন দেখুন।
gcloud কমান্ড লাইন (CLI) ব্যবহার করুন
আপনি যদি ইতিমধ্যেই না করে থাকেন তবে Google Cloud SDK ডাউনলোড এবং ইনস্টল করুন৷
আপনার Google অ্যাকাউন্ট ব্যবহার করে gcloud CLI-তে সাইন ইন করুন:
gcloud auth login
gcloud-এ আপনার Firebase প্রকল্প সেট করুন, যেখানে
PROJECT_ID
হল আপনার Firebase প্রকল্পের ID:gcloud config set project PROJECT_ID
আপনার প্রথম পরীক্ষা চালান:
gcloud firebase test android run \ --type=game-loop --app=<var>path-to-apk</var> \ --device model=herolte,version=23
gcloud CLI দিয়ে শুরু করার বিষয়ে আরও তথ্যের জন্য, gcloud কমান্ড লাইন থেকে পরীক্ষা শুরু করুন দেখুন।
ঐচ্ছিক বৈশিষ্ট্য
Test Lab বিভিন্ন ঐচ্ছিক বৈশিষ্ট্যগুলি অফার করে যা আপনাকে আপনার পরীক্ষাগুলিকে আরও কাস্টমাইজ করতে দেয়, যার মধ্যে আউটপুট ডেটা লেখার ক্ষমতা, একাধিক গেম লুপগুলির জন্য সমর্থন এবং সম্পর্কিত লুপের জন্য লেবেল রয়েছে৷
আউটপুট ডেটা লিখুন
আপনার গেম লুপ পরীক্ষা launchIntent.getData()
পদ্ধতিতে নির্দিষ্ট করা ফাইলে আউটপুট লিখতে পারে। আপনি একটি পরীক্ষা চালানোর পরে, আপনি Firebase কনসোলের Test Lab বিভাগে এই আউটপুট ডেটা অ্যাক্সেস করতে পারেন ( গেম লুপ টেস্ট আউটপুট ফাইলের উদাহরণ দেখুন)।
Test Lab একটি ফাইল শেয়ারিং এ বর্ণিত অ্যাপগুলির মধ্যে একটি ফাইল ভাগ করার জন্য সর্বোত্তম অনুশীলনগুলি অনুসরণ করে৷ আপনার কার্যকলাপের onCreate()
পদ্ধতিতে, যেখানে আপনার উদ্দেশ্য অবস্থিত, আপনি নিম্নলিখিত কোডটি চালিয়ে আপনার ডেটা আউটপুট ফাইলটি পরীক্ষা করতে পারেন:
Kotlin+KTX
val launchIntent = intent val logFile = launchIntent.data logFile?.let { Log.i(TAG, "Log file ${it.encodedPath}") // ... }
Java
Intent launchIntent = getIntent(); Uri logFile = launchIntent.getData(); if (logFile != null) { Log.i(TAG, "Log file " + logFile.getEncodedPath()); // ... }
আপনি যদি আপনার গেম অ্যাপের C++ পাশ থেকে ফাইলটিতে লিখতে চান তবে আপনি ফাইল পাথের পরিবর্তে ফাইল বর্ণনাকারীতে পাস করতে পারেন:
Kotlin+KTX
val launchIntent = intent val logFile = launchIntent.data var fd = -1 logFile?.let { Log.i(TAG, "Log file ${it.encodedPath}") fd = try { contentResolver .openAssetFileDescriptor(logFile, "w")!! .parcelFileDescriptor .fd } catch (e: FileNotFoundException) { e.printStackTrace() -1 } catch (e: NullPointerException) { e.printStackTrace() -1 } } // C++ code invoked here. // native_function(fd);
Java
Intent launchIntent = getIntent(); Uri logFile = launchIntent.getData(); int fd = -1; if (logFile != null) { Log.i(TAG, "Log file " + logFile.getEncodedPath()); try { fd = getContentResolver() .openAssetFileDescriptor(logFile, "w") .getParcelFileDescriptor() .getFd(); } catch (FileNotFoundException e) { e.printStackTrace(); fd = -1; } catch (NullPointerException e) { e.printStackTrace(); fd = -1; } } // C++ code invoked here. // native_function(fd);
সি++
#include <unistd.h> JNIEXPORT void JNICALL Java_my_package_name_MyActivity_native_function(JNIEnv *env, jclass type, jint log_file_descriptor) { // The file descriptor needs to be duplicated. int my_file_descriptor = dup(log_file_descriptor); }
আউটপুট ফাইলের উদাহরণ
আপনি Firebase কনসোলের Test Lab বিভাগে গেম লুপ পরীক্ষার ফলাফল প্রদর্শন করতে আউটপুট ডেটা ফাইল (নীচের উদাহরণের মতো ফর্ম্যাট করা) ব্যবহার করতে পারেন। /.../
হিসাবে দেখানো ক্ষেত্রগুলিতে আপনার প্রয়োজনীয় যে কোনও কাস্টম ক্ষেত্র থাকতে পারে, যতক্ষণ না তারা এই ফাইলে ব্যবহৃত অন্যান্য ক্ষেত্রের নামের সাথে বিরোধ না করে:
{ "name": "test name", "start_timestamp": 0, // Timestamp of the test start (in us). Can be absolute or relative "driver_info": "...", "frame_stats": [ { "timestamp": 1200000, // Timestamp at which this section was written It contains value regarding the period start_timestamp(0) -> this timestamp (1200000 us) "avg_frame_time": 15320, // Average time to render a frame in ns "nb_swap": 52, // Number of frame rendered "threads": [ { "name": "physics", "Avg_time": 8030 // Average time spent in this thread per frame in us }, { "name": "AI", "Avg_time": 2030 // Average time spent in this thread per frame in us } ], /.../ // Any custom field you want (vertices display on the screen, nb units …) }, { // Next frame data here, same format as above } ], "loading_stats": [ { "name": "assets_level_1", "total_time": 7850, // in us /.../ }, { "name": "victory_screen", "total_time": 554, // in us /.../ } ], /.../, // You can add custom fields here }
একাধিক গেম লুপ
আপনি আপনার অ্যাপে একাধিক গেম লুপ চালানোর জন্য এটি দরকারী বলে মনে করতে পারেন। একটি লুপ হল আপনার গেম অ্যাপের শুরু থেকে শেষ পর্যন্ত সম্পূর্ণ রান-থ্রু। উদাহরণস্বরূপ, যদি আপনার গেমে একাধিক স্তর থাকে, তাহলে আপনি প্রতিটি স্তর চালু করার জন্য একটি গেম লুপ রাখতে চাইতে পারেন যার পরিবর্তে একটি লুপ থাকে যা সেগুলির মধ্যে পুনরাবৃত্তি করে। এইভাবে, যদি আপনার অ্যাপটি লেভেল 32-এ ক্র্যাশ হয়, আপনি ক্র্যাশ পুনরুত্পাদন করতে এবং বাগ ফিক্স পরীক্ষা করতে সরাসরি সেই গেম লুপটি চালু করতে পারেন।
একবারে একাধিক লুপ চালানোর জন্য আপনার অ্যাপকে সক্ষম করতে:
আপনি যদি টেস্ট লুপ ম্যানেজারের সাথে একটি পরীক্ষা চালাচ্ছেন:
<application>
উপাদানের ভিতরে, আপনার অ্যাপের ম্যানিফেস্টে নিম্নলিখিত লাইনটি যোগ করুন:<meta-data android:name="com.google.test.loops" android:value="5" />
এই লঞ্চের উদ্দেশ্য একটি পূর্ণসংখ্যা প্যারামিটার হিসাবে লক্ষ্য লুপ ধারণ করে।
android:value
ফিল্ডে, আপনি 1 থেকে 1024 পর্যন্ত একটি পূর্ণসংখ্যা নির্দিষ্ট করতে পারেন (একটি পরীক্ষার জন্য সর্বাধিক সংখ্যক লুপ অনুমোদিত)। লক্ষ্য করুন যে লুপগুলি 1 থেকে শুরু করে সূচক করা হয়, 0 নয়।টেস্ট লুপ ম্যানেজার অ্যাপে, একটি নির্বাচন স্ক্রীন প্রদর্শিত হয় যা আপনাকে কোন লুপ(গুলি) চালাতে চান তা নির্বাচন করতে দেয়। আপনি একাধিক লুপ নির্বাচন করলে, পূর্ববর্তী লুপ সম্পূর্ণ হওয়ার পর প্রতিটি লুপ ক্রমানুসারে চালু হয়।
আপনি যদি Firebase কনসোলের সাথে একটি পরীক্ষা চালাচ্ছেন, দৃশ্যকল্প ক্ষেত্রে একটি তালিকা বা লুপ নম্বরগুলির একটি পরিসর লিখুন৷
আপনি যদি জিক্লাউড সিএলআই-এর সাথে একটি পরীক্ষা চালাচ্ছেন, তাহলে
--scenario-numbers
পতাকা ব্যবহার করে লুপ সংখ্যার একটি তালিকা নির্দিষ্ট করুন। উদাহরণস্বরূপ,--scenario-numbers=1,3,5
রান লুপ 1, 3, এবং 5।আপনি যদি C++ লিখছেন এবং আপনার লুপের আচরণ পরিবর্তন করতে চান, তাহলে আপনার নেটিভ C++ কোডে নিম্নলিখিত অতিরিক্তটি পাস করুন:
Kotlin+KTX
val launchIntent = intent val scenario = launchIntent.getIntExtra("scenario", 0)
Java
Intent launchIntent = getIntent(); int scenario = launchIntent.getIntExtra("scenario", 0);
আপনি এখন ফলাফল
int
মানের উপর ভিত্তি করে আপনার লুপের আচরণ পরিবর্তন করতে পারেন।
লেবেল খেলা loops
আপনি যখন আপনার গেম লুপগুলিকে এক বা একাধিক দৃশ্যের লেবেল দিয়ে লেবেল করেন, তখন আপনি এবং আপনার QA টিম সহজেই সম্পর্কিত গেম লুপগুলির একটি সেট চালু করতে পারেন (যেমন, "সমস্ত সামঞ্জস্যপূর্ণ গেম লুপ") এবং একটি একক ম্যাট্রিক্সে পরীক্ষা করতে পারেন৷ আপনি নিজের লেবেল তৈরি করতে পারেন বা Test Lab দ্বারা দেওয়া পূর্বনির্ধারিত লেবেলগুলি ব্যবহার করতে পারেন:
-
com.google.test.loops.player_experience
: গেম খেলার সময় প্রকৃত ব্যবহারকারীর অভিজ্ঞতা পুনরুত্পাদন করতে ব্যবহৃত লুপের জন্য। এই লুপগুলির সাথে পরীক্ষার লক্ষ্য হল এমন সমস্যাগুলি খুঁজে বের করা যা একজন প্রকৃত ব্যবহারকারী গেম খেলার সময় সম্মুখীন হবে। -
com.google.test.loops.gpu_compatibility
: জিপিইউ-সম্পর্কিত সমস্যাগুলি পরীক্ষা করতে ব্যবহৃত লুপের জন্য। এই লুপগুলির সাথে পরীক্ষার লক্ষ্য হ'ল জিপিইউ কোডটি কার্যকর করা যা সম্ভবত উত্পাদনতে সঠিকভাবে চালিত না হয়, হার্ডওয়্যার এবং ড্রাইভারদের সাথে সমস্যাগুলি প্রকাশ করা। -
com.google.test.loops.compatibility
: আই/ও ইস্যু এবং ওপেনএসএসএল সমস্যাগুলি সহ বিস্তৃত সামঞ্জস্যতার বিষয়গুলি পরীক্ষা করার জন্য ব্যবহৃত লুপগুলির জন্য। -
com.google.test.loops.performance
. পারফরম্যান্স: ডিভাইসের কার্যকারিতা পরীক্ষা করতে ব্যবহৃত লুপগুলির জন্য। উদাহরণস্বরূপ, একটি নতুন ডিভাইস কীভাবে আচরণ করে তা দেখার জন্য একটি গেমটি সবচেয়ে জটিল গ্রাফিক্স সেটিংসে চলতে পারে।
আপনার অ্যাপ্লিকেশনটিকে একই লেবেল দিয়ে লুপগুলি চালাতে সক্ষম করতে:
আপনি যদি পরীক্ষার লুপ ম্যানেজারের সাথে একটি পরীক্ষা চালাচ্ছেন:
আপনার অ্যাপ্লিকেশনটির ম্যানিফেস্টে, নিম্নলিখিত মেটা-ডেটা লাইন যুক্ত করুন এবং আপনার পছন্দের একটি লেবেল দিয়ে LABEL_NAME প্রতিস্থাপন করুন:
<meta-data android:name="com.google.test.loops.LABEL_NAME" android:value="1,3-5" />
android:value
ক্ষেত্রে, আপনি 1 থেকে 1024 (একক পরীক্ষার জন্য অনুমোদিত সর্বাধিক সংখ্যা) পর্যন্ত একটি পরিসীমা বা পূর্ণসংখ্যার একটি সেট নির্দিষ্ট করতে পারেন যা আপনি লেবেল করতে চান এমন লুপগুলি উপস্থাপন করে। দ্রষ্টব্য যে লুপগুলি 1 থেকে শুরু করে সূচকযুক্ত করা হয়েছে, LABEL_NAME নয়android:value="1,3-5"
টেস্ট লুপ ম্যানেজার অ্যাপে, লেবেল ক্ষেত্রে এক বা একাধিক লেবেল লিখুন।
আপনি যদি Firebase কনসোলের সাথে একটি পরীক্ষা চালাচ্ছেন তবে লেবেল ক্ষেত্রে এক বা একাধিক লেবেল লিখুন।
আপনি যদি GCLAUD CLI এর সাথে একটি পরীক্ষা চালাচ্ছেন তবে
--scenario-labels
পতাকা (যেমন,--scenario-labels=performance,gpu
) ব্যবহার করে এক বা একাধিক দৃশ্যের লেবেল নির্দিষ্ট করুন।
অ্যাপ্লিকেশন লাইসেন্স সমর্থন
Test Lab এমন অ্যাপ্লিকেশনগুলিকে সমর্থন করে যা গুগল প্লে দ্বারা প্রদত্ত অ্যাপ্লিকেশন লাইসেন্সিং পরিষেবা ব্যবহার করে। Test Lab দিয়ে আপনার অ্যাপ্লিকেশনটি পরীক্ষা করার সময় সফলভাবে লাইসেন্সিং পরীক্ষা করতে, আপনাকে অবশ্যই আপনার অ্যাপটি প্লে স্টোরের প্রোডাকশন চ্যানেলে প্রকাশ করতে হবে। Test Lab ব্যবহার করে আলফা বা বিটা চ্যানেলে আপনার অ্যাপ্লিকেশনটি পরীক্ষা করতে, আপনার অ্যাপ্লিকেশনটি Test Lab আপলোড করার আগে লাইসেন্সিং চেকটি সরান।
পরিচিত সমস্যা
Test Lab গেম লুপ পরীক্ষাগুলিতে নিম্নলিখিত পরিচিত সমস্যাগুলি রয়েছে:
- কিছু ক্র্যাশ ব্যাকট্রেসকে সমর্থন করে না। উদাহরণস্বরূপ, কিছু রিলিজ বিল্ডগুলি
prctl(PR_SET_DUMPABLE, 0)
ব্যবহার করেdebuggerd
প্রক্রিয়াটির আউটপুটকে দমন করতে পারে। আরও জানতে,debuggerd
দেখুন। - ফাইলের অনুমতি ত্রুটির কারণে বর্তমানে এপিআই স্তর 19 সমর্থিত নয়।
গেমিং অ্যাপ্লিকেশনগুলি বিভিন্ন ইউআই ফ্রেমওয়ার্কগুলিতে নির্মিত হলে গেম টেস্টিং স্বয়ংক্রিয় করা শক্ত হতে পারে। গেম লুপ পরীক্ষাগুলি আপনাকে আপনার দেশীয় পরীক্ষাগুলি Test Lab সাথে সংহত করার অনুমতি দেয় এবং আপনার নির্বাচন করা ডিভাইসে সহজেই সেগুলি চালাতে দেয়। একটি গেম লুপ টেস্ট আপনার গেমিং অ্যাপ্লিকেশনটির মাধ্যমে আপনার পরীক্ষাটি চালায় যখন কোনও প্রকৃত প্লেয়ারের ক্রিয়াগুলি অনুকরণ করে। এই গাইডটি আপনাকে দেখায় যে কীভাবে গেম লুপ পরীক্ষা চালানো যায়, তারপরে Firebase কনসোলে আপনার পরীক্ষার ফলাফলগুলি দেখুন এবং পরিচালনা করুন।
আপনার গেম ইঞ্জিনের উপর নির্ভর করে আপনি একক বা একাধিক লুপ সহ পরীক্ষাগুলি প্রয়োগ করতে পারেন। একটি লুপ আপনার গেমিং অ্যাপে আপনার পরীক্ষার একটি পূর্ণ বা আংশিক রান-থ্রো। গেম লুপগুলি ব্যবহার করা যেতে পারে:
- আপনার গেমের একটি স্তর একইভাবে চালান যেমন কোনও শেষ ব্যবহারকারী এটি খেলবে। আপনি হয় ব্যবহারকারীর ইনপুটটি স্ক্রিপ্ট করতে পারেন, ব্যবহারকারীকে নিষ্ক্রিয় হতে দিন, বা ব্যবহারকারীকে যদি আপনার গেমটিতে অর্থবোধ করে তবে একটি এআই দিয়ে প্রতিস্থাপন করতে পারেন (যেমন, বলুন আপনার কাছে একটি রেস কার গেমিং অ্যাপ্লিকেশন রয়েছে এবং ইতিমধ্যে একটি এআই প্রয়োগ করা হয়েছে You আপনি পারেন ব্যবহারকারীর ইনপুটটির দায়িত্বে সহজেই একটি এআই ড্রাইভার রাখুন)।
- ডিভাইসগুলি এটি সমর্থন করে কিনা তা দেখতে আপনার গেমটি সর্বোচ্চ মানের সেটিংয়ে চালান।
- একটি প্রযুক্তিগত পরীক্ষা চালান (একাধিক শেডার সংকলন করুন, সেগুলি সম্পাদন করুন, আউটপুটটি প্রত্যাশার মতো, ইত্যাদি পরীক্ষা করুন)।
আপনি একটি একক পরীক্ষার ডিভাইসে, পরীক্ষার ডিভাইসের একটি সেট বা Test Lab একটি গেম লুপ পরীক্ষা চালাতে পারেন। তবে আমরা ভার্চুয়াল ডিভাইসে গেম লুপ পরীক্ষা চালানোর পরামর্শ দিই না কারণ তাদের শারীরিক ডিভাইসের তুলনায় গ্রাফিক্স ফ্রেমের হার কম রয়েছে।
আপনি শুরু করার আগে
একটি পরীক্ষা বাস্তবায়নের জন্য, আপনাকে প্রথমে গেম লুপ পরীক্ষার জন্য আপনার অ্যাপ্লিকেশনটি কনফিগার করতে হবে।
আপনার অ্যাপ্লিকেশন ম্যানিফেস্টে, আপনার ক্রিয়াকলাপে একটি নতুন অভিপ্রায় ফিল্টার যুক্ত করুন:
<activity android:name=".MyActivity"> <intent-filter> <action android:name="com.google.intent.action.TEST_LOOP"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="application/javascript"/> </intent-filter> <intent-filter> ... (other intent filters here) </intent-filter> </activity>
এটি Test Lab আপনার গেমটি একটি নির্দিষ্ট অভিপ্রায় দিয়ে ট্রিগার করে চালু করতে দেয়।
আপনার কোডে (আমরা
onCreate
পদ্ধতি ঘোষণার ভিতরে সুপারিশ করি), নিম্নলিখিতগুলি যুক্ত করুন:Kotlin+KTX
val launchIntent = intent if (launchIntent.action == "com.google.intent.action.TEST_LOOP") { val scenario = launchIntent.getIntExtra("scenario", 0) // Code to handle your game loop here }
Java
Intent launchIntent = getIntent(); if(launchIntent.getAction().equals("com.google.intent.action.TEST_LOOP")) { int scenario = launchIntent.getIntExtra("scenario", 0); // Code to handle your game loop here }
এটি আপনার ক্রিয়াকলাপটি এটি চালু করে এমন অভিপ্রায় পরীক্ষা করতে দেয়। আপনি যদি পছন্দ করেন তবে পরে এই কোডটি যুক্ত করতে পারেন (যেমন, প্রাথমিকভাবে আপনার গেম ইঞ্জিনটি লোড করার পরে)।
প্রস্তাবিত: পরীক্ষার শেষে, যোগ করুন:
Kotlin+KTX
yourActivity.finish()
Java
yourActivity.finish();
গেম লুপ পরীক্ষা সম্পূর্ণ হলে এটি আপনার অ্যাপ্লিকেশনটি বন্ধ করে দেয়। পরীক্ষাটি পরবর্তী লুপটি শুরু করার জন্য আপনার অ্যাপের ইউআই ফ্রেমওয়ার্কের উপর নির্ভর করে এবং আপনার অ্যাপ্লিকেশনটি বন্ধ করে দেয় যে এটি পরীক্ষা শেষ হয়েছে।
একটি গেম লুপ পরীক্ষা তৈরি করুন এবং চালান
আপনি গেম লুপ পরীক্ষার জন্য আপনার অ্যাপ্লিকেশনটি কনফিগার করার পরে, আপনি তাত্ক্ষণিকভাবে একটি পরীক্ষা তৈরি করতে পারেন এবং এটি আপনার গেমিং অ্যাপ্লিকেশনটিতে চালাতে পারেন। আপনি Firebase কনসোল বা জিসিএলউড কমান্ড লাইন ইন্টারফেস (সিএলআই) ব্যবহার করে বা টেস্ট লুপ ম্যানেজার ব্যবহার করে কোনও স্থানীয় ডিভাইসে ব্যবহার করে Test Lab একটি পরীক্ষা চালাতে বেছে নিতে পারেন।
স্থানীয় ডিভাইসে চালান
Test Lab টেস্ট লুপ ম্যানেজার একটি ওপেন সোর্স অ্যাপ্লিকেশন যা আপনাকে গেম লুপ পরীক্ষাগুলিকে সংহত করতে এবং এগুলি আপনার স্থানীয় ডিভাইসে চালাতে সহায়তা করে। এটি আপনার গুণমানের আশ্বাস দলকে তাদের ডিভাইসে একই গেমের লুপগুলি চালানোর অনুমতি দেয়।
টেস্ট লুপ ম্যানেজার ব্যবহার করে স্থানীয় ডিভাইসে একটি পরীক্ষা চালাতে:
- কোনও ফোন বা ট্যাবলেটে টেস্ট লুপ ম্যানেজারটি ডাউনলোড করুন এবং এটি চালিয়ে ইনস্টল করুন:
adb install testloopmanager.apk
- আপনার ডিভাইসে, আপনার ফোন বা ট্যাবলেটে টেস্ট লুপ অ্যাপ্লিকেশন অ্যাপ্লিকেশনটি খুলুন। অ্যাপ্লিকেশনটি আপনার ডিভাইসে অ্যাপ্লিকেশনগুলির একটি তালিকা প্রদর্শন করে যা গেম লুপগুলি দিয়ে চালানো যেতে পারে। আপনি যদি এখানে আপনার গেমিং অ্যাপটি না দেখেন তবে নিশ্চিত হয়ে নিন যে আপনার উদ্দেশ্য ফিল্টারটি আপনি বিভাগটি শুরু করার আগে প্রথম ধাপে বর্ণিত একটির সাথে মেলে।
- আপনার গেমিং অ্যাপটি নির্বাচন করুন, তারপরে আপনি যে লুপগুলি চালাতে চান তার সংখ্যা নির্বাচন করুন। দ্রষ্টব্য: এই পদক্ষেপে, আপনি কেবল একটি লুপের পরিবর্তে লুপের একটি উপসেট চালানো বেছে নিতে পারেন। একবারে একাধিক লুপ চালানোর বিষয়ে আরও তথ্যের জন্য, al চ্ছিক বৈশিষ্ট্যগুলি দেখুন।
- রান পরীক্ষা ক্লিক করুন। আপনার পরীক্ষা অবিলম্বে চলতে শুরু করে।
Test Lab চালান
আপনি Firebase কনসোল বা জিসিএলড সিএলআই ব্যবহার করে Test Lab একটি গেম লুপ পরীক্ষা চালাতে পারেন। আপনি শুরু করার আগে, যদি আপনি ইতিমধ্যে না থাকেন তবে Firebase কনসোলটি খুলুন এবং একটি প্রকল্প তৈরি করুন।
Firebase কনসোল ব্যবহার করুন
- Firebase কনসোলে, বাম প্যানেল থেকে Test Lab ক্লিক করুন।
- আপনার প্রথম পরীক্ষাটি চালান ক্লিক করুন (বা আপনার প্রকল্পটি আগে কোনও পরীক্ষা চালালে একটি পরীক্ষা চালান )।
- পরীক্ষার ধরণ হিসাবে গেম লুপটি নির্বাচন করুন এবং তারপরে চালিয়ে যান ক্লিক করুন।
- ব্রাউজ ক্লিক করুন এবং তারপরে আপনার অ্যাপের
.apk
ফাইলটি ব্রাউজ করুন। দ্রষ্টব্য: এই পদক্ষেপে, আপনি কেবল একটি লুপের পরিবর্তে লুপের একটি উপসেট চালানো বেছে নিতে পারেন। একবারে একাধিক লুপ চালানোর বিষয়ে আরও তথ্যের জন্য, al চ্ছিক বৈশিষ্ট্যগুলি দেখুন। - অবিরত ক্লিক করুন.
- আপনার অ্যাপ্লিকেশনটি পরীক্ষা করতে ব্যবহার করতে শারীরিক ডিভাইসগুলি নির্বাচন করুন।
- শুরু পরীক্ষা ক্লিক করুন।
Firebase কনসোল দিয়ে শুরু করার বিষয়ে আরও তথ্যের জন্য, Firebase কনসোল দিয়ে পরীক্ষা শুরু করুন।
GCloud কমান্ড-লাইন (সিএলআই) ব্যবহার করুন
আপনি যদি ইতিমধ্যে না থাকেন তবে গুগল ক্লাউড এসডিকে ডাউনলোড করুন এবং ইনস্টল করুন
আপনার গুগল অ্যাকাউন্টটি ব্যবহার করে GCloud CLI এ সাইন ইন করুন:
gcloud auth login
আপনার ফায়ারবেস প্রকল্পটি GCloud এ সেট করুন, যেখানে
PROJECT_ID
আপনার ফায়ারবেস প্রকল্পের আইডি:gcloud config set project PROJECT_ID
আপনার প্রথম পরীক্ষা চালান:
gcloud firebase test android run \ --type=game-loop --app=<var>path-to-apk</var> \ --device model=herolte,version=23
GCloud CLI দিয়ে শুরু করার বিষয়ে আরও তথ্যের জন্য, GCloud কমান্ড লাইন থেকে শুরু শুরু করুন।
ঐচ্ছিক বৈশিষ্ট্য
Test Lab বেশ কয়েকটি al চ্ছিক বৈশিষ্ট্য সরবরাহ করে যা আপনাকে আউটপুট ডেটা লেখার ক্ষমতা, একাধিক গেম লুপের জন্য সমর্থন এবং সম্পর্কিত লুপগুলির জন্য লেবেল সহ আপনার পরীক্ষাগুলি আরও কাস্টমাইজ করতে দেয়।
আউটপুট ডেটা লিখুন
আপনার গেম লুপ পরীক্ষা launchIntent.getData()
পদ্ধতিতে নির্দিষ্ট করা কোনও ফাইলে আউটপুট লিখতে পারে। আপনি একটি পরীক্ষা চালানোর পরে, আপনি Firebase কনসোলের Test Lab বিভাগে এই আউটপুট ডেটা অ্যাক্সেস করতে পারেন ( গেম লুপ টেস্ট আউটপুট ফাইলের উদাহরণ দেখুন)।
Test Lab কোনও ফাইল ভাগ করে নেওয়ার ক্ষেত্রে বর্ণিত অ্যাপ্লিকেশনগুলির মধ্যে একটি ফাইল ভাগ করে নেওয়ার জন্য সেরা অনুশীলনগুলি অনুসরণ করে। আপনার ক্রিয়াকলাপের onCreate()
পদ্ধতিতে, যেখানে আপনার অভিপ্রায়টি অবস্থিত, আপনি নিম্নলিখিত কোডটি চালিয়ে আপনার ডেটা আউটপুট ফাইলটি পরীক্ষা করতে পারেন:
Kotlin+KTX
val launchIntent = intent val logFile = launchIntent.data logFile?.let { Log.i(TAG, "Log file ${it.encodedPath}") // ... }
Java
Intent launchIntent = getIntent(); Uri logFile = launchIntent.getData(); if (logFile != null) { Log.i(TAG, "Log file " + logFile.getEncodedPath()); // ... }
আপনি যদি আপনার গেম অ্যাপ্লিকেশনটির সি ++ দিক থেকে ফাইলটিতে লিখতে চান তবে আপনি ফাইল পাথের পরিবর্তে ফাইল বর্ণনাকারীতে পাস করতে পারেন:
Kotlin+KTX
val launchIntent = intent val logFile = launchIntent.data var fd = -1 logFile?.let { Log.i(TAG, "Log file ${it.encodedPath}") fd = try { contentResolver .openAssetFileDescriptor(logFile, "w")!! .parcelFileDescriptor .fd } catch (e: FileNotFoundException) { e.printStackTrace() -1 } catch (e: NullPointerException) { e.printStackTrace() -1 } } // C++ code invoked here. // native_function(fd);
Java
Intent launchIntent = getIntent(); Uri logFile = launchIntent.getData(); int fd = -1; if (logFile != null) { Log.i(TAG, "Log file " + logFile.getEncodedPath()); try { fd = getContentResolver() .openAssetFileDescriptor(logFile, "w") .getParcelFileDescriptor() .getFd(); } catch (FileNotFoundException e) { e.printStackTrace(); fd = -1; } catch (NullPointerException e) { e.printStackTrace(); fd = -1; } } // C++ code invoked here. // native_function(fd);
সি++
#include <unistd.h> JNIEXPORT void JNICALL Java_my_package_name_MyActivity_native_function(JNIEnv *env, jclass type, jint log_file_descriptor) { // The file descriptor needs to be duplicated. int my_file_descriptor = dup(log_file_descriptor); }
আউটপুট ফাইল উদাহরণ
আপনি Firebase কনসোলের Test Lab বিভাগে গেম লুপ পরীক্ষার ফলাফলগুলি প্রদর্শন করতে আউটপুট ডেটা ফাইলগুলি (নীচের উদাহরণের মতো ফর্ম্যাট করা) ব্যবহার করতে পারেন। /.../
হিসাবে দেখানো অঞ্চলগুলিতে আপনার প্রয়োজনীয় কোনও কাস্টম ক্ষেত্র থাকতে পারে, যতক্ষণ না তারা এই ফাইলটিতে ব্যবহৃত অন্যান্য ক্ষেত্রের নামগুলির সাথে বিরোধ না করে:
{ "name": "test name", "start_timestamp": 0, // Timestamp of the test start (in us). Can be absolute or relative "driver_info": "...", "frame_stats": [ { "timestamp": 1200000, // Timestamp at which this section was written It contains value regarding the period start_timestamp(0) -> this timestamp (1200000 us) "avg_frame_time": 15320, // Average time to render a frame in ns "nb_swap": 52, // Number of frame rendered "threads": [ { "name": "physics", "Avg_time": 8030 // Average time spent in this thread per frame in us }, { "name": "AI", "Avg_time": 2030 // Average time spent in this thread per frame in us } ], /.../ // Any custom field you want (vertices display on the screen, nb units …) }, { // Next frame data here, same format as above } ], "loading_stats": [ { "name": "assets_level_1", "total_time": 7850, // in us /.../ }, { "name": "victory_screen", "total_time": 554, // in us /.../ } ], /.../, // You can add custom fields here }
একাধিক গেম লুপ
আপনি আপনার অ্যাপ্লিকেশনটিতে একাধিক গেম লুপগুলি চালানো দরকারী বলে মনে করতে পারেন। একটি লুপটি আপনার গেম অ্যাপ্লিকেশনটির শুরু থেকে শেষ পর্যন্ত সম্পূর্ণ রান-থ্রো। উদাহরণস্বরূপ, যদি আপনার গেমটিতে একাধিক স্তর থাকে তবে আপনার কাছে একটি লুপের পরিবর্তে প্রতিটি স্তর চালু করার জন্য একটি গেম লুপ থাকতে পারে যা তাদের সমস্তগুলির মধ্যে পুনরাবৃত্তি করে। এইভাবে, যদি আপনার অ্যাপটি 32 স্তরে ক্র্যাশ হয়ে যায় তবে আপনি ক্র্যাশটি পুনরুত্পাদন করতে এবং বাগ ফিক্সগুলি পরীক্ষা করতে সরাসরি সেই গেম লুপটি চালু করতে পারেন।
আপনার অ্যাপ্লিকেশনটিকে একবারে একাধিক লুপ চালাতে সক্ষম করতে:
আপনি যদি পরীক্ষার লুপ ম্যানেজারের সাথে একটি পরীক্ষা চালাচ্ছেন:
<application>
উপাদানটির ভিতরে আপনার অ্যাপের ম্যানিফেস্টে নিম্নলিখিত লাইনটি যুক্ত করুন:<meta-data android:name="com.google.test.loops" android:value="5" />
এই লঞ্চের অভিপ্রায়টি পূর্ণসংখ্যা প্যারামিটার হিসাবে লক্ষ্য লুপ রয়েছে।
android:value
ক্ষেত্রে, আপনি 1 থেকে 1024 (একক পরীক্ষার জন্য অনুমোদিত সর্বাধিক সংখ্যা) থেকে একটি পূর্ণসংখ্যা নির্দিষ্ট করতে পারেন। নোট করুন যে লুপগুলি 0 থেকে নয়, 1 থেকে শুরু করে সূচীযুক্ত।টেস্ট লুপ ম্যানেজার অ্যাপে, একটি নির্বাচন স্ক্রিন উপস্থিত হয় যা আপনাকে কোন লুপ (গুলি) চালাতে চান তা নির্বাচন করতে দেয়। আপনি যদি একাধিক লুপ নির্বাচন করেন তবে পূর্ববর্তী লুপটি শেষ হওয়ার পরে প্রতিটি লুপটি ক্রমানুসারে চালু করা হয়।
আপনি যদি Firebase কনসোলের সাথে একটি পরীক্ষা চালাচ্ছেন তবে পরিস্থিতি ক্ষেত্রের একটি তালিকা বা লুপ সংখ্যার একটি ব্যাপ্তি প্রবেশ করুন।
আপনি যদি জিসিএলউড সিএলআইয়ের সাথে একটি পরীক্ষা চালাচ্ছেন তবে
--scenario-numbers
পতাকা ব্যবহার করে লুপ সংখ্যার একটি তালিকা নির্দিষ্ট করুন। উদাহরণস্বরূপ,--scenario-numbers=1,3,5
রান লুপ 1, 3 এবং 5।আপনি যদি সি ++ লিখছেন এবং আপনার লুপের আচরণ পরিবর্তন করতে চান তবে নিম্নলিখিত অতিরিক্তটি আপনার নেটিভ সি ++ কোডে পাস করুন:
Kotlin+KTX
val launchIntent = intent val scenario = launchIntent.getIntExtra("scenario", 0)
Java
Intent launchIntent = getIntent(); int scenario = launchIntent.getIntExtra("scenario", 0);
আপনি এখন ফলাফলের
int
মানের ভিত্তিতে আপনার লুপের আচরণ পরিবর্তন করতে পারেন।
লেবেল গেম লুপস
আপনি যখন আপনার গেমের লুপগুলি এক বা একাধিক দৃশ্যের লেবেল দিয়ে লেবেল করেন, আপনি এবং আপনার কিউএ দল সহজেই সম্পর্কিত গেম লুপগুলির একটি সেট (যেমন, "সমস্ত সামঞ্জস্যতা গেম লুপগুলি") চালু করতে পারেন এবং সেগুলি একটি একক ম্যাট্রিক্সে পরীক্ষা করতে পারেন। আপনি নিজের লেবেল তৈরি করতে পারেন বা Test Lab দ্বারা প্রদত্ত পূর্বনির্ধারিত লেবেলগুলি ব্যবহার করতে পারেন:
-
com.google.test.loops.player_experience
: গেমটি খেলার সময় সত্যিকারের ব্যবহারকারীর অভিজ্ঞতা পুনরুত্পাদন করতে ব্যবহৃত লুপগুলির জন্য। এই লুপগুলির সাথে পরীক্ষার লক্ষ্যটি হ'ল গেমটি খেলার সময় একজন সত্যিকারের ব্যবহারকারী যে সমস্যার মুখোমুখি হবে তা সন্ধান করা। -
com.google.test.loops.gpu_compatibility
: জিপিইউ সম্পর্কিত সমস্যাগুলি পরীক্ষা করার জন্য ব্যবহৃত লুপগুলির জন্য। এই লুপগুলির সাথে পরীক্ষার লক্ষ্য হ'ল জিপিইউ কোডটি কার্যকর করা যা সম্ভবত উত্পাদনতে সঠিকভাবে চালিত না হয়, হার্ডওয়্যার এবং ড্রাইভারদের সাথে সমস্যাগুলি প্রকাশ করা। -
com.google.test.loops.compatibility
: আই/ও ইস্যু এবং ওপেনএসএসএল সমস্যাগুলি সহ বিস্তৃত সামঞ্জস্যতার বিষয়গুলি পরীক্ষা করার জন্য ব্যবহৃত লুপগুলির জন্য। -
com.google.test.loops.performance
. পারফরম্যান্স: ডিভাইসের কার্যকারিতা পরীক্ষা করতে ব্যবহৃত লুপগুলির জন্য। উদাহরণস্বরূপ, একটি নতুন ডিভাইস কীভাবে আচরণ করে তা দেখার জন্য একটি গেমটি সবচেয়ে জটিল গ্রাফিক্স সেটিংসে চলতে পারে।
আপনার অ্যাপ্লিকেশনটিকে একই লেবেল দিয়ে লুপগুলি চালাতে সক্ষম করতে:
আপনি যদি পরীক্ষার লুপ ম্যানেজারের সাথে একটি পরীক্ষা চালাচ্ছেন:
আপনার অ্যাপ্লিকেশনটির ম্যানিফেস্টে, নিম্নলিখিত মেটা-ডেটা লাইন যুক্ত করুন এবং আপনার পছন্দের একটি লেবেল দিয়ে LABEL_NAME প্রতিস্থাপন করুন:
<meta-data android:name="com.google.test.loops.LABEL_NAME" android:value="1,3-5" />
android:value
ক্ষেত্রে, আপনি 1 থেকে 1024 (একক পরীক্ষার জন্য অনুমোদিত সর্বাধিক সংখ্যা) পর্যন্ত একটি পরিসীমা বা পূর্ণসংখ্যার একটি সেট নির্দিষ্ট করতে পারেন যা আপনি লেবেল করতে চান এমন লুপগুলি উপস্থাপন করে। দ্রষ্টব্য যে লুপগুলি 1 থেকে শুরু করে সূচকযুক্ত করা হয়েছে, LABEL_NAME নয়android:value="1,3-5"
টেস্ট লুপ ম্যানেজার অ্যাপে, লেবেল ক্ষেত্রে এক বা একাধিক লেবেল লিখুন।
আপনি যদি Firebase কনসোলের সাথে একটি পরীক্ষা চালাচ্ছেন তবে লেবেল ক্ষেত্রে এক বা একাধিক লেবেল লিখুন।
আপনি যদি GCLAUD CLI এর সাথে একটি পরীক্ষা চালাচ্ছেন তবে
--scenario-labels
পতাকা (যেমন,--scenario-labels=performance,gpu
) ব্যবহার করে এক বা একাধিক দৃশ্যের লেবেল নির্দিষ্ট করুন।
অ্যাপ্লিকেশন লাইসেন্স সমর্থন
Test Lab এমন অ্যাপ্লিকেশনগুলিকে সমর্থন করে যা গুগল প্লে দ্বারা প্রদত্ত অ্যাপ্লিকেশন লাইসেন্সিং পরিষেবা ব্যবহার করে। Test Lab দিয়ে আপনার অ্যাপটি পরীক্ষা করার সময় সফলভাবে লাইসেন্সিং পরীক্ষা করতে, আপনাকে অবশ্যই আপনার অ্যাপ্লিকেশনটি প্লে স্টোরের প্রোডাকশন চ্যানেলে প্রকাশ করতে হবে। Test Lab ব্যবহার করে আলফা বা বিটা চ্যানেলে আপনার অ্যাপ্লিকেশনটি পরীক্ষা করতে, আপনার অ্যাপ্লিকেশনটি Test Lab আপলোড করার আগে লাইসেন্সিং চেকটি সরান।
পরিচিত সমস্যা
Test Lab গেম লুপ পরীক্ষাগুলিতে নিম্নলিখিত পরিচিত সমস্যাগুলি রয়েছে:
- কিছু ক্র্যাশ ব্যাকট্রেসকে সমর্থন করে না। উদাহরণস্বরূপ, কিছু রিলিজ বিল্ডগুলি
prctl(PR_SET_DUMPABLE, 0)
ব্যবহার করেdebuggerd
প্রক্রিয়াটির আউটপুটকে দমন করতে পারে। আরও জানতে,debuggerd
দেখুন। - ফাইলের অনুমতি ত্রুটির কারণে বর্তমানে এপিআই স্তর 19 সমর্থিত নয়।