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:
- Ayarlara erişmek için Google > Android Performance Tuner'ı seçin.
- Enstrüman Ayarları sekmesini seçin ve Gelişmiş ayarları kullan'ı tıklayın.
- 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.