গেম লুপ পরীক্ষা দিয়ে শুরু করুন

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

আপনার গেম ইঞ্জিনের উপর নির্ভর করে, আপনি একক বা একাধিক লুপ সহ পরীক্ষাগুলি প্রয়োগ করতে পারেন। লুপ হল আপনার গেমিং অ্যাপে আপনার পরীক্ষার সম্পূর্ণ বা আংশিক রান-থ্রু। গেম লুপ ব্যবহার করা যেতে পারে:

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

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

তুমি শুরু করার আগে

একটি পরীক্ষা বাস্তবায়ন করতে, আপনাকে প্রথমে গেম লুপ পরীক্ষার জন্য আপনার অ্যাপ কনফিগার করতে হবে।

  1. আপনার অ্যাপ ম্যানিফেস্টে, আপনার কার্যকলাপে একটি নতুন অভিপ্রায় ফিল্টার যোগ করুন:

    <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>
    

    এটি টেস্ট ল্যাবকে একটি নির্দিষ্ট অভিপ্রায়ে ট্রিগার করে আপনার গেমটি চালু করার অনুমতি দেয়।

  2. আপনার কোডে (আমরা 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
    }

    এটি আপনার ক্রিয়াকলাপটিকে এটি চালু করার অভিপ্রায়টি পরীক্ষা করার অনুমতি দেয়৷ আপনি যদি চান তবে আপনি পরে এই কোডটি যোগ করতে পারেন (যেমন, প্রাথমিকভাবে আপনার গেম ইঞ্জিন লোড করার পরে)।

  3. প্রস্তাবিত: পরীক্ষার শেষে, যোগ করুন:

    Kotlin+KTX

    yourActivity.finish()

    Java

    yourActivity.finish();

    গেম লুপ পরীক্ষা সম্পূর্ণ হলে এটি আপনার অ্যাপ বন্ধ করে দেয়। পরীক্ষাটি পরবর্তী লুপ শুরু করার জন্য আপনার অ্যাপের UI ফ্রেমওয়ার্কের উপর নির্ভর করে এবং আপনার অ্যাপটি বন্ধ করা বলে যে পরীক্ষাটি শেষ হয়েছে।

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

আপনি গেম লুপ পরীক্ষার জন্য আপনার অ্যাপটি কনফিগার করার পরে, আপনি অবিলম্বে একটি পরীক্ষা তৈরি করতে এবং আপনার গেমিং অ্যাপে এটি চালাতে পারেন। আপনি Firebase কনসোল বা gcloud কমান্ড লাইন ইন্টারফেস (CLI) , অথবা টেস্ট লুপ ম্যানেজার ব্যবহার করে একটি স্থানীয় ডিভাইস ব্যবহার করে টেস্ট ল্যাবে একটি পরীক্ষা চালানো বেছে নিতে পারেন।

একটি স্থানীয় ডিভাইসে চালান

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

টেস্ট লুপ ম্যানেজার ব্যবহার করে একটি স্থানীয় ডিভাইসে একটি পরীক্ষা চালানোর জন্য:

  1. একটি ফোন বা ট্যাবলেটে টেস্ট লুপ ম্যানেজার ডাউনলোড করুন এবং এটি চালিয়ে ইনস্টল করুন:
    adb install testloopmanager.apk
  2. আপনার ডিভাইসে, আপনার ফোন বা ট্যাবলেটে টেস্ট লুপ অ্যাপস অ্যাপ খুলুন। অ্যাপটি আপনার ডিভাইসে অ্যাপ্লিকেশানগুলির একটি তালিকা প্রদর্শন করে যা গেম লুপ দিয়ে চালানো যেতে পারে। আপনি যদি এখানে আপনার গেমিং অ্যাপটি দেখতে না পান, তাহলে নিশ্চিত করুন যে আপনার অভিপ্রায় ফিল্টারটি আপনি শুরু করার আগে বিভাগের প্রথম ধাপে বর্ণিত একটির সাথে মেলে।
  3. আপনার গেমিং অ্যাপ্লিকেশন নির্বাচন করুন, তারপর আপনি চালাতে চান লুপ সংখ্যা নির্বাচন করুন. দ্রষ্টব্য: এই ধাপে, আপনি শুধুমাত্র একটি লুপের পরিবর্তে লুপের একটি উপসেট চালানো বেছে নিতে পারেন। একবারে একাধিক লুপ চালানোর বিষয়ে আরও তথ্যের জন্য, ঐচ্ছিক বৈশিষ্ট্যগুলি দেখুন।
  4. রান পরীক্ষা ক্লিক করুন। আপনার পরীক্ষা অবিলম্বে চলমান শুরু হয়.

টেস্ট ল্যাবে চালান

আপনি Firebase কনসোল বা gcloud CLI ব্যবহার করে টেস্ট ল্যাবে একটি গেম লুপ পরীক্ষা চালাতে পারেন। আপনি শুরু করার আগে, যদি আপনি ইতিমধ্যে না করে থাকেন, Firebase কনসোল খুলুন এবং একটি প্রকল্প তৈরি করুন।

