Mac 安装 protobuf 和Android Studio 使用

1. 安装,执行命令

brew install protoc

2. Mac 错误提示:zsh: command not found: brew解决方法

解决方法:mac 安装homebrew,

用以下命令安装,序列号选择中科大(1)或 阿里云

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

2022年4月27日再次更新

可以直接使用官网的最新安装命令
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
如果还是不行的话可以上官网看看:HomeBrew官网

只不过官网非常慢,推荐使用下面的解决方案

3. 安装完成输入命令验证

protoc --version

显示 libprotoc x.x (版本号)就安装成功了.

二、Android Studio 使用

1. 下载插件,缺少的就下载

2. 配置 Gradle

2.1 在 build.gradle 中添加插件依赖

打开你的项目的顶级 build.gradle 文件,在 buildscript 的 dependencies 下添加 Protocol Buffers 插件依赖:

buildscript {
    repositories {
        google()
        // 其他仓库...
    }
    dependencies {
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.9.4'
        // 其他依赖...
    }
}

2.2 应用插件

在你的 app 模块的 build.gradle 文件中应用 Protocol Buffers 插件,并指定 protobuf 文件的位置:

  1. apply plugin: 'com.android.application'
    apply plugin: 'com.google.protobuf'
    
    android {
        // protobuf依赖的3.22.0之后版本必须要求添加,
        // 使用protobuf低版本依赖生成的java文件中有报错.
        compileOptions {
            sourceCompatibility 1.8
            targetCompatibility 1.8
        }
        // 其他配置...
    }
    
    //这里暂未使用,也没有配置  start
    protobuf {
        protoc {
            // 指定 Protobuf 编译器的版本
            artifact = 'com.google.protobuf:protoc:编译器版本号'
        }
        // 设置 protobuf 文件的路径
        // 示例路径,根据你的实际情况更改
        generatedFilesBaseDir = "$projectDir/src/main/java"
    }
    //这里暂未使用,也没有配置  start
    
    
    dependencies {
        //添加protobuf依赖
        implementation 'com.google.protobuf:protobuf-java:3.24.4'
        implementation 'com.google.protobuf:protoc:3.24.4'
        //implementation 'com.google.protobuf:protobuf-javalite:3.24.4'
    }

 3. 编写 .proto 文件

在src/main/下面新建 proto目录,用来编写.proto文件

4. 生成 Java 代码

方法一:

        1. 打开AS的Terminal终端,输入命令,以图为例

protoc --java_out=src/main/java/ --proto_path=src/main/proto student.proto

        2. 如上图就会在指定的java包名下生成咱们指定的StudentB这个java类.

方法二(未测试): 

  1. 运行 Gradle 的任务以生成 Java 代码。你可以在 Android Studio 的右侧 Gradle 选项卡中找到你的项目,展开 Tasks -> other -> protobuf,然后双击 generateProto 任务运行。

  2. 或者,可以在终端或命令行中进入你的项目根目录,运行以下命令:

    ./gradlew generateProto
    

    这将使用 Protocol Buffers 插件生成 Java 代码。

5. 在 Android 项目中使用生成的类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/162276.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

掌握Shell:从新手到编程大师的Linux之旅

1 shell介绍 1.1 shell脚本的意义 1.记录命令执行的过程和执行逻辑,以便以后重复执行 2.脚本可以批量处理主机 3.脚本可以定时处理主机 1.2 脚本的创建 #!/bin/bash # 运行脚本时候执行的环境1.3 自动添加脚本说明信息 /etc/vimrc # vim主配置文件 ~/.vimrc # 该…

C语言开发者的利器:gcc编译命令指南

本文主要介绍gcc编译c语言过程,以及常用命令 文章目录 C语言编译过程1. 预处理(Preprocessing):2. 编译(Compiling):3. 汇编(Assembling):4. 链接&#xff08…

适用于 Windows 的 10 个最佳视频转换器:快速转换高清视频

您是否遇到过由于格式不兼容而无法在您的设备上播放视频或电影的情况?您想随意播放从您的相机、GoPro 导入的视频,还是以最合适的格式将它们上传到媒体网站?您的房间里是否有一堆 DVD 光盘,想将它们转换为数字格式以便于播放&…

深度模型压缩研究回顾

深度模型压缩研究回顾 作者:安静到无声 个人主页 目录 深度模型压缩研究回顾推荐专栏 在本节中,主要介绍了目前主流的深度神经网络压缩与加速方法,主要包括轻量化网络设计、参数量化、知识蒸馏、模型剪枝和硬件加速等,其中模型剪…

Linux系统中sh脚本编写

文章目录 Linux系统中sh脚本编写1.在编写sh脚本前了解一下基本语法1.1 if语句单分支双分支多分枝 1.2 for语法 2. 自己写的demo :自动部署前端项目 (自动拉取代码,打包,部署nginx)3.定时执行 shell脚本 Linux系统中sh脚…

