Kitaplığı başlatma ve doğrulamayı doğrulama

Bu sayfada, kitaplığı oyun kodunuzda başlatma ve Google Play'e veri yüklediğini doğrulama hakkında bilgi verilmektedir. Belirli kitaplık işlevleri hakkında daha fazla bilgi için referans belgelerine bakın.

Kitaplığı başlatma

Oyununuzun başlangıcındaki bir başlatma yönteminde, kitaplığı AndroidPerformanceTuner oluşturup Start() yöntemini çağırarak başlatın:

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);
        };
    }
}

Bu kod, Android Performance Tuner'ı başlatmak ve oyununuzu izlemek için yeterlidir. Günlük ifadeleri, Android Performance Tuner'ın ne zaman başladığını ve telemetrinin Google Play Console API'lerine ne zaman yüklendiğini gösterir. Daha sonra, eklentinin doğru çalıştığını doğrulamak için bu ifadeleri günlükte bulabilirsiniz.

Geç başlatma (yalnızca Vulkan)

Oyununuz Vulkan'ı hedefliyorsa ve Android Frame Pacing kullanıyorsa Android Performance Tuner'ın geç başlatılması gerekir:

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);
    };
}

Telemetri yüklemeleri arasındaki aralığı doğrulama

Eklenti ayarlarında telemetri yüklemeleri arasındaki varsayılan aralık 30 saniyedir. Bu süre, telemetrinin doğru şekilde yüklendiğini doğrulamanın kolay olması için kısa bir aralık olarak ayarlanır. Oyununuzu üretimde yayınladığınızda, oyunun API'lere çok fazla istekte bulunmaması için bu değeri büyük bir aralık olarak ayarlayın (örneğin, her 10 dakikada bir). Bu, özellikle sınırsız veri içeren bir mobil veri planı olmayan kullanıcılar için önemlidir. Uzun bir aralık, cihaz pilinin aşırı kullanılmasını da önler.

Aralığın 30 saniyeye ayarlandığını doğrulamak için aşağıdakileri yapın:

  1. Ayarlara erişmek için Google > Android Performance Tuner'ı seçin.
  2. Enstrüman Ayarları sekmesini seçin ve Gelişmiş ayarları kullan'ı tıklayın.
  3. Aralıklar (dakika) alanında 0,5 değerinin bulunduğunu doğrulayın.

Eklentideki Instrumentation settings (Enstrümantasyon ayarları) sekmesi

Doğru çalışıp çalışmadığını doğrulama

IL2CPP veya kod temizleme kullanıyorsanız Kod temizlemeyi yönetme başlıklı makaleye bakın.

Oyununuzu Android için geliştirin. Oyununuz bir cihazda başlatılırken bilgisayarınızda bir terminal açın ve adb logcat komutunu çalıştırın:

adb logcat

adb logcat çıktısında "TuningFork"ü arayın (Tuning Fork, kitaplığın dahili adıdır):

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

Eklentiyi kurarken hata yaptıysanız (ör. API anahtarını ayarlamayı unuttuysanız) başlatma günlüklerinde bir hata görürsünüz:

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'ın telemetri yüklediğinden emin olun. Günlüklerde TuningFork initialized simgesini görüyorsanız biraz daha bekleyin ve telemetrinin yüklendiğini belirten günlükleri arayın.

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

Günlüklerde "Şuna bağlanılıyor:" ifadesini de arayabilirsiniz. Bu mesajı, birkaç satır sonra yanıt kodu izler.

Telemetri yükleme günlüklerini görmüyorsanız Android Performance Tuner ayarlarında her yükleme arasındaki aralığı 30 saniye gibi küçük bir değere doğru şekilde ayarladığınızı doğrulayın.

Kod temizleme özelliğini yönetme

Google.Protobuf.dll, yansıtma kullanıyor. Kod temizleme sırasında gerekli kodun bir kısmı kaldırılabilir. Bu kaldırma işlemini önlemek için eklentide, hangi sembollerin korunması gerektiğiyle ilgili bilgileri içeren bir link.xml dosyası bulunur. Yansıtma kullanan protobuf işlevlerine ihtiyacınız varsa ve kod temizleme etkinse simgeleri korumak için bu bilgileri link.xml dosyasına ekleyin.

Yönetilen kod temizleme hakkında daha fazla bilgiyi Unity belgelerinde bulabilirsiniz.

protobuf'taki tüm sembolleri korumanız gerekiyorsa projenize aşağıdaki bilgileri içeren bir link.xml dosyası ekleyin:

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

Önceden derleme (AOT)

IL2CPP arka ucu ve Unity'nin 2017 ve 2018 sürümleri için önceden derleme gereklidir (ancak Unity'nin sonraki sürümleri için gerekli değildir).

AOT derleyicisi, genel yöntemler için kod oluşturmayabilir. Aşağıdaki yöntemi ekleyerek derleyiciyi protobuf için gereken uygun kodu oluşturmaya zorlamanız gerekir:

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 belgelerinde komut dosyası kısıtlamaları hakkında daha fazla bilgi edinebilirsiniz.