כדי לרשום מוציא לאור מבוסס 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