如何让Android Studio使用';java#u out';而不是';javanano#u out';
我正在将一个现有项目迁移到Android Studio和新的gradle构建系统。这个项目使用2.6.1版的协议缓冲区,我很难让它构建.proto文件 我安装了这个插件:如何让Android Studio使用';java#u out';而不是';javanano#u out';,android,android-gradle-plugin,protocol-buffers,Android,Android Gradle Plugin,Protocol Buffers,我正在将一个现有项目迁移到Android Studio和新的gradle构建系统。这个项目使用2.6.1版的协议缓冲区,我很难让它构建.proto文件 我安装了这个插件: 我按照此处的说明进行设置: 我更新了我的项目“build.gradle”,如下所示: buildscript { repositories { mavenCentral() } dependencies { classpath 'com.google.protobuf:p
我按照此处的说明进行设置: 我更新了我的项目“build.gradle”,如下所示:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.7.0'
}
}
android{
...
sourceSets {
main {
proto {
srcDir 'src/main/proto'
}
}
}
protobuf {
protoc {
path = file('../../../tools/protocolBuffers/protoc.exe')
}
}
...
}
我更新模块“build.gradle”,如下所示:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.7.0'
}
}
android{
...
sourceSets {
main {
proto {
srcDir 'src/main/proto'
}
}
}
protobuf {
protoc {
path = file('../../../tools/protocolBuffers/protoc.exe')
}
}
...
}
在生成时,我遇到以下错误:
Error:Execution failed for task ':uidroid:generateXoomVerificationReleaseProto'.
> protoc: stdout: . stderr: C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\build\extracted-protos\main: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\build\extracted-include-protos\main: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\src\xoomVerificationRelease\proto: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\build\extracted-protos\xoomVerificationRelease: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\build\extracted-include-protos\xoomVerificationRelease: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\src\release\proto: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\build\extracted-protos\release: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\build\extracted-include-protos\release: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\src\xoom\proto: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\build\extracted-protos\xoom: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\build\extracted-include-protos\xoom: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\src\verification\proto: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\build\extracted-protos\verification: warning: directory does not exist.
C:\Software\Vivia\Limited\ui_test\Sourcecode\pluto\android\UIDroid\uidroid\build\extracted-include-protos\verification: warning: directory does not exist.
--javanano_out: protoc-gen-javanano: The system cannot find the file specified.
所以我想我有两个问题:
我似乎必须创建它,因为它是为生成的代码创建的
{ task ->
task.builtins {
remove javanano
java { }
}
}
没有成功。这只会导致更多的错误,这可能是由于我没有正确使用它,如果是这样,请告诉我正确的地方放置上述代码
我想如果唯一的方法是使用javanano,那么我该如何获得它,因为在哪里获得它对我来说并不太明显。我已经在:to not most success上找到了更多关于它的信息
谢谢任何能帮忙的人 也许你已经知道问题出在哪里了,但我最近也遇到了同样的问题,所以让我在这里为任何一个偶然发现这个问题的人发布解决方案 我做了一些研究,似乎不可能阻止这个插件使用javanano。我可能错了,所以如果其他人有更好的信息,请与我们分享。:) 因此,假设我们必须使用javanano,下面是我所做的: 首先,从中签出或下载Google protobuf/javanano。 使用这些源文件创建jar存档(编译*.java并从*.class文件创建jar)。将创建的jar添加到项目中(将其放在libs文件夹中,并修改build.gradle文件以编译它) 接下来,修改build.gradle文件中的protobuf部分,以使用生成的protoc二进制文件而不是本地protoc:
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3'
}
}
这在protobuf gradle插件自述文件中的自定义protobuf编译下进行了描述:
同步并重新生成项目。应该这样做。希望能有帮助
干杯也许你已经发现了问题所在,但我最近也遇到了同样的问题,所以让我在这里为任何遇到这个问题的人发布解决方案 我做了一些研究,似乎不可能阻止这个插件使用javanano。我可能错了,所以如果其他人有更好的信息,请与我们分享。:) 因此,假设我们必须使用javanano,下面是我所做的: 首先,从中签出或下载Google protobuf/javanano。 使用这些源文件创建jar存档(编译*.java并从*.class文件创建jar)。将创建的jar添加到项目中(将其放在libs文件夹中,并修改build.gradle文件以编译它) 接下来,修改build.gradle文件中的protobuf部分,以使用生成的protoc二进制文件而不是本地protoc:
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3'
}
}
这在protobuf gradle插件自述文件中的自定义protobuf编译下进行了描述:
同步并重新生成项目。应该这样做。希望能有帮助
干杯