Java protobuf tanımlayıcı oluşturma aracı

Java tabanlı bir yayıncıyı Yapılandırılabilir Yayıncı Kayıt Otoritesi'na kaydetmek için yayınlanan protobuf mesajının tanımını içeren serileştirilmiş bir protobuf FileDescriptorSet sağlamanız gerekir. Daha fazla bilgi için Kendini Açıklayan Mesajlar bölümüne bakın. Ancak cihaz üzerinde yalnızca Java protobuf kitaplığının "lite" sürümü kullanılabilir. Bu sürümde gerekli protobuf yansıtma özellikleri yoktur.

Bu sorunu çözmek için bu sayfada açıklanan Java protobuf tanımlayıcı oluşturucu aracını kullanarak derleme sırasında gerekli meta verileri oluşturabilirsiniz. Bu araç, manuel olarak oluşturup çalıştırabileceğiniz veya Android derlemenizin bir parçası olarak otomatik olarak kullanabileceğiniz bir ikilidir.

Bu araç, bir protobuf dosyasını (.proto uzantılı) ve bağımlılıklarını temsil eden, serileştirilmiş FileDescriptorSet içeren minimum bir Java sınıfı oluşturur. genrule kullanarak Android.bp içinde derlemenize entegre etmenizi öneririz. Aşağıdaki örnekte, Example.proto dosyasından seri hale getirilmiş bir FileDescriptorSet içeren Example.java dosyasının nasıl oluşturulacağı gösterilmektedir:

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"],
}

Elde edilen java_library dosyasını uygulamanıza ekleyebilir ve yayıncınızı kaydetmek için Telemetry SDK'nın Configurable Publisher Registry kitaplığı ile birlikte kullanabilirsiniz.

Aracı manuel olarak da oluşturup çalıştırabilirsiniz:

mm sdv_telemetry_sdk_descriptor_generator_java     # Build
sdv_telemetry_sdk_descriptor_generator_java --help # Run