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