iOS開發打包protobuf靜態庫

Home / iOS MrLee 2016-4-7 3115

简介

protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
看完简介就知道它是干嘛的吧,项目中需要它,但是不想一起编译节约时间的话,那么我们可以打包成静态库直接拿来用。
1、下載 protobuf-2.5.0-mast ,並解壓
2、在解壓後的  目錄內部建立壹個 目錄 名字隨便寫,我這裏寫的 是 xcodeProject 如圖:


3、新建壹個 靜態庫工程  在剛才 的  xcodeProject 文件夾內.


4,將工程中 自帶的 哪個 類 刪除 ,也就是刪除 下圖 中 的  protobufXcode6 那個類 。
5, 將  protobuf-2.5.0-master/src/google  文件夾 添加到  剛才新建的 靜態庫工程 中 ,註意 不需要 勾選 copy 復選框,註意勾選add to target ,如圖 。


6、 將  google/protobuf/compiler/文件夾 從工程中 移除 。
7、 將 google 中所有的 test 文件 刪除 ,可在 文件中 搜 test 如圖 ,然後 刪除  google 文件夾中 包含 test 的文件 如圖。


8、添加 頭文件 引用 路徑,如圖。


9、生成 config.h 頭文件 。 打開終端 , cd 到 protobuf 跟目錄下 , 運行  ./configure 腳本   就可以生成 config.h 文件 ,生成後 將 config.h 文件 添加到 xcode  工程 中 ,如圖


10、 修改 平臺 支持 宏定義 ,  將下面三行 添加到  stubs/platform_macros.h  中 ,如下圖。
#elif defined(__aarch64__)
#define GOOGLE_PROTOBUF_ARCH_ARM 1
#define GOOGLE_PROTOBUF_ARCH_64_BIT 1


11、 命名空間修改 ,由於  APPLE 官方 已經 在 手機的 框架內 使用了 google 的 protobuf  ,如果妳 依然使用 protobuf 中的 命名空間 google 的話 ,在 64 的 系統中 會 導致 崩潰 ,所以 需要修改 命名空間 ,如下圖 添加 壹行 宏定義 ,
添加位置 , google/protobuf/stubs/common.h  如圖
#define google googleZhiGuang


12、添加需要 copy 的 頭文件  ,如下圖 ,點擊 加號 以後  選中 所有的  .h 文件  然後 點擊 Add


13 、修改  Scheme ,切換到 Run 選項 ,點擊 右側的  info ,build configuration 設置為  Release , 如圖 。



14,最後 直接  build 就可以生成了  ,註意 編譯的時候 選擇 模擬器的話 編譯 出來的  是  模擬器 對應 的  i386 的 架構的 ,編譯 armv7,armv7s,arm64 的 需要 選擇 手機 ,沒有手機的話就 選 ios Device  。
15、 找到  lib 和 頭文 件 ,
build 完 之後 ,如圖 ,在  product 文件 上 點擊 右鍵 showinfinder 就可以了 ,include 文件夾中是 對應的 頭文件 。

本文链接:https://www.it72.com/8791.htm

推荐阅读
最新回复 (0)
返回