Auf dieser Seite wird beschrieben, wie Sie die Bibliothek in Ihrem Spielcode initialisieren und prüfen können, ob werden Daten in Google Play hochgeladen. Weitere Informationen zu bestimmten Bibliotheksfunktionen finden Sie Referenzdokumentation nachlesen.
Bibliothek initialisieren
Initialisieren Sie in einer Initialisierungsmethode zu Beginn Ihres Spiels die Bibliothek, indem Sie
AndroidPerformanceTuner
wird instanziiert und seine
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);
};
}
}
Dieser Code reicht aus, um den Android Performance Tuner zu starten und dein Spiel zu starten instrumentiert ist. Die Protokollanweisungen geben an, wann der Android Performance Tuner gestartet wurde. und wann Telemetriedaten in die Google Play Console APIs hochgeladen wurden. Später finden Sie diese Anweisungen im Protokoll, um zu überprüfen, ob das Plug-in funktioniert. korrekt sind.
Verspätete Initialisierung (nur Vulkan)
Wenn dein Spiel auf Vulkan ausgerichtet ist und Android Frame Pacing verwendet, den Android Performance Tuner eine späte Initialisierung haben:
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);
};
}
Intervall zwischen Telemetrie-Uploads prüfen
Das Standardintervall zwischen Telemetrie-Uploads in den Plug-in-Einstellungen beträgt 30 Sekunden. Für diese Zeit ist ein kurzes Intervall festgelegt, um die Prüfung des Telemetriedaten richtig hochladen. Wenn du die Produktionsversion deines Spiels veröffentlichst, in einem großen Intervall festlegen (z. B. alle 10 Minuten), damit das Spiel nicht von zu vielen Anfragen an die APIs. Dies ist für Nutzer besonders wichtig, die keinen mobilen Datentarif mit unbegrenzter Datennutzung haben. Eine große Außerdem wird der Akku des Geräts nicht übermäßig beansprucht.
So überprüfen Sie, ob das Intervall auf 30 Sekunden festgelegt ist:
- Wählen Sie Google > Android Performance Tuner, um auf die Einstellungen zuzugreifen.
- Wählen Sie den Tab Instrumentierungseinstellungen aus und klicken Sie auf Erweiterte Einstellungen.
- Prüfen Sie, ob das Feld Intervals (minutes) den Wert 0.5 enthält.
Tab Instrumentierungseinstellungen im Plug-in
Ordnungsgemäße Funktion prüfen
Wenn Sie IL2CPP oder Code-Entfernung verwenden, lesen Sie Code entfernen
Entwickeln Sie Ihr Spiel für Android. Während Ihr Spiel auf einem Gerät gestartet wird, öffnen Sie ein
Terminal auf Ihrem Computer und starten Sie adb logcat
:
adb logcat
Suchen Sie in der Ausgabe von adb logcat
nach "TuningFork" (Die Stimmgabel ist die
interner Name der Bibliothek):
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
Wenn Ihnen bei der Einrichtung des Plug-ins ein Fehler unterlaufen ist, z. B. dass Sie vergessen haben, das API-Schlüssel verwenden, wird in den Initialisierungsprotokollen ein Fehler angezeigt:
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
Prüfen Sie, ob der Android Performance Tuner Telemetriedaten hochlädt. Wenn Sie TuningFork
initialized
in den Logs sehen, warten Sie etwas länger und suchen Sie nach Logs, die darauf hinweisen,
Telemetriedaten werden hochgeladen.
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 {}
Sie können auch in den Protokollen nach „Verbindung zu:“ suchen. Dieser Nachricht wird gefolgt ein paar Zeilen später durch den Antwortcode.
Wenn keine Telemetrie-Uploadprotokolle angezeigt werden, prüfen Sie, ob Sie den Parameter zwischen den einzelnen Uploads in den Einstellungen des Android Performance Tuner z. B. 30 Sekunden.
Entfernen von Code verwalten
Google.Protobuf.dll
verwendet Reflexion. Beim Entfernen von Code werden einige der
erforderlicher Code wird möglicherweise entfernt. Um eine solche Entfernung zu vermeiden, enthält das Plug-in ein
link.xml
-Datei mit Informationen dazu, welche Symbole beibehalten werden sollen. Wenn Sie
benötigen einige Funktionalität von protobuf, die Reflexion verwendet, und Sie haben Code
Entfernen aktiviert, fügen Sie diese Informationen in die Datei link.xml
ein, um den
.
Weitere Informationen verwaltetes Codeentfernung in der Unity-Dokumentation.
Wenn Sie alle Symbole in protobuf beibehalten müssen, fügen Sie eine link.xml
-Datei zu Ihrem
, das Folgendes enthält:
<linker>
<assembly fullname="Google.Protobuf" preserve="all"/>
</linker>
Kompilierung im Voraus
Für das IL2CPP-Back-End und die Unity-Versionen 2017 ist eine Kompilierung im Voraus erforderlich und 2018 (jedoch nicht für neuere Versionen von Unity).
Der AOT-Compiler generiert möglicherweise keinen Code für generische Methoden. Sie müssen die den Compiler, um den für protobuf erforderlichen Code zu generieren, indem der folgende Methode verwenden:
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.
}
Weitere Informationen Scripting-Einschränkungen in der Unity-Dokumentation.