כלי ליצירת תיאור של Java protobuf

כדי לרשום מוציא לאור מבוסס Java במאגר המוציאים לאור שניתן להגדרה, צריך לספק protobuf מסוג FileDescriptorSet שעבר סריאליזציה ומכיל את ההגדרה של הודעת ה-protobuf שפורסמה. מידע נוסף זמין במאמר בנושא הודעות עם תיאור עצמי. עם זאת, במכשיר זמינה רק הגרסה 'lite' של ספריית ה-protobuf של Java, שחסרות בה יכולות ההשתקפות הנדרשות של protobuf.

כדי לפתור את הבעיה, אפשר להשתמש בכלי ליצירת תיאור של Java protobuf שמתואר בדף הזה כדי ליצור את המטא-נתונים הנדרשים בזמן הבנייה. הכלי הוא קובץ בינארי שאפשר ליצור ולהפעיל באופן ידני, או להשתמש בו באופן אוטומטי כחלק מהגרסה של Android.

הכלי הזה יוצר מחלקת Java מינימלית שמכילה את ה-FileDescriptorSet הסדרתי שמייצג קובץ protobuf (עם סיומת .proto) ואת התלות שלו. מומלץ לשלב אותו ב-build באמצעות genrule ב-Android.bp. בדוגמה הבאה אפשר לראות איך ליצור קובץ Example.java שמכיל FileDescriptorSet מסוג serialized מקובץ 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