为Cocos2d-x的Android平台添加Protobuffer支持

[寒江孤叶丶的Cocos2d-x之旅_29]在Cocos2d-x中集成protobuf (Protocol Buffers) 原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列] 博客地址:http://blog.youkuaiyun.com/qq446569365 1.什么是Protobuf? 数据传输格式有很多种最常见XML和Json,这两种格式生成速度非常快,但是解析的效率却很低。尤其在数据量非常大的情况下,会卡住好半天。并且这种格式的传输也会使得传输所耗费流量变大。解析效率最高 阅读详情

为Cocos2d-x的Android平台添加Protobuffer支持

分类: 工作   386人阅读  评论(1)  收藏  举报

软件: cocos2d-x版本

protobuffer版本:

NDK版本:

Eclipse: 


之前在网上搜索了很多文章,发现大多文章都没有一个完整的流程,自己摸索了2天,成功添加了protobuffer支持。这里记录下同时分享给其他人。

这里的添加方式雷同于添加cocos2d-x所需要的第三方库。


1. 利用cocos2d-x提供的python脚本新生成一个项目。(进入cocos2d-x/tools/project-creator, 编写一个bat脚本用来生成项目 create.bat)

[plain]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. @echo off  
  2. set /p projectName=Please Input Project name:  
  3. if "%projectName%"=="" goto inputError  
  4. set /p packageName=Please Input Package Name:  
  5. if "%packageName%"=="" goto inputError  
  6. create_project.py -project %projectName% -package %packageName% -language cpp  
  7. pause  
  8. exit  
  9. :inputError  
  10. @echo Project or package name is NULL!  
  11. pause  

注意输入PackageName的时候要使用标准的组织机构如:com.jcracker.test 否则创建可能失败。

这里我为了学习cocos2d-x 所以模仿了9miao的名称。最终生成的项目组织结果如下:


2. 为cocos2d-x添加protobuffer支持

 将protobuffer源码复制到cocos2d-x/external下。 如图:


3. 进入cygwin 生成protobuffer需要的config.h文件,如果不生成在编译阶段会提示找不到config.h错误。

进入cygwin, 一路cd到 cocos2d-x/external/protobuf/中  执行./configure  在执行过程中注意观察 执行情况 必须执行成功才行,过程中如果提起缺少gcc g++之类的 自己重新安装gcc g++


4. 进入external/chipmunk 复制里面的Android.mk 到protobuf中。此时protobuf文件组织结构如图:



5. 改写Android.mk. 改写后的Android.mk如下:

[plain]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. LOCAL_PATH := $(call my-dir)  
  2.   
  3. include $(CLEAR_VARS)  
  4.   
  5. LOCAL_MODULE := protobuf_static  
  6.   
  7. LOCAL_MODULE_FILENAME := libprotobuf  
  8.   
  9. LOCAL_CPP_EXTENSION := .cc  
  10.   
  11. LOCAL_SRC_FILES := \  
  12. src/google/protobuf/io/coded_stream.cc                \  
  13. src/google/protobuf/stubs/common.cc                   \  
  14. src/google/protobuf/descriptor.cc                     \  
  15. src/google/protobuf/descriptor.pb.cc                  \  
  16. src/google/protobuf/descriptor_database.cc            \  
  17. src/google/protobuf/dynamic_message.cc                \  
  18. src/google/protobuf/extension_set.cc                  \  
  19. src/google/protobuf/extension_set_heavy.cc            \  
  20. src/google/protobuf/generated_message_reflection.cc   \  
  21. src/google/protobuf/generated_message_util.cc         \  
  22. src/google/protobuf/io/gzip_stream.cc                 \  
  23. src/google/protobuf/compiler/importer.cc              \  
  24. src/google/protobuf/message.cc                        \  
  25. src/google/protobuf/message_lite.cc                   \  
  26. src/google/protobuf/stubs/once.cc                     \  
  27. src/google/protobuf/compiler/parser.cc                \  
  28. src/google/protobuf/io/printer.cc                     \  
  29. src/google/protobuf/reflection_ops.cc                 \  
  30. src/google/protobuf/repeated_field.cc                 \  
  31. src/google/protobuf/service.cc                        \  
  32. src/google/protobuf/stubs/structurally_valid.cc       \  
  33. src/google/protobuf/stubs/strutil.cc                  \  
  34. src/google/protobuf/stubs/substitute.cc               \  
  35. src/google/protobuf/stubs/stringprintf.cc               \  
  36. src/google/protobuf/text_format.cc                    \  
  37. src/google/protobuf/io/tokenizer.cc                   \  
  38. src/google/protobuf/unknown_field_set.cc              \  
  39. src/google/protobuf/wire_format.cc                    \  
  40. src/google/protobuf/wire_format_lite.cc               \  
  41. src/google/protobuf/io/zero_copy_stream.cc            \  
  42. src/google/protobuf/io/zero_copy_stream_impl.cc       \  
  43. src/google/protobuf/io/zero_copy_stream_impl_lite.cc  
  44.   
  45. #LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/protobuf  
  46.   
  47. #LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/protobuf  
  48. #LOCAL_CFLAGS := -std=c99  
  49.                                    
  50. include $(BUILD_STATIC_LIBRARY)  

