Để đăng ký nhà xuất bản dựa trên Java vào Sổ đăng ký nhà xuất bản có thể định cấu hình,
bạn phải cung cấp một protobuf được tuần tự hoá FileDescriptorSet có chứa
định nghĩa về thông báo protobuf đã xuất bản. Để biết thêm thông tin, hãy xem
bài viết Thông báo tự mô tả. Tuy nhiên, trên thiết bị, chỉ có phiên bản "lite" của thư viện protobuf Java, thiếu các tính năng phản chiếu protobuf cần thiết.
Để giải quyết vấn đề này, bạn có thể sử dụng công cụ tạo trình mô tả protobuf Java được mô tả trên trang này để tạo siêu dữ liệu cần thiết tại thời điểm xây dựng. Công cụ này là một tệp nhị phân mà bạn có thể tạo và chạy theo cách thủ công hoặc sử dụng tự động trong quá trình xây dựng Android.
Công cụ này tạo một lớp Java tối thiểu chứa FileDescriptorSet được tuần tự hoá đại diện cho một tệp protobuf (có đuôi .proto) và các phần phụ thuộc của tệp đó. Bạn nên tích hợp công cụ này vào bản dựng bằng cách sử dụng genrule trong Android.bp. Ví dụ sau đây cho biết cách tạo tệp Example.java chứa FileDescriptorSet được tuần tự hoá từ tệp 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"],
}
Bạn có thể đưa java_library kết quả vào ứng dụng và sử dụng cùng với thư viện Sổ đăng ký nhà xuất bản có thể định cấu hình của SDK đo từ xa để đăng ký nhà xuất bản.
Bạn cũng có thể tạo và chạy công cụ này theo cách thủ công:
mm sdv_telemetry_sdk_descriptor_generator_java # Build
sdv_telemetry_sdk_descriptor_generator_java --help # Run