性能分析工具的使用

文章目录 1. 数据库服务器调优的步骤2. 查看系统性能参数3. 统计SQL的查询成本:last_query_cost4. 定位执行慢的SQL:慢查询日志4.1 开启slow_query_log4.2 修改long_query_time阈值4.3 查看慢查询数目4.4 慢查询日志分析工具:mysqldumpslow 5…

work环境配置

1.计算机右键找到属性 2.配置环境变量 3.新加环境变量 4.修改环境变量path .bat文件内容 php ApplicationsChatstart_register.php ApplicationsChatstart_gateway.php ApplicationsChatstart_businessworker.php pause

App测试入门

App测试基础知识 App测试,是指对移动应用软件(如手机app、平板app等)进行全面和系统的测试,以确保其功能、性能、安全性、稳定性、兼容性等方面能满足用户的使用需求和期望。 App常见运行系统 IOS系统: IOS系统是苹果公…

MLC-LLM 支持RWKV-5推理以及对RWKV-5的一些思考

自从2023年3月左右,chatgpt火热起来之后,我把关注的一些知乎帖子都记录到了这个markdown里面,:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/large-language-model-note ,从2023年3月左右到现…

编写程序,要求输入x的值,输出y的值。分别用(1)不嵌套的if语句(2)嵌套的if语句(3)if-else语句(4)switch语句。

编写程序,要求输入x的值,输出y的值。分别用(1)不嵌套的if语句(2)嵌套的if语句(3)if-else语句(4)switch语句。 选择结构是编程语言中常用的一种控制结构&…

OpenGL 的学习之路-4(变换)

三大变换:平移、缩放、旋转(通过这三种变换,可以将图像移动到任意位置) 其实,这背后对应的数学在 闫令琪 图形学课程 中有过一些了解,所以,理解起来也不觉得很困难。看程序吧。 1.画三角形&am…

量化交易:公司基本面的量化

公司的基本面因素一直具备滞后性,令基本面的量化出现巨大困难。而从上市公司的基本面因素来看,一般只有每个季度的公布期才会有财务指标的更新,而这种财务指标的滞后性对股票表现是否有影响呢?如何去规避基本面滞后产生的风险呢&a…

网站SEO优化

网站SEO优化 浏览722 一、合理的title、description、keywords 搜索对着三项的权重逐个减小,title值强调重点即可;description把页面内容高度概括,不可过分堆砌关键词;keywords列举出重要关键词。 1、title title,…

【教3妹学编程-java基础6】详解父子类变量、代码块、构造函数执行顺序

-----------------第二天------------------------ 本文先论述父子类变量、代码块、构造函数执行顺序的结论, 然后通过举例论证,接着再扩展,彻底搞懂静态代码块、动态代码块、构造函数、父子类、类加载机制等知识体系。 温故而知新&#xff…

ZYNQ_project:LCD

模块框图: 时序图: 代码: /* // 24h000000 4324 9Mhz 480*272 // 24h800000 7084 33Mhz 800*480 // 24h008080 7016 50Mhz 1024*600 // 24h000080 4384 33Mhz 800*480 // 24h800080 1018 70Mhz 1280*800 */ module rd_id(i…

【MySQL】InnoDB和MyISAM区别详解(MySQL专栏启动)

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…

OpenCV C++ 图像 批处理 (批量调整尺寸、批量重命名)

文章目录 图像 批处理(调整尺寸、重命名)图像 批处理(调整尺寸、重命名) 拿着棋盘格,对着相机变换不同的方角度,采集十张以上(以10~20张为宜);或者棋盘格放到桌上,拿着相机从不同角度一通拍摄。 以棋盘格,第一个内焦点为坐标原点,便于计算世界坐标系下三维坐标; …

【代码随想录】算法训练计划24

回溯模板: 1、77. 组合 题目: 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 思路: 很经典的回溯,也是回溯中模板的经典应用,因而是回溯中的简单题…

97.qt qml-自定义Table之实现ctrl与shift多选

我们之前实现了:93.qt qml-自定义Table优化(新增:水平拖拽/缩放自适应/选择使能/自定义委托)-CSDN博客 实现选择使能的时候,我们只能一行行去点击选中,非常麻烦,所以本章我们实现ctrl多选与shift多选、 所以在Table控件新增两个属性: 1.实现介绍 ctrl多选实现原理:当我…

Redis新操作

1.Bitmaps 1.1概述 Bitmaps可以对位进行操作,实际上它就是一个字符串,可以将Bitmaps想象为一个以位为单位的数组,数组中的每个元素只能存储0或者1,数组的下标在Bitmaps被称为偏移量。 setbit key offset value:设置o…