iOS使用protobuf环境的配置
配置protobuf需要HomeBrew工具或则是MacPort。如没有安装,则需要配置HomeBrew工具或则是MacPort。
步骤1(环境配置前的准备工作):
1:使用HomeBrew
brew install autoconf
brew install automake
brew install libtool
2:使用MacPort(使用了HomeBrew,请忽视这一步。当然也可以执行这一步)
sudo port install autoconf automake libtool
步骤2(下载谷歌的protobuf库):
下载基于c++的protobuffer:protobuffer
步骤3(生成将.proto文件编译成oc类的工具):
1: cd到下载下来的文件的目录(以下的步骤需要在vpn的情况下进行处理,如果没有开通,网上有解决方法)
例如cd/Users/macxu/Desktop/protobuf-master
2:输入
./autogen.sh
3:输入
./configure
4:输入
make
# 如果希望安装protoc,执行下面的命令
make install
(最好生成编译工具)
步骤4(工程中使用protobuf):
1:创建proto文件指定数据格式,可以选择proto2和proto3格式,它们有些细微的区别,在生成代码的时候会提示的,具体情况查看文档LanguageGuide proto3。下面使用proto3格式,并且保存为Person.proto。(请在windows环境下生成以下的文本,mac平台下好像不能够生成。编译成oc的时候好像会报错)
syntax = "proto3";
message Person {
string name = 1;
int32 uid = 2;
string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;}
message PhoneNumber {
string number = 1;
PhoneType type = 2;}
repeated PhoneNumber phone = 4;}
2:使用protoc工具生成Objective-C代码。其中--proto_path=后跟需要处理的proto文件所在的文件夹,--objc_out=指明生成的是Objective-C代码以及目标文件存放路径,最后是需要处理的文件。(objc_out表示生成oc下的文件)
protoc --proto_path=. --objc_out=. Person.proto
3:处理完成后,生成两个文件,分别是Person.pbobjc.h和Person.pbobjc.m。这两个文件是采用的手动引用计数,因此在加入项目后需要设置它们的编译参数。
-fno-objc-arc
4:为了方便管理,我们直接将Protocol Buffers中的iOS静态库项目引入进来

(ps:里面有可能会有mac下的工程,请手动删除)(最好在新建的工程目录下新建一个文件夹,用来添加需要添加的工程例如protoTool文件夹)。

5:在工程下面添加静态库项目,

6:设置依赖和连接库。


7:记得设置Header Search Paths或者User Header Search Paths。将在本地所在的文件的上一层文件夹的路径添加进来。

