IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android上使用Protocol Buffer -> 正文阅读

[移动开发]Android上使用Protocol Buffer

环境配置:

< ProjectName>/build.gradle

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.17'
  }
}

< ProjectName>/app/build.gradle

apply plugin: 'com.android.application'  // or 'com.android.library'
apply plugin: 'com.google.protobuf'
  1. protobuf-lite以来方式

    • version3.8以前

      
      dependencies {
        // You need to depend on the lite runtime library, not protobuf-java
        implementation 'com.google.protobuf:protobuf-lite:3.0.0'
      }
      
      protobuf {
        protoc {
          // You still need protoc like in the non-Android case
          artifact = 'com.google.protobuf:protoc:3.7.0'
        }
        plugins {
          javalite {
            // The codegen for lite comes as a separate artifact
            artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
          }
        }
        generateProtoTasks {
          all().each { task ->
            task.builtins {
              // In most cases you don't need the full Java output
              // if you use the lite output.
              remove java
            }
            task.plugins {
              javalite { }
            }
          }
        }
      }
      
    • version3.8以后

      dependencies {
        // You need to depend on the lite runtime library, not protobuf-java
        implementation 'com.google.protobuf:protobuf-javalite:3.8.0'
      }
      
      protobuf {
        protoc {
          artifact = 'com.google.protobuf:protoc:3.8.0'
        }
        generateProtoTasks {
          all().each { task ->
            task.builtins {
              java {
                option "lite"
              }
            }
          }
        }
      }
      
  2. protobuf-java方式

    
    dependencies {
      implementation 'com.google.protobuf:protobuf-java:3.17.3'
    }
    
    protobuf {
        protoc {
            artifact = 'com.google.protobuf:protoc:3.17.3'
        }
        generateProtoTasks {
            all().each { task ->
                task.builtins {
                    remove java
                }
                task.plugins {
                    java  {}
                }
            }
        }
    }
    

注意事项:

  • protocol buffer 需要使用最新版本,否则可能会出现编译错误

  • protobuf-java是完整版本,protobuf-lite是轻量版本,轻量版本里面只有基本类型,没有google/protobuf/any.proto文件

  • protocol buffer数据格式使用的话最好双方统一为该数据格式,否则一方面使用protocol buffer,一方面使用json或者xml的话,需要使用额外的数据格式转换库(比如protobuf-java-format)。但是这种方式会比较麻烦而且要兼容一些额外的操作,比如Any的范型

  • 在使用json和protocol buffer进行转换的时候,如果在测试的时候需要注意不能使用单引号’。例如以下两种方式在单纯的解析时候可以使用,但是单引号那种在protocol buffer就不可以使用
    第一种转义符使用:

    val json = "{\"code\":\"3\"}"
    

    第二种单引号使用(错误示范):

    val json = "{'code':'3'}"
    

参考链接:

  1. Android 中使用Protocol Buffer

https://blog.csdn.net/qq_35599978/article/details/80386356

  1. 查看protocol buffer最新版本

https://github.com/google/protobuf-gradle-plugin

  1. Protocol Buffer

https://developers.google.com/protocol-buffers/docs/proto3

  1. Protocol Buffer在Java上的使用

https://developers.google.com/protocol-buffers/docs/javatutorial

  1. Protocol Buffer在网络数据传输中的使用
    https://blog.csdn.net/weixin_32757449/article/details/114093565

  2. protobuf与json相互转换的方法
    https://www.cnblogs.com/pcheng/p/9586039.html

  3. protobuf-java-format
    https://github.com/bivas/protobuf-java-format

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-11 12:31:59  更:2021-08-11 12:33:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 7:51:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码