ফায়ারবেস কনসোল ব্যবহার করুন

  1. Firebase কনসোলে, বাম প্যানেল থেকে টেস্ট ল্যাব ক্লিক করুন।
  2. আপনার প্রথম পরীক্ষা চালান ক্লিক করুন (অথবা আপনার প্রকল্প আগে একটি পরীক্ষা চালানো হলে একটি পরীক্ষা চালান )।
  3. পরীক্ষার ধরন হিসাবে গেম লুপ নির্বাচন করুন এবং তারপরে অবিরত ক্লিক করুন।
  4. Browse এ ক্লিক করুন এবং তারপর আপনার অ্যাপের .apk ফাইলে ব্রাউজ করুন। দ্রষ্টব্য: এই ধাপে, আপনি শুধুমাত্র একটি লুপের পরিবর্তে লুপের একটি উপসেট চালানো বেছে নিতে পারেন। একবারে একাধিক লুপ চালানোর বিষয়ে আরও তথ্যের জন্য, ঐচ্ছিক বৈশিষ্ট্যগুলি দেখুন।
  5. অবিরত ক্লিক করুন.
  6. আপনার অ্যাপ পরীক্ষা করতে ব্যবহার করার জন্য শারীরিক ডিভাইস নির্বাচন করুন।
  7. স্টার্ট টেস্টে ক্লিক করুন।

Firebase কনসোল দিয়ে শুরু করার বিষয়ে আরও তথ্যের জন্য, Firebase কনসোল দিয়ে পরীক্ষা শুরু করুন দেখুন।

gcloud কমান্ড লাইন (CLI) ব্যবহার করুন

  1. আপনি যদি ইতিমধ্যেই না করে থাকেন তবে Google Cloud SDK ডাউনলোড এবং ইনস্টল করুন৷

  2. আপনার Google অ্যাকাউন্ট ব্যবহার করে gcloud CLI-তে সাইন ইন করুন:

    gcloud auth login

  3. gcloud-এ আপনার Firebase প্রকল্প সেট করুন, যেখানে PROJECT_ID হল আপনার Firebase প্রকল্পের ID:

    gcloud config set project PROJECT_ID
    
  4. আপনার প্রথম পরীক্ষা চালান:

    gcloud firebase test android run \
     --type=game-loop --app=<var>path-to-apk</var> \
     --device model=herolte,version=23
    

gcloud CLI দিয়ে শুরু করার বিষয়ে আরও তথ্যের জন্য, gcloud কমান্ড লাইন থেকে পরীক্ষা শুরু করুন দেখুন।

ঐচ্ছিক বৈশিষ্ট্য

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

আউটপুট ডেটা লিখুন

আপনার গেম লুপ পরীক্ষা launchIntent.getData() পদ্ধতিতে নির্দিষ্ট করা ফাইলে আউটপুট লিখতে পারে। আপনি একটি পরীক্ষা চালানোর পরে, আপনি Firebase কনসোলের টেস্ট ল্যাব বিভাগে এই আউটপুট ডেটা অ্যাক্সেস করতে পারেন ( গেম লুপ টেস্ট আউটপুট ফাইলের উদাহরণ দেখুন)।

টেস্ট ল্যাব একটি ফাইল শেয়ারিং এ বর্ণিত অ্যাপগুলির মধ্যে একটি ফাইল ভাগ করার জন্য সর্বোত্তম অনুশীলনগুলি অনুসরণ করে৷ আপনার কার্যকলাপের 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 কনসোলের টেস্ট ল্যাব বিভাগে গেম লুপ পরীক্ষার ফলাফল প্রদর্শন করতে আউটপুট ডেটা ফাইল (নীচের উদাহরণের মতো ফর্ম্যাট করা) ব্যবহার করতে পারেন। /.../ হিসাবে দেখানো ক্ষেত্রগুলিতে আপনার প্রয়োজনীয় যে কোনও কাস্টম ক্ষেত্র থাকতে পারে, যতক্ষণ না তারা এই ফাইলে ব্যবহৃত অন্যান্য ক্ষেত্রের নামের সাথে বিরোধ না করে:

