配置Protobuf输出Java文件或kotlin文件

第一种方式:编译自动生成(推荐

1、在app/src/main中创建proto文件夹,放入proto文件

2、在app下的gradle.build中配置

复制代码
plugins {
    id 'com.google.protobuf'
}

android {
   ...
   sourceSets {
        main {
            proto {
                srcDirs = [
                        '/src/main/proto/' //路径可替换,要与proto文件夹的路径相同
                ]
            }
        }
    }
    ...
}
dependencies {
    implementation 'com.google.protobuf:protobuf-javalite:3.22.3'
}
protobuf {
    // Configure the protoc executable
    protoc {
        artifact = "com.google.protobuf:protoc:3.22.3"//版本与依赖中的版本相同
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                remove java
                java {
                    option "lite"
                }
            }
        }
    }
}

3、在根目录下的gradle.build中配置

复制代码
buildscript {
    ...
    dependencies {
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.9.4'
    }
}

4、编译生成指定的proto.java文件。路径是app/build/generated/source/proto/release/java/xx/xx.java

5、使用

复制代码
val ass = xx.builder();
或
xx.set(x).set(y).build();

第二种方式:手动生成

1、官网(Releases · protocolbuffers/protobuf)下载protobuf

下载protoc-34.1-win32.zipprotoc-34.1-win64.zip

2、安装protobuf

解压压缩包,找到bin文件夹

3、配置protobuf到电脑环境中
打开设置------》高级设置------》环境变量------》用户配置------》编辑------》:路径/bin

4、输入指令

输出java:protoc --java_out=. ./business_objects_type.proto

输出kotlin:protoc --kotlin_out=./ ./business_objects_type.proto

5、在app下的gradle.build中配置

复制代码
implementation("com.google.protobuf:protobuf-java:4.31.1")
implementation("io.grpc:grpc-netty-shaded:1.61.0")
implementation("io.grpc:grpc-stub:1.61.0")

6、使用

复制代码
val ass = xx.builder();
或
xx.set(x).set(y).build();

以上,希望能帮助到各位!!!

相关推荐
覆东流12 小时前
2.Java程序基础
java·开发语言·后端
snow@li12 小时前
SpringBoot:全套生命周期全景详解/应用级+Bean级
java·spring boot·rpc
ttwuai12 小时前
Go 后台定时任务启停不生效怎么办?先查调度同步链路
开发语言·后端·golang
love_muming12 小时前
二叉树操作全解析:从递归到层序遍历
java·数据结构·算法·二叉树
小的~~12 小时前
ThreadLocal 、InheritableThreadLocal 与 TransmittableThreadLocal 的进阶指南
java·开发语言
键盘会跳舞12 小时前
C++:std::pair 源码级深度剖析 —— 关联容器的基石
开发语言·c++·pair·关联容器
(Charon)12 小时前
【C++】手写线程安全队列:mutex + condition_variable 实现生产者消费者模型
c语言·开发语言·c++
北极糊的狐12 小时前
钉钉小程序报错data.formatTime is not a function是因为 axml 模板中不能直接调用 Page 内自定义方法!
java·小程序·钉钉
崖边看雾12 小时前
同步上下文管理器规则
开发语言·数据库
️学习的小王12 小时前
二级MySQL PHP综合应用题完整考点+历年真题风格练习题
android·mysql·php