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

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

相关推荐
Flittly13 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
小兔崽子去哪了13 小时前
Java 生成二维码解决方案
java·后端
石山岭14 小时前
自己动手写了一个 Android 虚拟定位 App:GPSSimulate 技术实
android·前端
杉氧16 小时前
副作用 (Side Effects) 全攻略:如何像大师一样掌控 Composable 的生命周期?
android·架构·android jetpack
人活一口气18 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
NE_STOP20 小时前
Vibe Coding -- 完整项目案例实操
java
唐青枫20 小时前
别再把 inline 当性能开关:Kotlin 内联、noinline、crossinline 与 reified 实战详解
kotlin
荣码20 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
SimonKing20 小时前
Google第三方授权登录
java·后端·程序员
明月光81820 小时前
从一行 @Builder 说起:重新拾起 Java 的 Lombok、注解与 Builder 模式
java