Создание файлов Java Protobuf с помощью Wire Square

Я пытаюсь сгенерировать файлы .java из файлов .proto, которые я сохранил в своей папке SRC в студии Android. Я поставил ниже код в моем файле gradle, поскольку он, похоже, не работает

apply plugin: 'com.squareup.wire' buildscript { repositories { mavenCentral() } dependencies { classpath 'com.squareup.wire:wire-maven-plugin:2.1.1' } } 

Здесь есть плагин для плагинов: https://github.com/square/wire-gradle-plugin . Однако, похоже, он еще не готов к прайм-тайму. У меня были проблемы с работой.

Но вот способ сделать это, чтобы автоматизировать создание Java-кода из файлов * .proto с использованием прямого компилятора и простой задачи градации. Ниже приведен фрагмент с изменениями в вашем build.gradle. Измените protoPath и wireGeneratedPath на основе вашего исходного макета.

 def protoPath = 'src/proto' def wireGeneratedPath = 'build/generated/source/wire' buildscript { repositories { mavenCentral() } dependencies { classpath 'com.squareup.wire:wire-compiler:2.2.0' } } android { sourceSets { main { java { include wireGeneratedPath } } } } dependencies { compile 'com.squareup.wire:wire-runtime:2.2.0' // Leave this out if you're not doing integration testing... androidTestCompile 'com.squareup.wire:wire-runtime:2.2.0' } // This handles the protocol buffer generation with wire task generateWireClasses { description = 'Generate Java classes from protocol buffer (.proto) schema files for use with squareup\'s wire library' delete(wireGeneratedPath) fileTree(dir: protoPath, include: '**/*.proto').each { File file -> doLast { javaexec { main = 'com.squareup.wire.WireCompiler' classpath = buildscript.configurations.classpath args = ["--proto_path=${protoPath}", "--java_out=${wireGeneratedPath}", "${file}"] } } } } preBuild.dependsOn generateWireClasses 

Поэтому вместо использования плагина gradle я просто закончил использование квадратного компилятора. Вот шаги.

  1. Загрузить компилятор-jar-with-dependencies из http://search.maven.org/#artifactdetails%7Ccom.squareup.wire%7Cwire-compiler%7C2.1.1%7Cjar
  2. Поместите файл jar в корневую директорию приложения для Android
  3. Перейдите в каталог и вставьте эту команду

     java -jar wire-compiler-2.1.1-jar-with-dependencies.jar --proto_path=directory-of-protofile --java_out=app/src/main/java/ name-of-file.proto 

Должно сработать. Обязательно замените directory-of-protofile name-of-file и name-of-file что у вас есть.