برای ثبت یک ناشر مبتنی بر جاوا در رجیستری ناشر قابل پیکربندی ، باید یک FileDescriptorSet سریالی شده protobuf ارائه دهید که شامل تعریف پیام protobuf منتشر شده باشد. برای اطلاعات بیشتر، به پیامهای خودتوصیف مراجعه کنید. با این حال، روی دستگاه، فقط نسخه "lite" کتابخانه protobuf جاوا در دسترس است که فاقد قابلیتهای بازتاب protobuf لازم است.
برای حل این مشکل، میتوانید از ابزار تولیدکننده توصیفگر پروتوباف جاوا که در این صفحه توضیح داده شده است، برای تولید فرادادههای لازم در زمان ساخت استفاده کنید. این ابزار یک فایل باینری است که میتوانید آن را به صورت دستی بسازید و اجرا کنید، یا به صورت خودکار به عنوان بخشی از ساخت اندروید خود از آن استفاده کنید.
این ابزار یک کلاس جاوای مینیمال حاوی FileDescriptorSet سریالی شده تولید میکند که نشاندهنده یک فایل protobuf (با پسوند .proto ) و وابستگیهای آن است. توصیه میکنیم آن را با استفاده از یک genrule در Android.bp در ساخت خود ادغام کنید. مثال زیر نحوه تولید یک فایل Example.java حاوی یک FileDescriptorSet سریالی شده از یک فایل 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"],
}
شما میتوانید java_library حاصل را در برنامه خود بگنجانید و از آن در رابطه با کتابخانه Configurable Publisher Registry از Telemetry SDK برای ثبت ناشر خود استفاده کنید.
همچنین میتوانید ابزار را به صورت دستی بسازید و اجرا کنید:
mm sdv_telemetry_sdk_descriptor_generator_java # Build
sdv_telemetry_sdk_descriptor_generator_java --help # Run