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

Bu sayfada, oyun kodunuzdaki kitaplığı nasıl ilk kullanıma hazırladığı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 dokümanlarına bakın.

Kitaplığı başlatma

Oyununuzun başındaki başlatma yönteminde, AndroidPerformanceTuner yöntemini oluşturup 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 enstrümantasyonlu hale getirmek için yeterlidir. Günlük ifadeleri, Android Performance Tuner'ın ne zaman başlatıldığını ve telemetrinin Google Play Console API'lerine ne zaman yüklendiğini gösterir. Daha sonra, eklentinin doğru çalıştığını onaylamak için günlükte bu ifadeleri görürsünüz.

Geç başlatma (yalnızca Vulkan)

Oyununuz Vulkan'ı hedefliyorsa ve Android Frame Pacing'i kullanıyorsa Android Performance Tuner'ın geç başlatması 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 yüklenmesinin doğrulanmasını kolaylaştırmak için kısa bir aralığa ayarlanır. Oyununuzu üretim kanalına yayınlarken, oyunun API'lere çok fazla istek yapmaması 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ık (dakika) alanının 0,5 değerini içerdiğini doğrulayın.

Eklentideki Enstrümantasyon ayarları sekmesi

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

IL2CPP veya kod çıkarmayı kullanıyorsanız Kod çıkarmayı yönetme sayfasına göz atın.

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"u 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 bir hata yaptıysanız (API anahtarını ayarlamayı unutmak gibi) 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 "Bağlanılıyor:" 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 doğru bir şekilde ayarladığınızdan emin olun.

Kod çıkarmayı yönet

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

Unity dokümanlarında yönetilen kod çıkarma 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>

Önceden derleme (AOT)

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

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.