کتابخانه را راه اندازی کنید و عملیات را تأیید کنید

این صفحه نحوه تنظیم اولیه کتابخانه در کد بازی شما و تأیید اینکه در حال آپلود داده ها در Google Play است را توضیح می دهد. برای یافتن اطلاعات بیشتر در مورد عملکردهای خاص کتابخانه، به مستندات مرجع مراجعه کنید.

کتابخانه را راه اندازی کنید

در یک روش مقداردهی اولیه در شروع بازی، کتابخانه را با نمونه سازی AndroidPerformanceTuner و فراخوانی متد Start() آن مقداردهی اولیه کنید:

using Google.Android.PerformanceTuner;
using UnityEngine;

public class SomeBehaviour : MonoBehaviour
{
    AndroidPerformanceTuner<FidelityParams, Annotation> tuner =
            new AndroidPerformanceTuner<FidelityParams, Annotation>();

    void Start()
    {
        ErrorCode startErrorCode = tuner.Start();
        Debug.Log("Android Performance Tuner started with code: " + startErrorCode);

        tuner.onReceiveUploadLog += request =>
        {
            Debug.Log("Telemetry uploaded with request name: " + request.name);
        };
    }
}

این کد برای شروع Android Performance Tuner و ابزارسازی بازی شما کافی است. بیانیه‌های گزارش نشان می‌دهند که Android Performance Tuner چه زمانی شروع شده است و چه زمانی تله‌متری در APIهای کنسول Google Play آپلود شده است. بعداً، این عبارات را در گزارش مشاهده خواهید کرد تا تأیید کنید که افزونه به درستی کار می کند.

راه اندازی دیرهنگام (فقط Vulkan)

اگر بازی شما Vulkan را هدف قرار می دهد و از Android Frame Pacing استفاده می کند، Android Performance Tuner باید مقداردهی اولیه دیرهنگام داشته باشد:

IEnumerator Start()
{
    yield return new WaitForEndOfFrame();
    ErrorCode startErrorCode = tuner.Start();
    Debug.Log("Android Performance Tuner started with code: " + startErrorCode);

    tuner.onReceiveUploadLog += request =>
    {
        Debug.Log("Telemetry uploaded with request name: " + request.name);
    };
}

فاصله بین آپلودهای تله متری را بررسی کنید

فاصله پیش فرض بین آپلودهای تله متری در تنظیمات افزونه 30 ثانیه است. این زمان روی یک فاصله زمانی کوتاه تنظیم شده است تا تأیید آپلود صحیح تله متری آسان تر شود. هنگامی که بازی خود را به مرحله تولید عرضه می کنید، آن را روی یک بازه زمانی بزرگ (مثلا هر 10 دقیقه) تنظیم کنید تا بازی درخواست های زیادی به API ها ندهد، که به ویژه برای کاربرانی که برنامه داده تلفن همراه ندارند مهم است. که شامل داده های نامحدود است. فاصله زمانی زیاد نیز از استفاده بیش از حد از باتری دستگاه جلوگیری می کند.

برای اطمینان از اینکه بازه روی 30 ثانیه تنظیم شده است، موارد زیر را انجام دهید:

  1. برای دسترسی به تنظیمات ، Google > Android Performance Tuner را انتخاب کنید.
  2. برگه Instrumentation Settings را انتخاب کنید و روی Use advanced settings کلیک کنید.
  3. بررسی کنید که فیلد فواصل (دقیقه) حاوی 0.5 باشد.

تب تنظیمات ابزار دقیق در افزونه

بررسی عملکرد صحیح

اگر از IL2CPP یا حذف کد استفاده می‌کنید، به مدیریت حذف کد مراجعه کنید.

بازی خود را برای اندروید بسازید. در حالی که بازی شما در دستگاهی اجرا می شود، یک ترمینال را در رایانه خود باز کنید و adb logcat را راه اندازی کنید:

adb logcat

در خروجی adb logcat ، "TuningFork" را جستجو کنید (زیرا Tuning Fork نام داخلی کتابخانه است):

02-03 16:55:45.103 10511 10536 I TuningFork: Got settings from tuningfork/tuningfork_settings.bin
02-03 16:55:45.103 10511 10536 I TuningFork: Using local file cache at /data/user/0/com.Unity3d.BoatAttackDay/cache/tuningfork
02-03 16:55:45.105 10511 10536 I TuningFork: OpenGL version 3.2
02-03 16:55:45.105 10511 10536 I TuningFork: TuningFork.GoogleEndpoint: OK
02-03 16:55:45.106 10511 10611 I TuningFork: Creating directory /data/user/0/com.Unity3d.BoatAttackDay/cache/tuningfork
02-03 16:55:45.106 10511 10536 I TuningFork: TuningFork Settings:

[...]

