进阶-pod实战

转发 请添加原作者地址 谢谢

转发 请添加原作者地址 谢谢

转发 请添加原作者地址 谢谢

组建场景

  • 公司项目使用微信IM 的Mars(C++写的)静态库。
  • 数据传输使用了Google的protobuf库
  • 公司提供协议文件是 MRC文件。

所以 这个私有库 创建涉及到添加静态库、添加C++配置、设置MRC文件

step一、

833DC211-B573-4482-9C3C-F6FD78ED8C44.png

step 二、

使用git仓库地址clone到本地目录下
使用命令行 clone 或者sourceTre

step 三、

使用git命令创建组建项目(在本地仓库下)
pod lib create XBMarsSDK


4CFC098A-BB7B-4CD0-9764-146E8C4996BD.png

生成如下工程结构

image.png

image.png
image.png

step四、

在Classes文件下拖入需要的类文件

image.png

因为,IM协议是MRC的类文件所以单独放到了ProtoBuffile,ARC类文件放到Arc文件中,方便配置 .podspec文件,因为 ARC文件需要单独设置。
Framework中存放需要的三方库,此处为 Mars.framework库

step五、

在Example文件下执行 命令 $ pod install
结果:

image.png

一下处理各种编译错误 通过修改.podspec和podfile来配置项目

1. 找不到mars文件
image.png

这是因为 私有库找不到mars。需要在.podspec文件中配置

  • 在.podspec文件中 添加
s.vendored_frameworks = 'XBMarsSDK/Framework/mars.framework' //****指定三方库的位置
  • 执行pod install 并且编译 项目, 编译不通过 报一下错误
2. 缺少protobuf库
image.png

因为私有库 依赖 protobuf

  • 在****.podspec文件中 添加依赖关系**
 s.dependency 'Protobuf'**
  • 执行pod install 并且编译 项目**
3 .Could no build module ‘Protobuf’ (特别注意)
image.png

原因: pod lib create <> 命令创建时,podfile文件默认加上了#use_frameworks!
它的意思是默认使用动态库,而protoBuf使用c++会有冲突是静态库。主要用在swift语言中,因为swift没有静态库只有动态库。与静态库冲突
Podfile文件中加入“use_frameworks!”表示打包成framework动态库(ios8之前是静态库),如果没有这个配置,则最终打包成.a 静态库**
解决:删除podfile中的#use_frameworks!

4.执行pod install 并且编译 项目

IM协议文件是MRC所以编译报错


image.png

原因:因为协议文件是MRC文件,需要添加-fno-objc-arc

解决: 在.podspec文件中 添加

//指定Arc文件下全是ARC类,其他类全是MRC,会被标记-fno-objc-arc
s.requires_arc = 'XBMarsSDK/Classes/Arc/**/*' 

执行pod install 并且编译 项目

5 .配置库支持C++
image.png

解决:spec文件中添加

s.user_target_xcconfig =  {'OTHER_LDFLAGS' =>** **[****'-lc++'****]****} //** **这会影响 引入此pod的整个工程**

结果如下图

image.png

执行pod install 并且编译 项目

6. 没有添加mars 所依赖的 系统库
image.png

原因: 缺少mars需要的系统库
解决:

  • 配置podspec文件,添加依赖系统库
s.libraries = 'z','resolv.9' //设置静态库
s.frameworks = 'CoreTelephony','SystemConfiguration','CoreGraphics' //动态库
  • 执行pod install 并且编译 项目

项目终于编译通过

step 六、

经过各种配置之后项目可以运行,基本的mars配置 已经完成
此时 我们需要在example项目中运行,测试,直至没有问题,发布私有库
此时 我们需要在example项目中运行,测试,直至没有问题,发布私有库
此时 我们需要在example项目中运行,测试,直至没有问题,发布私有库

step 七、

代码提交到远程仓库

关键:并且 打 tag提交到远程仓库 0.1.0和podspec文件版本一致

step 八、验证私有库 .podspec文件有无问题

$pod lib lint  //检验本地pod
$pod spec lint //检验远程pod

// 选用参数=
--allow-warnings //用它忽略警告
--verbose //打印执行过程详细信息
--use-libraries //如果使用了静态库 需要使用
--sources=https://github.com/CocoaPods/Specs //如果库依赖了三方的pod库需要设置,可以设置私有库

验证pod库命令

  • 验证本地pod
    $ pod lib lint --use-libraries --allow-warnings
    结果:XBMarsSDK passed validation. //验证通过

*校验spec文件
$pod spec lint --use-libraries --allow-warnings
结果:XBMarsSDK.podspec passed validation. //验证通过

  • 共有库需要注册trunk
$pod trunk register email.@[163.com](http://163.com) ‘name’ --verbose

邮箱会收到邮件验证,验证之后在终端

**$pod trunk me**

*推送到远程git

//第一种
**$pod trunk push XBMarsSDK.podspec //****这是公共库命令行**
//第二种
**$pod repo push ios_specs XBMarsSDK.podspec** **//这是私有库命令行**

//执行

$pod trunk push XBMarsSDK.podspec --verbose --use-libraries --allow-warnings

注意如不加 —use-libraries --allow-warnings会有问题

附加:

pod search podName如果没有找到 删除cocoapods缓存

$ rm ~/Library/Caches/CocoaPods/search_index.json

$ pod setup

$pod cache list //列出本地缓存三方库

$pod cache clean AAA //清理

//更新本地repo

git repo update

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容