Java ベースのパブリッシャーを Configurable Publisher Registry に登録するには、公開された protobuf メッセージの定義を含むシリアル化された protobuf FileDescriptorSet を提供する必要があります。詳しくは、自己記述型メッセージをご覧ください。ただし、デバイス上では、Java protobuf ライブラリの「lite」バージョンのみが利用可能であり、必要な protobuf リフレクション機能がありません。
この問題を解決するには、このページで説明する Java protobuf 記述子ジェネレータ ツールを使用して、ビルド時に必要なメタデータを生成します。このツールは、手動でビルドして実行できるバイナリです。また、Android ビルドの一部として自動的に使用することもできます。
このツールは、protobuf ファイル(.proto 拡張子付き)とその依存関係を表すシリアル化された FileDescriptorSet を含む最小限の Java クラスを生成します。Android.bp の genrule を使用してビルドに統合することをおすすめします。次の例は、Example.proto ファイルからシリアル化された FileDescriptorSet を含む Example.java ファイルを生成する方法を示しています。
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"],
}
生成された java_library をアプリに含め、テレメトリー SDK の構成可能なパブリッシャー レジストリ ライブラリと組み合わせて使用して、パブリッシャーを登録できます。
ツールを手動でビルドして実行することもできます。
mm sdv_telemetry_sdk_descriptor_generator_java # Build
sdv_telemetry_sdk_descriptor_generator_java --help # Run