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日再次更新 可以直接使用官网的最新安装命令 只不过官网非常慢,推荐使用下面的解决方案 |
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 文件的位置:
-
apply plugin: 'com.android.application' apply plugin: 'com.google.protobuf'android {// protobuf依赖的3.22.0之后版本必须要求添加,// 使用protobuf低版本依赖生成的java文件中有报错.compileOptions {sourceCompatibility 1.8targetCompatibility 1.8}// 其他配置... }//这里暂未使用,也没有配置 start protobuf {protoc {// 指定 Protobuf 编译器的版本artifact = 'com.google.protobuf:protoc:编译器版本号'}// 设置 protobuf 文件的路径// 示例路径,根据你的实际情况更改generatedFilesBaseDir = "$projectDir/src/main/java" } //这里暂未使用,也没有配置 startdependencies {//添加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类.
方法二(未测试):
-
运行 Gradle 的任务以生成 Java 代码。你可以在 Android Studio 的右侧
Gradle选项卡中找到你的项目,展开Tasks->other->protobuf,然后双击generateProto任务运行。 -
或者,可以在终端或命令行中进入你的项目根目录,运行以下命令:
./gradlew generateProto这将使用 Protocol Buffers 插件生成 Java 代码。
5. 在 Android 项目中使用生成的类

相关文章:
Mac 安装 protobuf 和Android Studio 使用
1. 安装,执行命令 brew install protoc 2. Mac 错误提示:zsh: command not found: brew解决方法 解决方法:mac 安装homebrew, 用以下命令安装,序列号选择中科大(1)或 阿里云 /bin/zsh -c "$(curl…...
MongoDB入门级别教程全(Windows版,保姆级教程)
下载mongodb 进入官网: Download MongoDB Community Server | MongoDB 选择msi,Windows版本 下载完后直接双击: 选择complete 这里建议改地方: 我这里直接改成d盘:work目录下面: 点击next: 因…...
基于机器学习的居民消费影响因子分析预测
项目视频讲解: 基于机器学习的居民消费影响因子分析预测_哔哩哔哩_bilibili 主要工作内容: 完整代码: import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import missingno as msno import warnings warnings.filterwarnin…...
Qt HTTP 摘要认证(海康球机摄像机ISAPI开发)
接到一个需求是开发下海康的球机,控制云台,给到我的是一个开发手册,当然了是海康的私有协议 ISAPI开发手册https://download.csdn.net/download/qq_37059136/88547425关于开发这块读文档就可以理解了,海康使用的是摘要认证,当然了海康已经给出使用范例 通过libcurl就可以直接连…...
srs webrtc推拉流环境搭建(公网)
本地环境搭建 官方代码https://github.com/ossrs/srs 拉取代码: git clone https://github.com/ossrs/srs.gitcd ./configure make ./objs/srs -c conf/https.rtc.confsrs在公网上,由于srs是lite-ice端,导致他不会主动到srs获取自己的公网i…...
【Flutter】设计原则(2)深入解析 SOLID 原则的应用
【Flutter】设计原则(2)深入解析 SOLID 原则的应用 文章目录 一、前言二、SOLID原则三、在 Flutter 中应用单一职责原则1. 专注单一功能的 Widget2. 提高代码可维护性四、在 Flutter 中应用开闭原则1. 利用多态和基类实现可扩展的 Widget2. 增强应用的可扩展性和灵活性五、在…...
python爬虫概述及简单实践:获取豆瓣电影排行榜
目录 前言 Python爬虫概述 简单实践 - 获取豆瓣电影排行榜 1. 分析目标网页 2. 获取页面内容 3. 解析页面 4. 数据存储 5. 使用代理IP 总结 前言 Python爬虫是指通过程序自动化地对互联网上的信息进行抓取和分析的一种技术。Python作为一门易于学习且强大的编程语言&…...
ts视频文件转为mp4(FFmpeg)
有些视频资源下载下来之后发现是.ts的文件,除了用下载它时用的工具或是浏览器才能看,那有没有将ts文件转换成更加通用视频格式的方法。 几乎万能的音视频工具--ffmpeg登场 安装和环境配置可看这篇博客:FFmpeg指令行打开usb摄像头࿰…...
2023年咸阳市《网络建设与运维》赛题解析------四、安全配置
安全配置 说明:IP地址按照题目给定的顺序用“ip/mask”表示,IPv4 any地址用0.0.0.0/0,IPv6 any地址用::/0,禁止用地址条目,否则按零分处理。 1.FW1配置IPv4 nat,实现集团产品1段IPv4访问Internet IPv4,转换ip/mask为200.200.200.16/28,保证每一个源IP产生的所有会话将…...
什么是java枚举?为什么要用java枚举?
什么是java枚举? 原始的接口定义常量 public interface IConstants {String MON "Mon";String TUE "Tue";String WED "Wed";String THU "Thu";String FRI "Fri";String SAT "Sat";String SUN …...
USB复合设备构建CDC+HID鼠标键盘套装
最近需要做一个小工具,要用到USB CDCHID设备。又重新研究了一下USB协议和STM32的USB驱动库,也踩了不少坑,因此把代码修改过程记录一下。 开发环境: ST-LINK v2 STM32H743开发板 PC windows 11 cubeMX v6.9.2 cubeIDE v1.13.2 cub…...
准备篇(四)HTTP 基本原理
URI 和 URLURIURLURI vs URLHTTP 和 HTTPS超文本HTTPHTTP 请求与响应HTTPS你是否想过,在浏览器中敲入 URL 到 获取网页内容 之间发生了什么? 了解这些,有助于进一步了解爬虫的基本原理。 URI 和 URL URI(Uniform Resource Identifier),即统一资源标识符;URL(Universa…...
模板初阶笔记分享
有道云笔记...
使用Spring Boot实现大文件断点续传及文件校验
一、简介 随着互联网的快速发展,大文件的传输成为了互联网应用的重要组成部分。然而,由于网络不稳定等因素的影响,大文件的传输经常会出现中断的情况,这时需要重新传输,导致传输效率低下。 为了解决这个问题ÿ…...
读取PDF中指定数据写入EXCEL文件
使用Java读取文件夹中的PDF文件,再读取文件中的指定的字体内容,然后将内容写入到Excel文件中,其中包含一些正则判断,可以忽略,字体以Corbel字体为例。 所需要的maven依赖为: <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel…...
[黑马程序员SpringBoot2]——开发实用篇1
目录: 手工启动热部署自动启动热部署热部署范围配置关闭热部署功能第三方bean属性绑定松散绑定常用计量单位应用bean属性校验进制数据转换规则加载测试专用属性加载测试专用配置测试类中启动web环境发送虚拟请求匹配响应执行状态匹配响应体匹配响应体(json)匹配响应…...
Python------列表 集合 字典 推导式(本文以 集合为主)
推导式: 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列 构建 另一个 新的数据序列(一个有规律的列表或控制一个有规律列表)的结构体。 共有三种推导ÿ…...
网工内推 | Linux运维,六险二金,最高30K,IE认证优先
01 上海域起 招聘岗位:Linux运维工程师 职责描述: 1.负责游戏产品运维相关的工作,流程文档、技术文档、功能脚本的编写整理 2.负责分析并排除系统、数据库、网络、应用等游戏产品运维中出现的故障及错误 3.负责对游戏产品项目进行线上部署、…...
服务器集群配置LDAP统一认证高可用集群(配置tsl安全链接)-centos9stream-openldap2.6.2
写在前面 因之前集群为centos6,已经很久没升级了,所以这次配置统一用户认证也是伴随系统升级到centos9时一起做的配套升级。新版的openldap配置大致与老版本比较相似,但有些地方配置还是有变化,另外,铺天盖地的帮助文…...
12-1- GAN -简单网络-线性网络
功能 随机噪声→生成器→MINIST图像。 训练方法 0 损失函数:gan的优化目标是一个对抗损失,是二分类问题,用BCELoss 1 判别器的训练,首先固定生成器参数不变,其次判别器应当将真实图像判别为1,生成图像判别为0 loss=loss(real_out, 1)+loss(fake_out, 0) 2 生成器的…...
FPGA资源吃紧?看Artix7-35T如何“精打细算”实现MIPI视频解码与HDMI输出
Artix7-35T极限优化:在资源受限FPGA上实现MIPI-HDMI全流程处理 当医疗内窥镜或工业检测设备需要嵌入式图像处理时,工程师们常常面临一个残酷的现实:既要实现复杂的MIPI视频处理流水线,又不得不使用Artix7-35T这类入门级FPGA。这颗…...
5分钟快速上手:Parsec VDD虚拟显示器完整指南,彻底释放游戏串流潜能
5分钟快速上手:Parsec VDD虚拟显示器完整指南,彻底释放游戏串流潜能 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 想要在没有物理显示器的情况下畅享4K游…...
从Wi-Fi 6到5G:深入浅出聊聊MIMO中的CSI反馈那些事儿(PMI/RI/CQI详解)
从Wi-Fi 6到5G:深入浅出聊聊MIMO中的CSI反馈那些事儿(PMI/RI/CQI详解) 现代无线通信系统正经历着从Wi-Fi 6到5G的跨越式发展,而多天线技术(MIMO)作为提升频谱效率的核心手段,其性能很大程度上依赖于准确的信道状态信息…...
ANSYS Workbench实战:用网格自适应搞定超弹性橡胶大变形不收敛(附命令流)
ANSYS Workbench实战:超弹性橡胶大变形问题的网格自适应解决方案 橡胶材料在工程仿真中一直是个令人头疼的存在——当你满怀信心地设置好边界条件点击求解,却在进度条走到30%时突然弹出"网格扭曲"的红色警告。作为一名长期与超弹性材料"斗…...
别再为路径报错头疼了!手把手教你将Robei工程无缝迁移到Quartus II(附文件整理技巧)
从Robei到Quartus II:工程迁移的完整避坑指南 第一次把Robei工程导入Quartus II时,我盯着满屏的路径报错和未定义模块提示,差点把键盘摔了。这种挫败感想必每个FPGA初学者都经历过——明明在Robei里运行完美的设计,换到Quartus II…...
BooruDatasetTagManager自定义界面与快捷键:打造个性化工作流程的终极指南 [特殊字符]
BooruDatasetTagManager自定义界面与快捷键:打造个性化工作流程的终极指南 🎨 【免费下载链接】BooruDatasetTagManager 项目地址: https://gitcode.com/gh_mirrors/bo/BooruDatasetTagManager BooruDatasetTagManager是一款强大的AI训练数据标签…...
Android Studio中文界面终极解决方案:告别官方插件的兼容性烦恼
Android Studio中文界面终极解决方案:告别官方插件的兼容性烦恼 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为…...
CANN/asc-devkit核间同步API文档
CrossCoreWaitFlag(ISASI) 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https…...
用 Articraft 制作可动 3D 资产
如果你想做一个“能开合的台灯、能转动的风扇、能拉开的抽屉柜”,传统 3D 工作流通常意味着:建模、拆分部件、定义关节、反复调试、再导出到下游系统。 问题是,这类“可动对象”并不只是静态几何体,它们还需要语义化部件、合理结构…...
告别软件切换!用uTools的超级面板和插件,5分钟搞定你的日常效率工作流
告别软件切换!用uTools的超级面板和插件,5分钟搞定你的日常效率工作流 你是否经常在多个软件之间来回切换,只为完成一个简单的任务?复制一段文字需要翻译,得先打开浏览器;截图后想提取文字,又要…...
