Java protobuf 記述子生成ツール

Java ベースのパブリッシャーを Configurable Publisher Registry に登録するには、公開された protobuf メッセージの定義を含むシリアル化された protobuf FileDescriptorSet を提供する必要があります。詳しくは、自己記述型メッセージをご覧ください。ただし、デバイス上では、Java protobuf ライブラリの「lite」バージョンのみが利用可能であり、必要な protobuf リフレクション機能がありません。

この問題を解決するには、このページで説明する Java protobuf 記述子ジェネレータ ツールを使用して、ビルド時に必要なメタデータを生成します。このツールは、手動でビルドして実行できるバイナリです。また、Android ビルドの一部として自動的に使用することもできます。

このツールは、protobuf ファイル(.proto 拡張子付き)とその依存関係を表すシリアル化された FileDescriptorSet を含む最小限の Java クラスを生成します。Android.bpgenrule を使用してビルドに統合することをおすすめします。次の例は、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