编写以上代码时候注意记得把protobuffer的cc写进来。


6. 使用eclipse进如android项目的结构中。


7. 为protobuffer添加编译所需的头文件支持。  因为protobuffer中很多依赖<google/protobuf/**> 之类的头文件。如果手动去该太麻烦。 所以可以先将protobuffer在cygwin中 使用./configure && make && make install  安装到cygwin中,这样我们就可以去cygwin的头文件中直接拿去需要的头文件。如下:


将以上文件夹直接复制到NDK编译的交叉编译工具链的头文件中。 我这里是:


8 编写项目所需的Android.mk, 如下:


注意红色部分。

编译运行  注意看控制台是否编译成功,是否链接成功。

编译成功产生静态链接库:


 链接到项目中。


至此,为cocos2d-x添加protobuffer支持完毕。

因为时间关系 还没有测试protobuffer在android是否正常工作,请谅解。  等空了再补上。


-------------------------------------------------------------------------------------------------------------------------------

已验证,在android平台能成功运行

Cocos2d-x中配置Protobuf(win32和android) 今天讲一下在cocos2d-x-3.17.2项目中配置protobuf-3.12.0-rc2。 1.下载cocos2d-x-3.17.2:https://www.cocos.com/cocos2dx解压到:c:/cocos2d-x-3.17.2 2.下载protobuf-3.12.0-rc2:https://github.com/protocolbuffers/protobuf/releases/,解压到:c:/protobuf-3.12.0-rc2 要使cocos2d-x-3.17.2能编译An.. 阅读详情

相关推荐

android studio ProtoBuf导入(附序列化与反序列化)windows版本

因要使用protobuf来通信所以就加呗,没想到还挺麻烦的,弄了一下午,网上一堆乱七八糟的教程,最后就找到一个靠谱的,但是写的不够详细,我就想来写一个适合新手的!是windows版哦! 首先呢,要去https://github.com/google/protobuf/releases去下载2个东西protobuf-java-3.5.1.zip 和protoc-3.5.1-win32.zip,可以

baidu_28220467的博客 1259

protobuf android 编译,protobuf使用(一)android ndk 编译 protobuf-3.6.x windows

首先建议大家看好版本,环境,有可能因为小的变化会造成编译有问题:我的环境是PC OS: windows10(没办法暂时没机器);NDK: android-ndk-r17b-windows-x86_64ProtoBuf : protobuf-3.6.x 下载链接:https://github.com/protocolbuffers/protobuf/tree/3.6.x代码生成工具: prot...

weixin_33544518的博客 991

cocos2dx集成protobuf android版

protoc.exe能同时生成简化的类,便于游戏内业务逻辑使用,不要使用message嵌套和group,记得加上package,否则名字冲突

为Cocos2d-x的Android平台加入Protobuffer支持

为Cocos2d-x的Android平台加入Protobuffer支持 分类: 工作2013-11-27 18:00 386人阅读 评论(1) 收藏 举报 cocos2d-xandroid平台交叉编译libraryprotobuffer 软件: cocos2d-x版本号 protobuffer版本号: NDK版本号: Eclipse:...

weixin_33972649的博客 173

cocos2d-x3.2与Firefly服务端信息交互(protobuf版本)

更深入的cocos2dx与firefly通信代码,包含网络收发消息的完整示例,解析数据使用的是protobuf

Spark入门:从零到能跑的实战教程

Spark 的强大在于它统一了大数据处理的多种场景,从批处理到流处理,从 SQL 到机器学习。对于初学者来说,理解 Spark 的核心理念——内存计算和分布式抽象,是最重要的一步。接着,学会用 PySpark 搭建环境,能读数据、能写 SQL,基本上就入门了。剩下的路,就是通过实战去加深理解。写到这里,相信你对 Spark 已经有了一个比较完整的认识。下一步,不妨自己动手写几个 PySpark 脚本,跑一跑日志数据,或者尝试用 Spark SQL 做一个统计。

Morpheon的博客 1369

Android使用ProtoBuf

Android开发使用ProtoBuf,在src/main/proto目录下新建test.proto。根目录build.gradle添加。模块build.gradle添加。

wolf0706的专栏 1031

深入解析Android Qcom Camera HAL3架构与Camx线程模块

本文深入解析了Android Qcom Camera HAL3架构与Camx线程模块的核心原理。文章以高通芯片平台为例,剖析了从按下快门到生成照片的完整Camera流程分析,重点阐述了Camx框架中线程池、消息队列及Fence同步机制如何协同工作,以实现高效、稳定的多线程并发图像处理,为相机性能优化提供理论基础。

weixin_29184075的博客 220

Cocos2d-x的Android平台添加Protobuffer支持

软件: cocos2d-x版本 protobuffer版本: NDK版本: Eclipse:  之前在网上搜索了很多文章,发现大多文章都没有一个完整的流程,自己摸索了2天,成功添加了protobuffer支持。这里记录下同时分享给其他人。 这里的添加方式雷同于添加cocos2d-x所需要的第三方库。 1. 利用cocos2d-x提供的py

尘封的羽翼 1018

raw_count、tpm、fpkm、rpkm如何选择

转录组测序中常见的数据类型有:raw_count、tpm、fpkm、rpkm。本文进行简单辨析: 一、概念 1 raw_count RNA-seq数据中,raw_count一般是指mapped到基因外显子区域的reads数目。比如说htseq,STAR,或者RSEM等NGS分析流程计算产生的counts值。其中RSEM(RNA-Seq by Expectation-Maximization),考虑到一条read 可能会匹配多个exon位置,故而其产生的为expected_count。 2 TPM

weixin_59289660的博客 1万+

Spring AI + RAG 构建电商智能客服:从 PDF 文档解析到精准问答的全链路实战

核心框架:向量数据库:- PostgreSQL + pgvector (生产推荐)- Redis Stack (轻量级方案)- ChromaDB (快速原型)文档解析:- Apache PDFBox: PDF 文本提取- Spring AI Document Readers: 结构化解析大模型:- 阿里云百炼 (DashScope)- 本地部署:Qwen/ChatGLM/*** 电商领域实体*/@Data@Builder@ToString/*** 商品类型。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 381

为cocos2d-x3.2版本增加protobuffer2.5.0支持

目录[-] 为cocos2d-x3.2版本增加protobuffer2.5.0支持(win32&android) Setp1:新建cocos2d-x 3.2项目 Setp2:复制protobuffer2.5源码到cocos2d-x文件夹 Setp3:打开ProtobufferDemoWithLib项目, 添加libprotobuffer依赖 Setp4:Win32平台直接编译通

yejian2011的专栏 1159

Golang实现企业级AI智能体安全合规自动化检测系统

需求:自动化解析欧盟AI法案、中国网络安全法、美国NIST框架等多国法规,提取具体合规要求并映射到企业技术实现。技术挑战法规文本非结构化,语义复杂,存在大量法律术语与技术术语交叉多语言支持(中文、英文、欧盟24种官方语言)法规动态更新(平均每季度更新2-3次)架构创新性:提出了"规则引擎+AI模型+实时监控"的混合架构,兼顾了合规要求的明确性与智能体行为的动态性。性能突破:通过Golang协程、多级缓存、数据库优化等技术,实现了12,800 req/s的高吞吐量和38ms的低延迟。准确性提升。

shao.bing的专栏 721

2014.7.26 为cocos2d-x3.2版本增加protobuffer2.5.0支持

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34067980的博客 142

SolidWorks+ADAMS双验证:你的机械臂力矩计算真的靠谱吗?

本文探讨了机械臂力矩计算中手工计算的局限性,并介绍了SolidWorks和ADAMS双验证方法的重要性。通过实际案例展示了动态工况下传统计算方法的误差,详细解析了SolidWorks精准质心捕捉和ADAMS动力学仿真的关键技术,帮助工程师构建计算-仿真-实测闭环验证流程,确保机械臂设计的可靠性和安全性。

grafana6viz的博客 228

QGIS三维地形可视化实战:从DEM数据到炫酷3D场景(附Qgis2threejs插件配置)

本文详细介绍了如何利用QGIS和Qgis2threejs插件,将DEM数据转化为交互式三维地形场景的完整工作流。核心内容包括DEM数据准备、坐标系选择(重点对比WGS 84与UTM的差异及影响)、插件核心参数配置、卫星影像与等高线叠加等进阶技巧,并提供了成果导出与常见问题解决方案,帮助用户高效创建可用于网页展示的炫酷3D可视化成果。

mqtt6iot的博客 875

在cocos2dx中应用protobuf

protobuf在各个平台下编译好痛苦!!!  各种失败!! 经过liang't

jijun7885417的专栏 6468

173、LLC谐振变换器的PCB设计实战(布线)

LLC谐振变换器PCB设计实战要点 LLC谐振变换器的PCB设计核心在于控制寄生参数,避免高频振铃和EMI问题。功率回路需确保电流路径最短且紧耦合,谐振电容焊盘需加宽以减少发热。驱动走线应独立于功率回路,避免干扰,并合理控制宽度和长度。变压器绕组结构影响共模噪声,建议原边在外层并加屏蔽铜箔。地平面设计需根据功率等级选择整块或分割,大功率下功率地与信号地应单点连接。谐振电流采样推荐四端开尔文电阻以减少电感干扰。散热需优化铜皮和过孔布局,功率器件优先放置顶层。布局应先确定谐振腔,再排布控制电路。经验上需实测寄生

Jack010169的博客 46

cocos2dx 3.x C++搭建protobuf环境

待续

专注,努力,勤奋 9829

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

cocos2dx 2.x使用probuff

部分内容使用自点击打开链接

1231

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Protobuf2.6集成到cocos2dx(Android和ios平台)

在做当前的宠物游戏的时候,需要用到长链,数据打算使用protobuf,这两天将protobuf在ios项目和android项目进行了集成。 一.准备工作 下载protobuf源码: 下载链接 不太建议去github上下载,因为还需要使用automake  autoconf来配置,直接从谷歌protobuf官网下载,接下来执行四步即可到位。 二.安装 这里默认源码是从谷歌protobu

继续沉淀! 3079

NDK 编译protoc buf lite心得

首先感谢 http://blog.sina.com.cn/s/blog_632dcf7501011us2.html 和 http://blog.sina.com.cn/s/blog_632dcf7501012bo0.html 给予了我很大的帮助。说说自己在编译过程中遇到的一些问题以及处理方法。 我的编译环境为 windows8 + NDK r8e, protoc buf 版本为2.5.0

chujiujiao的专栏 3503

Cocos2d-x Protobuf 的使用

1、因为项目的需求,通信打算使用Protobuf,像我zhe

SharkMarine的专栏 2243
上一篇: protobuf文件嵌套结构实例
下一篇: Launcher与普通Activity的区别
linuxheik
博客等级 码龄15年 865粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值