إعداد المكتبة والتحقق من العملية

توضّح هذه الصفحة طريقة إعداد المكتبة في رمز اللعبة والتأكّد من أنّ يتم تحميل البيانات إلى 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. وعند تحميل بيانات القياس عن بُعد إلى واجهات برمجة التطبيقات في Google Play Console لاحقًا، ستجد هذه العبارات في السجلّ للتحقّق من أنّ المكوّن الإضافي يعمل. بشكل صحيح.

الإعداد المتأخر (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 دقائق) بحيث لا يتم تقديم عدد كبير جدًا من الطلبات إلى واجهات برمجة التطبيقات، وهو أمر مهم للمستخدمين الذين لا يملكون خطة بيانات للجوَّال تتضمن بيانات غير محدودة. حجم كبير هذا الفاصل الزمني أيضًا يتجنب الإفراط في استخدام بطارية الجهاز.

للتحقق من ضبط الفاصل الزمني على 30 ثانية، يمكنك إجراء ما يلي:

  1. حدد Google > أداة Android Performance Tuner للوصول إلى الإعدادات
  2. حدد علامة التبويب إعدادات الأدوات وانقر على استخدام الإعدادات المتقدمة الإعدادات.
  3. تحقق من أن حقل الفترات (بالدقائق) يحتوي على 0.5.

علامة تبويب إعدادات قياس حالة التطبيق في المكوّن الإضافي

التأكّد من العملية الصحيحة

في حال استخدام IL2CPP أو إزالة الرموز، يمكنك مراجعة إدارة إزالة الرموز

أنشِئ لعبتك المفضَّلة على Android. أثناء إطلاق لعبتك على أحد الأجهزة، افتح على جهاز الكمبيوتر وتشغيل adb logcat:

adb logcat

في نتائج adb logcat، ابحث عن "TuningFork" (حيث إن الشوكة الرنانة هي الاسم الداخلي للمكتبة):

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

إذا ارتكبت خطأً أثناء إعداد المكون الإضافي، مثل نسيان تعيين مفتاح واجهة برمجة التطبيقات، سيظهر لك خطأ في سجلات الإعداد:

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 يتضمّن معلومات حول الرموز التي يجب الاحتفاظ بها إذا كنت إلى بعض وظائف النموذج الأوّلي الذي يستخدم الانعكاس ولديك رمز تمكين إزالة البيانات، أضف هذه المعلومات إلى ملف 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.