您的位置:首页 > 移动开发 > IOS开发

IOS 使用protobuf

2016-05-23 16:19 489 查看
今天开始做项目中的即时聊天模块,客户端用到了protobuf就从gitHub上下载了protobuf-objc,readme文旦
中安装brew的命令报400错误,然后我就到Home-brew官网看了一下并使用里面的命令安装
1、打开终端,写入命令并执行:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"[/code] 2、如果提示缺少套件执行
$ brew install wget
3、Homebrew 会将套件安装到独立目录,并将文件软链接至 
/usr/local
$ cd /usr/local
$ find Cellar
Cellar/wget/1.16.1
Cellar/wget/1.16.1/bin/wget
Cellar/wget/1.16.1/share/man/man1/wget.1

$ ls -l bin
bin/wget -> ../Cellar/wget/1.16.1/bin/wget
的所有文件均会被安装到预定义目录下
4、轻松创建您的 Homebrew 程式。
$ brew create https://foo.com/bar-1.0.tgz Created /usr/local/Library/Formula/bar.rb
5、
$ brew edit wget# 使用 $EDITOR 编辑!
6、
Homebrew 的程式都是简单的 Ruby 脚本:
class Wget < Formulahomepage "https://www.gnu.org/software/wget/"url "https://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz"sha256 "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd"def installsystem "./configure", "--prefix=#{prefix}"system "make", "install"endend
7、从github上下载protobuf-objc-master
下载链接
解压。    依次执行 brew -v
8、在终端cd到这个解压好的文件夹下,如图在终端中打cd 然后用鼠标将文件夹拖入终端即可得到路径
9、cd ./scripts里面,ls命令可以看到build.sh等文件
10、执行$ ./build.sh报错:+ ./autogen.sh./build.sh: line 5: ./autogen.sh: No such file or directory,发现下载下来的文件夹里面有autogen.sh文件但在上一层目录,所以讲autogen.sh文件移到
scripts
文件夹中重新执行
11、遇到新错:autoreconf: 'configure.ac' or 'configure.in' is required,找到configure.ac文件将其放入script文件夹;
12、no 'Makefile.am' found for any configure outputautoreconf: automake failed with exit status: 1
找到Makefile.am
文件将其放入script文件夹;
13、Makefile.am:5: error: required directory ./src/compiler does not exist,将整个src文件夹拖到scripts。
[/code]
14、接着执行$ ./build.sh
[/code]
看到好多以YES结尾的logo最后提示:
[/code]
make[2]: Nothing to be done for `all-am'.+ make installMaking install in src/compiler ../.././install-sh -c -d '/usr/local/bin'  /bin/sh ../../libtool   --mode=install /usr/bin/install -c protoc-gen-objc '/usr/local/bin'libtool: install: /usr/bin/install -c protoc-gen-objc /usr/local/bin/protoc-gen-objcmake[2]: Nothing to be done for `install-data-am'.make[2]: Nothing to be done for `install-exec-am'.make[2]: Nothing to be done for `install-data-am'.
[/code]
a.这句提示是说明你已经编译好了,而且没有对代码进行任何改动。若想重新编译,可以先删除以前编译产生的目标文件:make clean然后再make b.出现这种情况解决方法:a.make clean 清除安装时留下的文件b.在运行一下ldconfig[/code]
(参考文章:http://www.cnblogs.com/Arlen/articles/1756636.html)
参考文章:http://www.2cto.com/kf/201503/382440.html15、找到ProtocolBuffers.xcodeproj文件拖入自己的文件夹16、17、配置header路径,将class路径直接拉入路径添加(或者这个工程先拷贝到自己的工程目录下然后再做这个操作,这样自己的工程文件夹归档的时候方便一点)配置Framework:Build Phases->Target dependencies-> 添加18、当然也可以用cocoaPods也可以,方便管理,不过我项目用的svn用cocoaPods好像不太方便就放弃了。在Podfile添加下面这个句子platform : ios , 7.0pod ProtocolBuffers,~> 1.9.7在保存之后,到终端,cd到工程里面,
pod install
等一会,cocoapod就会帮我们添加好,以后我们就应该打开 project的workspace,因为添加了pod作为子工程。20、终点在你的工程里面,新建一个文件夹,命名假如叫Protobuf 在这个文件夹里面新建一个proto文件。例如要在本地储存用户信息,那么就新建一个user.proto 里面内容可以如下?
上面这个例子包括了几个要素。 一个是包名。包的概念在object c里面没有,java里面有,c++里面namespace也是差不多意思。 顺便提一下,oc里面一般在库名前面添加两个字母,起的作用差不多就是包的作用,作为类的上一层组织结构。 例如官方的NS,例如AFNetworking这种第三方类库的AF。回到正题。编写pb文件,第二个要素是message 一个message就是一个整体,里面有哪些必要的内容,哪些可选的内容。详细的proto语法随便一找一大把,就不啰嗦了。写好了proto,接下来就是编译这个proto文件,protobuf-objc这个类库会编译声称一些源码,是读写proto数据的接口API。 编译命令如下: 先打开工程,建议单独新建一个文件夹作为输出路径,例如工程下新建文件夹Gen,用来放generate出来的.pb.h文件&&.pb.m文件 打开终端 cd到工程路径下
protoc --plugin=/usr/local/bin/protoc-gen-objc person.proto --objc_out=./Gen
参考文章:iOS中从零开始使用protobuf

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: