gpt4 book ai didi

android - 使用 Square 的 Wire 生成 Protobuf java 文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:37 30 4
gpt4 key购买 nike

我正在尝试从存储在 Android Studio 中 SRC 文件夹下的 .proto 文件生成 .java 文件。我将以下代码放入我的 gradle 文件中,但它似乎不起作用

apply plugin: 'com.squareup.wire'

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

最佳答案

这里有一个用于 wire 的 gradle 插件:https://github.com/square/wire-gradle-plugin .但是,它似乎是 not quite ready黄金时段呢。我在让它工作时遇到了一些问题。

但是,这里有一种方法可以直接使用 wire 编译器和一个简单的 gradle 任务从 *.proto 文件自动生成 java 代码。我在下面提供了一个 fragment ,其中包含对您的 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

关于android - 使用 Square 的 Wire 生成 Protobuf java 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35786584/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com