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.proto
ls java Geo.java
ls 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/*.java
ls 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.java
ls 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