Para registrar um publisher baseado em Java no Registro de publishers configuráveis,
é necessário fornecer um protobuf serializado FileDescriptorSet que contenha a
definição da mensagem protobuf publicada. Para mais informações, consulte
Mensagens autodescritivas. No entanto, no dispositivo, apenas a versão "lite" da
biblioteca protobuf Java está disponível, que não tem os recursos de reflexão protobuf
necessários.
Para resolver isso, use a ferramenta geradora de descritores protobuf Java descrita nesta página para gerar os metadados necessários no tempo de build. A ferramenta é um binário que pode ser criado e executado manualmente ou usado automaticamente como parte do build do Android.
Essa ferramenta gera uma classe Java mínima que contém o FileDescriptorSet serializado representando um arquivo protobuf (com uma extensão .proto) e suas dependências. Recomendamos integrar ao build usando um genrule
em Android.bp. O exemplo a seguir mostra como gerar um arquivo Example.java
que contém um FileDescriptorSet serializado de um arquivo Example.proto:
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"],
}
Você pode incluir o java_library resultante no app e usá-lo em conjunto com a biblioteca de registro de editores configurável do SDK de telemetria para registrar seu editor.
Também é possível criar e executar a ferramenta manualmente:
mm sdv_telemetry_sdk_descriptor_generator_java # Build
sdv_telemetry_sdk_descriptor_generator_java --help # Run