Android protobuf nano использование

я пытаюсь генерировать java-файлы снизу файла proto с помощью protobuf nano. Я получил некоторые основные инструкции о том, как действовать в это так нити.

у меня есть этот файл прото, 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;
}

я пытался следовать инструкции отсюда, точнее версия NANO:

  1. загрузить protobuf-2.5.0.zip и компилятор protoc-2.5.0-win32.zip С здесь.
  2. Разархивированные protobuf-2.5.0.zip в папку и там в src папку разархивировал protoc.exe.
  3. изменено на java папка и там выдано:mvn clean package -P nano. Эта команда работала нормально и в target папка у меня protobuf-java-2.5.0.jar

отсюда я не уверен, как продолжить, так как в первичной документации у меня есть такое заявление:

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

я не уверен, что это значит, как связать? Есть ли какой-то параметр для protoc.exe это указывает файл jar использовать?

я попытался выполнить эту команду:protoc --javanano_out=enum_style=java --java_out=generated personal.proto

но я получаю эту ошибку: --javanano_out: protoc-gen-javanano: The system cannot find the file specified.

вопрос: что я упускаю/делаю не так выше? Я пытаюсь создать java-файлы сверху proto-файла.

1 ответов


Я думаю, что это protoc не компилируется с javanano поддержка.

предварительно скомпилированная версия windows 2.5.0 не включает поддержку nano, взгляните на исходный код, в "src\google\protobuf\compiler" путь, включает в себя генератор java, но не генератор javanano. Последний исходный код в репозиториях google включает javanano.

можно скачать последний исходный код и попробуйте скомпилировать его с помощью MinGW и msys или CygWin, взгляните на этот пост как построить буферы протокола google в Windows для mingw?

(подробности процесса строительства я опубликую позже)

обновление:

финал командной строки после protoc.exe

для одного прото файл

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

для нескольких файлов proto

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

редактировать Nano генератор заменяет enum члены с public static final int поля. Это проблема, если класс имеет необязательный элемент перечисления, потому что этот элемент будет скомпилирован в примитив int value и будет принимать значение по умолчанию ноль, который будет первым элементом из перечисления. Чтобы отличить случаи, когда значение перечисления не было установлено, можно воспользоваться