Android protobuf nano uso

Estoy intentando generar archivos de java de debajo del archivo del proto usando protobuf nano. Tengo algunas instrucciones básicas sobre cómo proceder en este subproceso .

Tengo este archivo proto, personal.proto :

 package tutorial; option java_package = "com.example.tutorial"; option java_outer_classname = "AddressBookProtos"; message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; } message AddressBook { repeated Person person = 1; } 

Traté de seguir las instrucciones de aquí , más específicamente la versión NANO :

  1. Descargue protobuf-2.5.0.zip y el compilador protoc-2.5.0-win32.zip desde aquí .
  2. Unzipped protobuf-2.5.0.zip a una carpeta y en allí en la subcarpeta src he descomprimido protoc.exe .
  3. Cambiado a la carpeta de java y en allí emitió: mvn clean package -P nano . Ese comando funcionó muy bien y en target carpeta de target tengo protobuf-java-2.5.0.jar

A partir de aquí no estoy seguro de cómo proceder ya que en la documentación inicial tengo esta declaración:

 - Link with the generated jar file <protobuf-root>java/target/protobuf-java-2.3.0-nano.jar. 

No estoy seguro de lo que significa, cómo vincular? ¿Hay algún parámetro para protoc.exe que especifica el archivo jar para usar?

He intentado emitir este comando: protoc --javanano_out=enum_style=java --java_out=generated personal.proto

Pero consigo este error: --javanano_out: protoc-gen-javanano: The system cannot find the file specified .

La pregunta sería: ¿qué estoy perdiendo / haciendo mal arriba? Estoy intentando generar archivos de java de encima del archivo del proto.

One Solution collect form web for “Android protobuf nano uso”

Creo que este protoc no está compilado con el apoyo javanano .

La versión pre-compilada de las ventanas 2.5.0 no incluye soporte nano, eche un vistazo al código fuente, en la ruta " src\google\protobuf\compiler ", incluye el generador java pero no el generador javanano. El último código fuente en google repositories incluye javanano.

Puede descargar el código fuente más reciente y tratar de compilarlo con MinGW y msys o CygWin , eche un vistazo a este post Cómo construir buffers de protocolo de google en Windows para mingw?

(Voy a publicar los detalles para el proceso de construcción más tarde)

ACTUALIZAR:

La línea de comandos final después de construir protoc.exe

Para un archivo proto

 protoc --javanano_out=store_unknown_fields=true:target/generated-sources personal.proto, target/generated-sources 

Para múltiples archivos proto

 protoc --javanano_out=store_unknown_fields=true:target/generated-sources --proto_path=inputpath input/*.proto 

El generador EDIT Nano reemplaza a los miembros del enum con public static final int campos public static final int . Esto es un problema si una clase tiene un miembro enum opcional porque ese miembro se compilará a un valor int primitivo y tomará el valor predeterminado de cero, que será el primer elemento de enum. Para distinguir los casos en que no se estableció un valor de enum, se puede aprovechar el parámetro optional_field_style que generará java.lang.Integer lugar de un int primitivo. Cuando se analiza el proto, el llamante puede comprobar si el valor es nulo antes de usar el valor. Nulo significa que el valor no se ha establecido.

El script de llamada anterior puede convertirse en:

 protoc --javanano_out=store_unknown_fields=true,optional_field_style=reftypes:target/generated-sources --proto_path=input input/*.proto 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.