02-03 16:55:45.116 10511 10536 I Unity   : Tuningfork started with code: Ok
02-03 16:55:45.107 10511 10536 I TuningFork: TuningFork initialized
02-03 16:55:45.107 10511 10536 I UnityTuningfork: Swappy backend: 1
02-03 16:55:45.107 10511 10536 I TuningFork: Creating directory /data/user/0/com.Unity3d.BoatAttackDay/cache/tuningfork/V1
02-03 16:55:45.110 10511 10613 I TuningFork: OpenGL version 3.2
02-03 16:55:45.110 10511 10613 I TuningFork:Web: Connecting to: https://performanceparameters.googleapis.com/v1/applications/com.Unity3d.BoatAttackDay/apks/1:generateTuningParameters

اگر هنگام تنظیم افزونه اشتباهی مرتکب شدید، مانند فراموش کردن تنظیم کلید API، یک خطا در گزارش های اولیه مشاهده خواهید کرد:

02-03 16:49:44.970  8815  8831 I TuningFork: Got settings from tuningfork/tuningfork_settings.bin
02-03 16:49:44.971  8815  8831 I TuningFork: Using local file cache at /data/user/0/com.Unity3d.BoatAttackDay/cache/tuningfork
02-03 16:49:44.972  8815  8831 I TuningFork: OpenGL version 3.2
02-03 16:49:44.972  8815  8831 W TuningFork.GE: The API key in Tuning Fork TFSettings is invalid
02-03 16:49:44.972  8815  8831 E TuningFork: TuningFork.GoogleEndpoint: FAILED
02-03 16:49:44.973  8815  8831 I Unity   : Tuningfork started with code: BadParameter

بررسی کنید که Android Performance Tuner در حال آپلود تله متری است. اگر دیدید که TuningFork initialized ، کمی بیشتر صبر کنید و به دنبال گزارش هایی بگردید که نشان می دهد تله متری در حال آپلود است.

02-03 16:58:00.552 10511 10611 I TuningFork:Web: Connecting to: https://performanceparameters.googleapis.com/v1/applications/com.Unity3d.BoatAttackDay/apks/1:uploadTelemetry
02-03 16:58:00.898 10511 10611 I TuningFork:Web: Response code: 200
02-03 16:58:00.898 10511 10611 I TuningFork:Web: Response message: OK
02-03 16:58:00.899 10511 10611 I TuningFork.GE: UPLOAD request returned 200 {}

همچنین می‌توانید «اتصال به:» را در گزارش‌ها جستجو کنید. این پیغام چند خط بعد با کد پاسخ همراه می شود.

اگر گزارش‌های آپلود تله‌متری را نمی‌بینید، بررسی کنید که به درستی فاصله بین هر بارگذاری را در تنظیمات Android Performance Tuner روی مقدار کوچکی مانند 30 ثانیه تنظیم کرده‌اید.

حذف کد را مدیریت کنید

Google.Protobuf.dll از بازتاب استفاده می کند. در طول حذف کد، ممکن است برخی از کدهای مورد نیاز حذف شوند. برای جلوگیری از این حذف، افزونه حاوی یک فایل link.xml با اطلاعاتی در مورد نمادهایی است که باید حفظ شوند. اگر به برخی از عملکردهای protobuf نیاز دارید که از بازتاب استفاده می کند و حذف کد را فعال کرده اید، این اطلاعات را برای حفظ نمادها به فایل link.xml اضافه کنید.

می توانید اطلاعات بیشتری در مورد حذف کد مدیریت شده در اسناد Unity بخوانید.

اگر نیاز به حفظ تمام نمادها در protobuf دارید، یک فایل link.xml را به پروژه خود اضافه کنید که حاوی موارد زیر است:

<linker>
  <assembly fullname="Google.Protobuf" preserve="all"/>
</linker>

کامپایل پیش از زمان (AOT)

کامپایل زود هنگام برای باطن IL2CPP و نسخه های Unity 2017 و 2018 (اما نه برای نسخه های بعدی Unity) مورد نیاز است.

کامپایلر AOT ممکن است کدی را برای روش های عمومی تولید نکند. شما باید کامپایلر را مجبور کنید تا کد مناسب مورد نیاز برای protobuf را با افزودن روش زیر ایجاد کند:

using Google.Protobuf.Reflection;
using UnityEngine.Scripting;

...

// Don't call this method.
[Preserve]
void ExampleOfForceReflectionInitializationForProtobuf()
{
    FileDescriptor.ForceReflectionInitialization<Scene>();
    FileDescriptor.ForceReflectionInitialization<ShadowType>();
    FileDescriptor.ForceReflectionInitialization<LevelType>();
    ...
    // Add FileDescriptor.ForceReflectionInitialization<T> for each generated enum.
    // You can find the list of enums in DevTuningfork.cs -> enum section
    // or in the list of enums in Google -> Android Performance Tuner.
}

می توانید اطلاعات بیشتری در مورد محدودیت های اسکریپت نویسی در مستندات Unity بخوانید.