配置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();

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

相关推荐
大卡片4 分钟前
C++的基础知识点
开发语言·c++
吴声子夜歌13 分钟前
Java——线程的基本协作机制
java·线程协作
谙弆悕博士34 分钟前
【附C++源码】从零开始实现 2048 游戏
java·c++·游戏·源码·项目实战·2048
郑同学的笔记39 分钟前
【Qt教程29】Qt5和Qt6版本对比
开发语言·qt
基德爆肝c语言43 分钟前
Qt 主窗口全家桶:菜单栏、工具栏、状态栏与对话框完全指南
开发语言·qt
simplepeng1 小时前
我通过3个小改动将Compose重组减少了78%
android
应用市场1 小时前
Android分区表深度解析:GPT、各分区作用与布局实战
android·gpt
独自归家的兔1 小时前
OCPP 1.6 协议详解:GetLocalListVersion 获取本地列表版本指令
java·后端·物联网·spring·ocpp1.6
XMYX-02 小时前
28 - Go JSON 数据操作
开发语言·golang·json
三*一2 小时前
Mapbox GL JS 自研面要素整形工具开发实录
开发语言·javascript·arcgis·ecmascript