Untuk mendaftarkan penayang berbasis Java ke Configurable Publisher Registry, Anda harus memberikan protobuf FileDescriptorSet yang diserialkan yang berisi definisi pesan protobuf yang dipublikasikan. Untuk mengetahui informasi selengkapnya, lihat
Pesan yang Mendeskripsikan Diri Sendiri. Namun, di perangkat, hanya library protobuf Java versi "lite" yang tersedia, yang tidak memiliki kemampuan refleksi protobuf yang diperlukan.
Untuk mengatasinya, Anda dapat menggunakan alat generator deskriptor protobuf Java yang dijelaskan di halaman ini untuk menghasilkan metadata yang diperlukan pada waktu build. Alat ini adalah program biner yang dapat Anda buat dan jalankan secara manual, atau gunakan secara otomatis sebagai bagian dari build Android Anda.
Alat ini menghasilkan class Java minimal yang berisi FileDescriptorSet berserial yang merepresentasikan file protobuf (dengan ekstensi .proto) dan dependensinya. Sebaiknya integrasikan ke dalam build Anda menggunakan genrule
di Android.bp. Contoh berikut menunjukkan cara membuat file Example.java
yang berisi FileDescriptorSet berseri dari file 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"],
}
Anda dapat menyertakan java_library yang dihasilkan dalam aplikasi dan menggunakannya bersama dengan library Publisher Registry yang Dapat Dikonfigurasi dari Telemetry SDK untuk mendaftarkan penayang Anda.
Anda juga dapat membuat dan menjalankan alat ini secara manual:
mm sdv_telemetry_sdk_descriptor_generator_java # Build
sdv_telemetry_sdk_descriptor_generator_java --help # Run