{
  "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-এ ক্র্যাশ হয়, আপনি ক্র্যাশ পুনরুত্পাদন করতে এবং বাগ ফিক্স পরীক্ষা করতে সরাসরি সেই গেম লুপটি চালু করতে পারেন।

একবারে একাধিক লুপ চালানোর জন্য আপনার অ্যাপকে সক্ষম করতে:

  • আপনি যদি টেস্ট লুপ ম্যানেজারের সাথে একটি পরীক্ষা চালাচ্ছেন:

    1. <application> উপাদানের ভিতরে, আপনার অ্যাপের ম্যানিফেস্টে নিম্নলিখিত লাইনটি যোগ করুন:

      <meta-data
        android:name="com.google.test.loops"
        android:value="5" />
      

      এই লঞ্চের উদ্দেশ্য একটি পূর্ণসংখ্যা প্যারামিটার হিসাবে লক্ষ্য লুপ ধারণ করে। android:value ফিল্ডে, আপনি 1 থেকে 1024 পর্যন্ত একটি পূর্ণসংখ্যা নির্দিষ্ট করতে পারেন (একটি পরীক্ষার জন্য সর্বাধিক সংখ্যক লুপ অনুমোদিত)। লক্ষ্য করুন যে লুপগুলি 1 থেকে শুরু করে সূচক করা হয়, 0 নয়।

    2. টেস্ট লুপ ম্যানেজার অ্যাপে, একটি নির্বাচন স্ক্রীন প্রদর্শিত হয় যা আপনাকে কোন লুপ(গুলি) চালাতে চান তা নির্বাচন করতে দেয়। আপনি একাধিক লুপ নির্বাচন করলে, পূর্ববর্তী লুপ সম্পূর্ণ হওয়ার পর প্রতিটি লুপ ক্রমানুসারে চালু হয়।

  • আপনি যদি ফায়ারবেস কনসোলের সাথে একটি পরীক্ষা চালাচ্ছেন, দৃশ্যকল্প ক্ষেত্রে একটি তালিকা বা লুপ নম্বরগুলির একটি পরিসর লিখুন৷

  • আপনি যদি জিক্লাউড সিএলআই-এর সাথে একটি পরীক্ষা চালাচ্ছেন, তাহলে --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 টিম সহজেই সম্পর্কিত গেম লুপগুলির একটি সেট চালু করতে পারেন (যেমন, "সমস্ত সামঞ্জস্যপূর্ণ গেম লুপ") এবং একটি একক ম্যাট্রিক্সে পরীক্ষা করতে পারেন৷ আপনি নিজের লেবেল তৈরি করতে পারেন বা টেস্ট ল্যাব দ্বারা দেওয়া পূর্বনির্ধারিত লেবেলগুলি ব্যবহার করতে পারেন:

  • 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 : ডিভাইসের কার্যক্ষমতা পরীক্ষা করতে ব্যবহৃত লুপের জন্য। উদাহরণস্বরূপ, একটি নতুন ডিভাইস কীভাবে আচরণ করে তা দেখতে একটি গেম সবচেয়ে জটিল গ্রাফিক্স সেটিংসে চলতে পারে।

একই লেবেল দিয়ে লুপ চালানোর জন্য আপনার অ্যাপকে সক্ষম করতে:

  • আপনি যদি টেস্ট লুপ ম্যানেজারের সাথে একটি পরীক্ষা চালাচ্ছেন:

    1. আপনার অ্যাপের ম্যানিফেস্টে, নিম্নলিখিত মেটা-ডেটা লাইন যোগ করুন এবং আপনার পছন্দের একটি লেবেল দিয়ে 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-এ প্রযোজ্য৷

    2. টেস্ট লুপ ম্যানেজার অ্যাপে, লেবেল ক্ষেত্রে এক বা একাধিক লেবেল লিখুন।

  • আপনি যদি Firebase কনসোল দিয়ে একটি পরীক্ষা চালান, তাহলে লেবেল ক্ষেত্রে এক বা একাধিক লেবেল লিখুন।

  • আপনি যদি জিক্লাউড CLI-এর সাথে একটি পরীক্ষা চালাচ্ছেন, তাহলে --scenario-labels পতাকা (যেমন, --scenario-labels=performance,gpu ) ব্যবহার করে এক বা একাধিক দৃশ্যের লেবেল নির্দিষ্ট করুন।

অ্যাপ লাইসেন্সিং সমর্থন

টেস্ট ল্যাব এমন অ্যাপগুলিকে সমর্থন করে যেগুলি Google Play দ্বারা প্রদত্ত অ্যাপ লাইসেন্সিং পরিষেবা ব্যবহার করে৷ টেস্ট ল্যাবের মাধ্যমে আপনার অ্যাপ পরীক্ষা করার সময় সফলভাবে লাইসেন্সিং পরীক্ষা করতে, আপনাকে অবশ্যই আপনার অ্যাপটি প্লে স্টোরে প্রোডাকশন চ্যানেলে প্রকাশ করতে হবে। টেস্ট ল্যাব ব্যবহার করে আপনার অ্যাপটি আলফা বা বিটা চ্যানেলে পরীক্ষা করতে, টেস্ট ল্যাবে আপনার অ্যাপ আপলোড করার আগে লাইসেন্সিং চেকটি সরিয়ে ফেলুন।

জ্ঞাত সমস্যা

টেস্ট ল্যাবে গেম লুপ পরীক্ষায় নিম্নলিখিত পরিচিত সমস্যা রয়েছে:

  • কিছু ক্র্যাশ ব্যাকট্রেস সমর্থন করে না। উদাহরণস্বরূপ, কিছু রিলিজ বিল্ড prctl(PR_SET_DUMPABLE, 0) ব্যবহার করে debuggerd প্রক্রিয়ার আউটপুটকে দমন করতে পারে। আরও জানতে, debuggerd দেখুন।
  • ফাইল অনুমতি ত্রুটির কারণে API স্তর 19 বর্তমানে সমর্থিত নয়।