Projenize protokol arabelleklerini nasıl ekleyeceğinizi gösteren kısa bir örneği aşağıda bulabilirsiniz.
geo.proto:
syntax = "proto2";
message Location {
optional string name = 1;
optional double latitude = 2;
optional double longitude = 3;
}
Ana Java programımız Hello.java ise:
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());
}
}
İlk olarak, küçük bir "proje", ayar:
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
Sonra, protokol arabelleklerini oluşturmak için j2objc_protoc komutunu kullanın. --java_out ve ile Java kodu oluşturun
--j2objc_out içeren Objective-C kodu. Her işaretle belirtilen değer, öğenin çıkış dizinidir.
hedef dil. Her iki çıkış dili de aynı komutla oluşturulabilir.
$J2OBJC_HOME/j2objc_protoc --java_out=java --j2objc_out=objc geo.protols java Geo.javals objc Geo.h Geo.m
Oluşturulan Java proto dosyalarının derlenmesi gerekir. Böylece Hello içinde bu dosyalara yapılan referanslar çözümlenir.
Bu işlem javac kullanılarak yapıldığından, sonraki adımda hedef C'ye çevrilmez.
javac -source 1.8 -target 1.8 -bootclasspath $J2OBJC_HOME/lib/jre_emul.jar -cp $J2OBJC_HOME/lib/protobuf_runtime.jar -d classes java/*.javals classes/ Geo$1.class Geo$Location$Builder.class Geo$LocationOrBuilder.class Geo$Location$1.class Geo$Location.class Geo.class
Derlenen Java protolarını sınıf yoluna ekleyerek Java kaynaklarını her zamanki gibi çevirin.
$J2OBJC_HOME/j2objc -cp classes:$J2OBJC_HOME/lib/protobuf_runtime.jar -d objc Hello.javals objc Geo.h Geo.m Hello.h Hello.m
Artık derleyip bağlayacağımız tüm Objective-C kaynaklarımız mevcut. Bağlantılarınızı libprotobuf_runtime.a kitaplığına dosya ekleyin.
$J2OBJC_HOME/j2objcc -lprotobuf_runtime -o hello objc/*.m./hello Hello name: "CN Tower" latitude: 43.6412 longitude: -79.3884