Bibliothek initialisieren und Vorgang überprüfen

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:

  1. Wählen Sie Google > Android Performance Tuner, um auf die Einstellungen zuzugreifen.
  2. Wählen Sie den Tab Instrumentierungseinstellungen aus und klicken Sie auf Erweiterte Einstellungen.
  3. 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.