Java protobuf 설명자 생성기 도구

Java 기반 게시자를 구성 가능한 게시자 레지스트리에 등록하려면 게시된 protobuf 메시지의 정의가 포함된 직렬화된 protobuf FileDescriptorSet를 제공해야 합니다. 자세한 내용은 자체 설명 메시지를 참고하세요. 그러나 기기 내에서는 필요한 protobuf 리플렉션 기능이 없는 Java protobuf 라이브러리의 'lite' 버전만 사용할 수 있습니다.

이 문제를 해결하려면 이 페이지에 설명된 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를 앱에 포함하고 Telemetry SDK의 구성 가능한 게시자 레지스트리 라이브러리와 함께 사용하여 게시자를 등록할 수 있습니다.

도구를 수동으로 빌드하고 실행할 수도 있습니다.

mm sdv_telemetry_sdk_descriptor_generator_java     # Build
sdv_telemetry_sdk_descriptor_generator_java --help # Run