Berikut adalah contoh cepat untuk menunjukkan cara menyertakan buffering protokol dalam proyek 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 "proyek" penyiapan:
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. Buat kode Java dengan --java_out
dan
Kode Objective-C dengan --j2objc_out
. Nilai yang ditentukan dengan setiap penanda
adalah direktori {i>output<i} untuk
bahasa target. Kedua bahasa output dapat dihasilkan 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 agar referensi ke file tersebut di Hello
diselesaikan.
Hal ini dilakukan menggunakan javac
sehingga tidak diterjemahkan ke Tujuan C pada langkah berikutnya.
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 telah 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 ke 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