Java-Tool zum Generieren von Protobuf-Deskriptoren

Wenn Sie einen Java-basierten Publisher in der konfigurierbaren Publisher-Registry registrieren möchten, müssen Sie ein serialisiertes Protobuf FileDescriptorSet mit der Definition der veröffentlichten Protobuf-Nachricht angeben. Weitere Informationen finden Sie unter Selbstbeschreibende Nachrichten. Auf dem Gerät ist jedoch nur die „Lite“-Version der Java- Protobuf-Bibliothek verfügbar, die nicht die erforderlichen Protobuf- Reflektionsfunktionen enthält.

Um dieses Problem zu beheben, können Sie das auf dieser Seite beschriebene Tool zur Generierung von Java-Protobuf-Deskriptoren verwenden, um die erforderlichen Metadaten zur Build-Zeit zu generieren. Das Tool ist eine Binärdatei, die Sie entweder manuell erstellen und ausführen oder automatisch als Teil Ihres Android-Builds verwenden können.

Dieses Tool generiert eine minimale Java-Klasse, die das serialisierte FileDescriptorSet enthält, das eine Protobuf-Datei (mit der Erweiterung .proto) und ihre Abhängigkeiten darstellt. Wir empfehlen, sie mit einer genrule in Android.bp in Ihren Build zu integrieren. Im folgenden Beispiel wird gezeigt, wie Sie aus einer Example.proto-Datei eine Example.java-Datei mit einem serialisierten FileDescriptorSet generieren:

genrule {
    name: "example_descriptors_gen",
    tools: ["sdv_telemetry_sdk_descriptor_generator_java"],
    srcs: ["Example.proto"],
    out: ["Example.java"],
    cmd: "$(location sdv_telemetry_sdk_descriptor_generator_java) " +
        "--proto_file $(location Example.proto) " +
        "--proto_path $$(dirname $(location Example.proto)) " +
        "--message_full_name com.example.ExampleMessage " +
        "--output_file $(out) " +
        "--output_package com.example " +
        "--output_class Example "
}

java_library {
    name: "example_descriptors_lib",
    srcs: [":example_descriptors_gen"],
}

Sie können die resultierende java_library in Ihre App einfügen und sie zusammen mit der Bibliothek der konfigurierbaren Publisher-Registry des Telemetry SDK verwenden, um Ihren Publisher zu registrieren.

Sie können das Tool auch manuell erstellen und ausführen:

mm sdv_telemetry_sdk_descriptor_generator_java     # Build
sdv_telemetry_sdk_descriptor_generator_java --help # Run