জাভা প্রোটোবাফ ডেসক্রিপ্টর জেনারেটর টুল

কনফিগারযোগ্য পাবলিশার রেজিস্ট্রি -তে একটি জাভা-ভিত্তিক পাবলিশার নিবন্ধন করতে, আপনাকে অবশ্যই একটি সিরিয়ালাইজড প্রোটোবাফ FileDescriptorSet প্রদান করতে হবে, যাতে প্রকাশিত প্রোটোবাফ মেসেজের সংজ্ঞা থাকে। আরও তথ্যের জন্য, সেলফ-ডেসক্রাইবিং মেসেজেস দেখুন। তবে, ডিভাইসে শুধুমাত্র জাভা প্রোটোবাফ লাইব্রেরির "লাইট" সংস্করণটি উপলব্ধ, যেটিতে প্রয়োজনীয় প্রোটোবাফ রিফ্লেকশন সক্ষমতার অভাব রয়েছে।

এর সমাধানে, আপনি এই পৃষ্ঠায় বর্ণিত জাভা প্রোটোবাফ ডেসক্রিপ্টর জেনারেটর টুলটি ব্যবহার করে বিল্ড টাইমে প্রয়োজনীয় মেটাডেটা তৈরি করতে পারেন। টুলটি একটি বাইনারি, যা আপনি ম্যানুয়ালি বিল্ড ও রান করতে পারেন, অথবা আপনার অ্যান্ড্রয়েড বিল্ডের অংশ হিসেবে স্বয়ংক্রিয়ভাবে ব্যবহার করতে পারেন।

এই টুলটি একটি প্রোটোবাফ ফাইল (যার এক্সটেনশন .proto ) এবং এর ডিপেন্ডেন্সিগুলোর প্রতিনিধিত্বকারী সিরিয়ালাইজড FileDescriptorSet ধারণকারী একটি ন্যূনতম জাভা ক্লাস তৈরি করে। আমরা 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 আপনার অ্যাপে অন্তর্ভুক্ত করতে পারেন এবং আপনার পাবলিশার রেজিস্টার করার জন্য এটিকে Telemetry SDK-এর Configurable Publisher Registry লাইব্রেরির সাথে একত্রে ব্যবহার করতে পারেন।

আপনি টুলটি ম্যানুয়ালিও তৈরি এবং চালাতে পারেন:

mm sdv_telemetry_sdk_descriptor_generator_java     # Build
sdv_telemetry_sdk_descriptor_generator_java --help # Run