Protokol Arabelleklerini Kullanma

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