Berikut adalah contoh cepat untuk menunjukkan cara menyertakan buffering protokol dalam project Anda.
Berikut adalah definisi buffering protokol sederhana, geo.proto
:
syntax = "proto2";
message Location {
optional string name = 1;
optional double latitude = 2;
optional double longitude = 3;
}
Dan program Java utama kami, Hello.java
:
class Hello {
public static void main(String[] args) {
Geo.Location.Builder locationBuilder = Geo.Location.newBuilder();
locationBuilder.setName("CN Tower");
locationBuilder.setLatitude(43.6412172);
locationBuilder.setLongitude(-79.3884058);
Geo.Location location = locationBuilder.build();
System.out.println(location.toString());
}
}
Pertama, sedikit penyiapan "project":
export J2OBJC_HOME=~/j2objc # Change to where the j2objc distribution was unzipped.
ls $J2OBJC_HOME/j2objc # Fix above definition until this command works.
mkdir java objc classes # Output directories
Selanjutnya, gunakan j2objc_protoc
untuk membuat buffering protokol. Membuat kode Java dengan --java_out
dan
kode Objective-C dengan --j2objc_out
. Nilai yang ditentukan dengan setiap flag adalah direktori output untuk
bahasa target. Kedua bahasa output dapat dibuat dalam perintah yang sama.
$J2OBJC_HOME/j2objc_protoc --java_out=java --j2objc_out=objc geo.proto
ls java Geo.java
ls objc Geo.h Geo.m
File proto Java yang dihasilkan harus dikompilasi sehingga referensi ke file tersebut dalam Hello
dapat diselesaikan.
Hal ini dilakukan menggunakan javac
agar tidak diterjemahkan ke Objective C pada langkah berikut.
javac -source 1.8 -target 1.8 -bootclasspath $J2OBJC_HOME/lib/jre_emul.jar -cp $J2OBJC_HOME/lib/protobuf_runtime.jar -d classes java/*.java
ls classes/ Geo$1.class Geo$Location$Builder.class Geo$LocationOrBuilder.class Geo$Location$1.class Geo$Location.class Geo.class
Terjemahkan sumber Java seperti biasa, dengan menambahkan proto java yang dikompilasi ke classpath.
$J2OBJC_HOME/j2objc -cp classes:$J2OBJC_HOME/lib/protobuf_runtime.jar -d objc Hello.java
ls objc Geo.h Geo.m Hello.h Hello.m
Sekarang kita memiliki semua sumber Objective-C untuk dikompilasi dan ditautkan. Anda harus menautkan library libprotobuf_runtime.a untuk menyertakan runtime protobuf.
$J2OBJC_HOME/j2objcc -lprotobuf_runtime -o hello objc/*.m
./hello Hello name: "CN Tower" latitude: 43.6412 longitude: -79.3884