“一切反动派都是纸老虎 ”(All the reactionaries are the Papertiger)
一开始觉得cocoapods很神秘,过程和步骤很繁琐,可是当你拨开重重迷雾看到最后的结果的时候,你会感慨:不过如此~
打开终端
1.先升级Gem(mac自己带有Gem,不用专门安装)
sudo gem update --system
2.切换cocoapods的数据源,切换成taobao的镜像
【先删除,再添加,查看】
gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
gem sources -l
出现下边 的说明安装正确
3.安装cocoapods
sudo gem install cocoapods
或者(如10.11系统)sudo gem install -n /usr/local/bin cocoapods
4.将Podspec文件托管地址从github切换到国内的oschina,换成国内的镜像
【先删除,再添加,再更新】
pod repo remove master
pod repo add master https://gitcafe.com/akuandev/Specs.git
pod repo update
5.设置pod仓库
pod setup
出现如下情况,说明安装正确
6.测试
【如果有版本号,则说明已经安装成功】
pod —version
pod search afn
出现如下情况,说明安装cocoapods正确
另外:如何在一个工程文件里面建立pod
1、打开终端:cd 拖入该工程文件的文件夹(自动形成路径)回车
2、vim podfile
3、i (进入编辑模式)
4、支持7.0及以上的iOS系统
platform:ios,'7.0'
pod 'AFNetworking'
pod 'Masonry'
5、esc(退出编辑模式)
6、:wq(退出保存)
那么该工程文件里面就有了pod
打开工程文件的时候,不要再打开倒数第二个,而需要打开最后一个工程文件,就能看到pods。
我以为到这里的话就算完了呢,结果,运行报错:
这个错误看似是缺少.a 的错误或者是关于路径的错误,可是pods貌似没有.a ,那么我们考虑路径的问题,那么问度娘,但是关于这方面的资料很少,幸好一个同事孜孜不倦的查找到了解决办法,在此谢谢他,虽然他看不到,哈哈
解决办法如下:
上边说的是什么呢,大概就是说叫你去xcode里面的Product--Scheme--Edit Scheme
然后添加Pods--clean工程--运行工程即可。
基本上到上述步骤的第四步就可以解决这个问题,我的就是,所以后边的5、6没有仔细看,如果你的工程到了第四步还是不行,请参考5、6步骤。
至于为什么添加这个Pods,大概就是路径的问题,笔者亲测,在操作了上述步骤后,在工程运行成功了的情况下,再把添加上得Pods删除掉,再次运行,不会报错,依旧可以运行成功,猜测是xcode记录了相关路径,所以即便去掉这个Pods,也不会影响运行,但是在一次也没有添加过的情况下,会一直报错。至于具体深入的原因,我也说不上来,以后如果想明白了,再回来解释吧,或者哪个网友好心给解释一下,在此谢谢了。
至少,幸运的解决了这个bug。
如果在别的工程文件里面需要安装cocoapods,怎么办呢,不会又重新安装一遍吧?
答案显然不是重新安装一遍,在你进行了上述操作(安装cocoapods的过程)实际上就是在你的电脑上进行了cocoapods的环境配置工作,那么我们在另一个工程文件里面只需要配置好环境即可。
步骤如下:
打开终端--进入你需要安装的那个工程文件的文件夹--vim podfile--i (进入编辑模式)--
platform:ios,'7.0'
pod 'AFNetworking'
pod 'Masonry'
--esc(退出编辑模式)--:wq(退出保存)--pod install
这样就安装好了,再在安装好的工程文件里面进行Product--Scheme--Edit Scheme--Build--Pods添加,运行,就没有错误了。
另外还有一个问题是cocoapods的弊端:例如百度地图的三方库,因为这个库是闭源的,是用framework封装好的,所以在删除旧包,用cocoapods添加新包以后,编译会报错:
这tm说什么呢,,,,大概意思就是在编译或者运行的时候找不到BMKXXX相关的东西,那么我们怎么办呢?
这个报错是因为没有了BMKXXX.framework,所以找不到它们,是因为在删除旧的百度地图的包的时候同时把Build Phases里面的Link Binary With Libraries里面的关于百度地图的framework删除了,这里需要自己手动添加一遍,问题就解决了。这是不开源的弊端,所以以后如果遇到framework的包需要注意删除旧包后需要添加framework。
通通加一遍就好了。。。
可是Product--Scheme--Edit Scheme--Build--Pods里面依旧没有百度的包,不知道咋回事
没有比较就没有区别。
对比着闭源的,我们试着将开源的SDWebImage库通过cocoapods引入工程文件里面,编译和运行是不需要添加任何东西的。
同样的我们可以在Product--Scheme--Edit Scheme--Build--Pods里面看到SDWebImage库。
所以,如果所用的包是闭源的,需要注意添加framework和其他的一些报错,而开源的则没这个必要。
另外需要注意的是:通过cocoapods添加的库,一定要保证名字是官方给的,因为山寨的名字也很多,所以一定要保证三方库的准确性。最简单的方法就是去github上边查一查这个库,记得选择星星最多的:
一般如果三方库支持cocoapods更新的,github会在里面告诉你怎么用cocoapods更新。
参考1、cocoapods安装详细步骤
2、使cocopods管理开源库编译出现Library not found for -lPods问题的解决方法
3、百度地图-配置开发环境iOS SDK
4、github