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

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

相关推荐
J_yyy2 分钟前
【Qt核心组件类框架】
开发语言·qt
tachibana23 分钟前
hot100 数组中的第K个最大元素(215)
java·数据结构·算法·leetcode
our_times8 分钟前
2026年Java开发者破局指南:Spring AI 2.0 与 Agent 开发实战
java·人工智能·spring
阿pin14 分钟前
Android随笔-Retrofit
android·retrofit
运维行者_17 分钟前
如何查看每个IP的带宽使用情况?NetFlow 技术实战指南
开发语言·网络·分布式·后端·架构·带宽
想取一个与众不同的名字好难18 分钟前
安卓自定义颜色选择器
android
天天进步201537 分钟前
Python全栈项目--基于深度学习的图像超分辨率系统
开发语言·python·深度学习
糖果店的幽灵1 小时前
langgraph的四种state解析
java·前端·javascript·langgraph
杨充1 小时前
4.接口而非实现编程
java·后端·架构
梦梦代码精1 小时前
基于ThinkPHP6 + Vue3的家政预约系统全解析:从LBS定位到自动派单的完整实现
java·docker·开源·php·代码规范