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

Bu sayfada, oyun kodunuzdaki kitaplığı nasıl başlattığınız ve Google Play'e veri yüklediğini nasıl doğruladığınız açıklanmaktadır. Belirli kitaplık işlevleri hakkında daha fazla bilgi edinmek için referans belgelerine bakın.

Kitaplığı başlatın

Oyununuzun başlangıcındaki bir başlatma yönteminde, AndroidPerformanceTuner yöntemini uygulayıp Start() yöntemini çağırarak kitaplığı 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 donatmak 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 belirtir. Daha sonra, eklentinin doğru bir şekilde ç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'i 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ındaki telemetri yüklemeleri arasındaki varsayılan aralık 30 saniyedir. Bu süre, telemetrinin düzgün şekilde yüklenmesinin doğrulanmasını kolaylaştırmak için kısa bir aralığa ayarlanır. Oyununuzu üretim kanalına yayınladığınızda, oyunun API'lere çok fazla istekte bulunmaması için bunu geniş bir aralığa (örneğin, 10 dakikada bir) ayarlayın. Bu, özellikle sınırsız veri içeren bir mobil veri planına sahip 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. Araç 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 Araç ayarları sekmesi

Düzgün çalıştığını doğrulayın

IL2PPP veya kod çıkarmayı kullanıyorsanız Kod ayırmayı yönetme başlıklı makaleyi inceleyin.

Oyununuzu Android'e göre oluşturun. Oyununuz bir cihazda başlatılırken bilgisayarınızda bir terminal açın ve adb logcat uygulamasını başlatın:

adb logcat

adb logcat çıktısında "TuningFork" ifadesini 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 ayarlarken API anahtarını ayarlamayı unutmak gibi bir hata yaptıysanı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 görürseniz biraz daha bekleyin ve telemetrinin yüklenmekte olduğunu 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 {}

Ayrıca günlüklerde "Connecting to:" araması da yapabilirsiniz. Bu mesajın ardından, birkaç satır sonra yanıt kodu gelir.

Telemetri yükleme günlüklerini görmüyorsanız Android Performance Tuner'daki her yükleme arasındaki aralığı 30 saniye gibi küçük bir değere düzgün şekilde ayarladığınızdan emin olun.

Kod kaldırmayı yönet

Google.Protobuf.dll yansıma kullanır. Kod çıkarma sırasında gerekli kodların bazıları kaldırılabilir. Eklenti, bu kaldırma işlemini önlemek için hangi simgelerin korunması gerektiği hakkında bilgileri içeren bir link.xml dosyası içerir. Yansıma kullanan bir protobuf işlevlerine ihtiyacınız varsa ve kod çıkarmayı etkinleştirdiyseniz sembolleri korumak için bu bilgileri link.xml dosyasına ekleyin.

Unity belgelerinde yönetilen kodların kaldırılması hakkında daha fazla bilgi edinebilirsiniz.

Protobuf'taki tüm simgeleri korumanız gerekiyorsa projenize aşağıdakileri içeren bir link.xml dosyası ekleyin:

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

Zamanında derleme (AOT)

IL2CPP arka ucu ve Unity sürümleri 2017 ile 2018 için (Unity'nin sonraki sürümleri için değil) zaman öncesinde derleme gereklidir.

AOT derleyicisi, genel yöntemler için kod oluşturamaz. Aşağıdaki yöntemi ekleyerek derleyiciyi protobuf için gereken doğru 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.
}

Komut dosyası kısıtlamaları hakkında daha fazla bilgiyi Unity belgelerinde bulabilirsiniz.