现在就可以和使用普通的oc类一样使用Person.pbobjc.h。
8:具体的使用代码:
Person *person = [[Person alloc] init];
person.name= @"Zhangsan";
person.email= @"diveinedu@qq.com";
person.uid=23;
NSData *data = [person data];
NSString*path = @"/Users/apple/Desktop/test.data";
[data writeToFile:path atomically:YES];
NSData *ldata = [NSData dataWithContentsOfFile:path];
Person *p = [Person parseFromData:ldata error:nil];
ps:添加原生的库的时候有可能遇到问题的解决办法:
1:以前没有直接添加过带静态库的项目。添加的时候直接将需要添加的项目拖进去是不对的,不对的,不对。应该用add files来添加。
2:添加header search时,出现找不到路径的问题。需要添加被添加工程所在路径的上一层文件夹的路径。
转自:https://www.jianshu.com/p/e835376b2ba9
iOS使用protobuf环境的配置的更多相关文章
- cocos2d-x学习记录第一篇-环境变量配置
最近准备学习cocos2d-x,之前一直是做iOS开发的,算是零基础开始学习吧. (此条后来修改,不用配置下面这些东西,下载一个cocosstudio就可以了,直接在里边就创建工程了) 本人用Mac电 ...
- Cordova - 使用Cordova开发iOS应用实战1(配置、开发第一个应用)
Cordova - 使用Cordova开发iOS应用实战1(配置.开发第一个应用) 现在比较流行使用 html5 开发移动应用,毕竟只要写一套html页面就可以适配各种移动设备,大大节省了跨平台应用的 ...
- 使用VSTS/TFS搭建iOS持续集成环境
TFS 自2015版开始支持跨平台的持续集成环境,通过提供开源的build agent为 Windows / linux / macOS 提供了统一的持续集成环境管理能力.这篇文章给大家介绍一下如何使 ...
- ios搭建开发环境
ios搭建开发环境 好久就想试水IOS开发了,由于开发环境限制,一直局限于理论和虚拟机,近来入手了MacBook Pro,也来尝尝鲜,笔者也是现学现总结,如果有不足,请指正. IOS开发必备MAC O ...
- IOS开发基础环境搭建
一.目的 本文的目的是windows下IOS开发基础环境搭建做了对应的介绍,大家可根据文档步骤进行mac环境部署: 二.安装虚拟机 下载虚拟机安装文件绿色版,点击如下文件安装 获取安装包: ...
- 【1】windows下IOS开发基础环境搭建
一.目的 本文的目的是windows下IOS开发基础环境搭建做了对应的介绍,大家可根据文档步骤进行mac环境部署: 二.安装虚拟机 下载虚拟机安装文件绿色版,点击如下文件安装 获取安装包: ...
- 使用Jenkins+Calabash+Cocoapods搭建iOS持续集成环境
使用jenkins+calabash+cocoapods搭建ios持续集成环境 持续集成 持续集成到底是什么呢?依据敏捷大师Martin Fowler的定义: 持续集成是一种软件开发实践. 在持续集成 ...
- iOS React Native 环境的搭建
react native 的官网:http://reactnative.cn/docs/0.47/getting-started.html#content --iOS如何搭建mac版的环境 1.配置 ...
- appium+ios+macaca自动化测试环境部署
环境准备(供参考) mac v10.14.4 xcode v10.2 python v3.6 确保上述环境已满足,即可开始搭建appium+ios测试环境 1 jdk安装 下载mac版本的jdk并安装 ...
随机推荐
- Servlet的API
(1)Servlet接口中的方法 1)init(ServletConfig arg0) 何时执行:servlet对象创建的时候执行 ServletConfig : 代表的是该servlet对象的配置信 ...
- centos中切换图形与命令行界面
1.在命令行的centos中安装图形化 配置本地源 [root@localhost yum.repos.d]# yum clean all [root@localhost yum.repos.d]# ...
- python—004
一.集合(set) 1.定义:不同的元素组成,无序排列的,可哈希的值(存放不可变类型:数字.字符串.元组) s={1,2,'ww',3,4,5,6,7,8,'ee'}print (type(s))pr ...
- Cocos2d-X多线程(4) 在子线程中进行网络请求
新版本的android系统已经不允许在UI线程中进行网络请求了,必须新建一个线程. 代码实操: 头文件: #ifndef __TestThreadHttp_SCENE_H__ #define __Te ...
- python基础及安装
一.python介绍 介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器.Python这个名 ...
- form 源码刨析
def clean_name(self) value = self.cleaned_data.get('name') if "金-瓶-梅" not in value: raise ...
- Spring Boot 2.0 多数据源编程
多数据源配置 创建一个Spring配置类,定义两个DataSource用来读取application.properties中的不同配置.如下例子中,主数据源配置为spring.datasource.p ...
- Linux MFS分布式文件系统介绍和安装
MFS分布式文件系统 mooseFS(moose 驼鹿)是一款网络分布式文件系统.它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源.MFS也像其他类unix文件系统一样,包含了层级结构(目 ...
- redis内存满了怎么办?
redis最为缓存数据库,一般用于存储缓存数据,用于缓解数据库压力,但是缓存太多,内存满了怎么办呢.一般有以下几种方法 一.增加内存 redis存储于内存中,数据太多,占用太多内存,那么增加内存就是最 ...
- Python文件的几种读写方式
1). "w "写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写 "w+ "是读写内容,只要沾上w,肯定会清空原来的文件2 ...