当前位置: 首页 > news >正文

在Android中如何使用Protobuf上传协议

在 Android 中使用 Protobuf(Protocol Buffers)主要分为以下几个步骤:


✅ 1. 添加 Protobuf 插件和依赖

在项目的 build.gradle(Project 级)文件中添加 Google 的 Maven 仓库(通常默认已有):

buildscript {dependencies {classpath 'com.google.protobuf:protobuf-gradle-plugin:0.9.4' // 最新版本可查 MavenCentral}
}

在模块级的 build.gradle(通常是 app/build.gradle)中:

plugins {id 'com.android.application'id 'com.google.protobuf'
}android {// ...
}dependencies {implementation 'com.google.protobuf:protobuf-javalite:3.24.0' // 推荐使用 javalite 版本
}protobuf {protoc {artifact = 'com.google.protobuf:protoc:3.24.0' // 对应版本}generateProtoTasks {all().each { task ->task.builtins {java {option 'lite' // 使用 lite 版本更适合 Android}}}}
}

✅ 2. 创建 .proto 文件

src/main/proto/ 目录下创建 .proto 文件,例如:

person.proto

syntax = "proto3";option java_package = "com.example.myapp"; // 替换为你的包名
option java_outer_classname = "PersonProto"; // 生成的外部类名message Person {string name = 1;int32 id = 2;string email = 3;
}

✅ 3. 编译生成 Java 类

构建项目(Build > Rebuild Project./gradlew build)后,Gradle 会自动生成 Java 类(在 build/generated/ 目录下)。

你可以这样使用:

// 创建对象
PersonProto.Person person = PersonProto.Person.newBuilder().setName("Alice").setId(123).setEmail("alice@example.com").build();// 序列化
byte[] bytes = person.toByteArray();// 反序列化
PersonProto.Person parsed = PersonProto.Person.parseFrom(bytes);

✅ 4. Protobuf 使用建议(在 Android 中)

  • 推荐使用 protobuf-javalite:因为它是为移动端优化的,体积更小,依赖更少。

  • 避免嵌套太多层次的 message:保持结构简单,便于维护和性能更好。

  • 可以结合 Room 使用 Protobuf 类型作为字段:需要自定义 TypeConverter。

http://www.xdnf.cn/news/143335.html

相关文章:

  • 隧道调频广播覆盖的实现路径:隧道无线广播技术赋能行车安全升级,隧道汽车广播收音系统助力隧道安全管理升级
  • http://noi.openjudge.cn/——2.5基本算法之搜索——200:Solitaire
  • NVIDIA 高级辅助驾驶汽车安全系统 系列读后感(1)
  • 【C++】继承----下篇
  • 使用命令行加密混淆C#程序
  • MySQL表达式之公用表表达式(CTE)的使用示例
  • 海量信息处理分析有效决策
  • 反序列化漏洞1
  • RK3562/3588 系列之0—NPU基础概念
  • 链表系列一>两两交换链表中的结点
  • 大厂面试-框架篇
  • Bytebase 取得 SOC 2 Type 2 认证
  • 驱动支持的最高CUDA版本与实际安装的Runtime版本
  • 在 Spring Boot 项目中如何使用索引来优化 SQL 查询?
  • BGE-Reranker-v2-M3介绍
  • 【Pandas】pandas DataFrame radd
  • 【防火墙 pfsense】3 portal
  • Serverless 在云原生后端的实践与演化:从函数到平台的革新
  • 开发体育直播系统内容与用户管理机制技术实现方案
  • 数据结构手撕--【二叉树】
  • 组件化开发
  • maven依赖排查与注意点
  • 高精度电流检测革命:同轴分流器的创新应用与技术演进
  • 爬虫练习 js 逆向
  • Steam游戏服务器攻防全景解读——如何构建游戏级抗DDoS防御体系?
  • Spring定时任务不执行?深度排查指南与解决方案
  • NVIDIA --- 端到端自动驾驶
  • Spring Boot 读取配置文件的几种方式
  • 国产32位单片机PY32F003,ADC使用注意事项
  • 【计算机网络】IP地址