前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android Protobuf 序列化】Protobuf 使用 ( protobuf-gradle-plugin 插件简介 | Android Studio 中配置插件 | AS 中编译源文件 )

【Android Protobuf 序列化】Protobuf 使用 ( protobuf-gradle-plugin 插件简介 | Android Studio 中配置插件 | AS 中编译源文件 )

作者头像
韩曙亮
发布2023-03-29 10:32:10
1.6K0
发布2023-03-29 10:32:10
举报

文章目录

一、protobuf-gradle-plugin 插件简介


上一篇博客 【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 ) 中 , 在命令行中使用 protoc 编译器 , 将 .proto 源文件编译成了 Java 源文件 ;

Google 提供了专门用于编译 .proto 源文件的 Gradle 插件 protobuf-gradle-plugin ;

protobuf-gradle-plugin 项目地址 : https://github.com/google/protobuf-gradle-plugin

在 Android Studio 中 , 借助该 protobuf-gradle-plugin Gradle 插件 , 可以自动完成 Protobuf 源文件的编译工作 ;

protobuf-gradle-plugin 插件配置方法 , 参考 https://github.com/google/protobuf-gradle-plugin 项目主页的 MarkDown 文档 ;

二、Android Studio 中配置 protobuf-gradle-plugin 插件


protobuf-gradle-plugin 插件配置 :

  • Gradle 版本最低 5.6 ,
  • Java 版本最低 8.0 ,
  • 开启 Maven Central 仓库 mavenCentral() ,
  • 最新版本是 0.8.16 ;

在 Project 的 build.gradle 中进行如下配置 :

代码语言:javascript
复制
buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.16'
  }
}

在 Module 的 build.gradle 中进行如下配置 :

代码语言:javascript
复制
apply plugin: 'com.android.application'  // or 'com.android.library'
apply plugin: 'com.google.protobuf'

如果使用 Protobuf 3.0 ~ 3.7 之间的版本 , 使用的是 protobuf-lite 版本 , 该版本相对于普通的 Protobuf , 生成的源文件更精简 , 这是为了适配在 Android 设备上使用而定制的 , 更适合移动端使用 ;

代码语言:javascript
复制
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 { }
      }
    }
  }
}

如果使用 Protobuf 3.8 之后的版本 , 使用如下设置 :

代码语言:javascript
复制
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"
        }
      }
    }
  }
}

三、Android Studio 中编译 Protobuf 源文件


配置完成后 , 选择 " 菜单栏 / Build / Make Project " 编译整个工程 ,

编译完成后 , 在 " app\build\generated\source\proto\debug\javalite " 目录下生成 Protobuf 源码对应的 Java 类 , AddressBook.java 源文件生成在 " app\build\generated\source\proto\debug\javalite\com\example\tutorial\protos " 目录中 ;

Android Studio 会将 Protobuf 生成的这些 Java 类引入到当前项目的 Classpath 中 , 并打包到 APK 中 , 在开发时 , 可以引用这些类 ;

四、参考资料


Protobuf 参考资料 :

博客源码 :

本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、protobuf-gradle-plugin 插件简介
  • 二、Android Studio 中配置 protobuf-gradle-plugin 插件
  • 三、Android Studio 中编译 Protobuf 源文件
  • 四、参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com