如何在已经建立好的工程中添加cocoapods添加第三方

如何建立基于CocoaPods的ReactiveCocoa工程
如何建立基于CocoaPods的ReactiveCocoa工程
发布时间: 1:44:02
编辑:www.fx114.net
本篇文章主要介绍了"如何建立基于CocoaPods的ReactiveCocoa工程",主要涉及到如何建立基于CocoaPods的ReactiveCocoa工程方面的内容,对于如何建立基于CocoaPods的ReactiveCocoa工程感兴趣的同学可以参考一下。
ReactiveCocoa 和 CocoaPods 一样也是目前很流行的 能方便和提高效率的框架.
  其实不光ios 学习任何一门语音最快最直接的方法就是上手. 如果单单是看看文档只能是走马观花得到一个感性认识罢了.前两天之前一个公司的测试人员跟我联系说如何学习JAVA,我问他是怎么学的,他说从网上下了好多视频教程,一直在看视频教程,也买了一些书. 我问他敲了多少代码,他说很少. 其实跟他一样的人不少. 我觉得任何事情都不简单,因为看起来简单的事情自己没有实际做过的话 往往会遇到各种各样的问题. 这也是为什么在工作中制定项目进度计划的时候 我尽量给自己和团队中的人多争取时间的最主要的一个因素.
  好了,自己一些啰嗦和感悟. 下面开始正式.
   1:framework 既然是framework 那就跟你用的其他framework没什么区别 无非就是加到工程中引用罢了.不做多余解释
  2:Functional Reavtive Programming 实时响应式编程
  虾米引用被阿里收购后现在先上的mac版本的虾米音乐就是用Reactive Cocoa开发的.用阿里人自己的话来说就是
  好东西啊,以前我们用 KVO 或 Notification 来自动绑定数据,改用 ReactiveCocoa 写以后,代码结构更佳简单清晰,同时代码行数直接减少 60% 以上
  来点直观的对比吧,比如我们想要实现一个需求:当变量中的字符串改变后即时做出相应的反馈 我们用KVO 需要如下这样做
  // In dealloc
  [self removeObserver:self
  上面一坨代码 在应用Reactive Cocoa后 只有短短一行
  [RACObserve(self, someString) distinctUntilChanged] subscribeNext:^(NSString *string) {
  // Do a bunch of things here, just like you would with KVO
  开始动手
  因为我之前安装了CocoaPods,所以我这次写的ReactiveCocoaDemo 是基于CocoaPods的.如果没有安装的可以童鞋,可以直接从github上下载ReactiveCocoa
  前期工作:
  1.打开xcode 创建一个工程,我命名的工程名为ReactiveCocoaDemo,
  2.终端到工程路径下
  cd ReactiveCocoaDemo/
  pod search ReactiveCocoa
  3.配置依赖文件
  vi Podfile
  platform :ios,'5.0'
  pod 'ReactiveCocoa'
  4.下载文件
  pod install /update
  5:打开“Build Phases” 选中相应的target, 添加 RAC 到 “Link Binary With Libraries”.加上libReactiveCocoa-iOS.a
  如下图
  6:在Header Search Paths 中添加$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts/include&
  7:在 “Other Linker Flags” 添加 -ObjC
  8:在ReactiveCocoaDemo-Prefix.pch 将RAC的头文件加进去
  #import &ReactiveCocoa.h&
  现在要实现如下功能
  两个输入框 一个提示的Lable 一个按钮,
  1.当两个输入框的内容相同时 提示文字显示“成功” 按钮可以点击
  2.当任意一个输入框没有输入内容时 提示文字显示“请输入” 按钮不可点击
  3.当输入框非空且两个输入内容不同时 提示“请重新输入” 按钮不可点击
  下面是部分实现代码:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:使用CocoaPods 删除已经配置的类库和移除CocoaPods
使用CocoaPods 删除已经配置的类库和移除CocoaPods
在我们使用CocoaPods非常高效地将一些第三方类库导入到我们的项目中,但是不由得产生一个疑问:如果发现某个类库不适用,甚至是整个CocoaPods我们都不想再在项目中持有,那么我们要怎么把这些东西从项目中清理出去呢?本文介绍的就是如何删除一个或若干个已经在项目中配置好的第三方类库,以及如何将整个CocoaPods从项目中移除(不是在终端中卸载)。
删除项目中已经配置的类库
和(一)类似,我们首先新建一个名为CocoaPodsDemo的项目,然后cd到项目目录下新建一个Podfile文件,并编写该文件,内容如下:
相比(一),我们将要加入的JSONKit的版本从1.1升级到1.5 preview版。
然后pod install,可以看到安装是成功的。
打开CocoaPodsDemo.xcworkspace文件,编译一下,会出现报错:
原因是JSONKit类库出现了各种各样的问题。
这个时候,我们很自然想到要删掉这个类库,然后尝试使用低版本的JSONKit(这也是我在(一)中为什么用1.1作为示例的原因)。
1.打开Podfile文件,删除JSONKit该行,即:
platform:ios, '7.0' &
pod 'AFNetworking', '~& 2.1.0'
pod 'JSONKit', '~& 1.5pre'(删除该行)
pod 'MBProgressHUD', '~& 0.8'
(如果想换成1.1版本,将被删除的行改成pod&'JSONKit-NoWarning',&'~&&1.1'即可)
2.cd到当前项目目录下,重新执行pod install命令。输出信息如下(留意Removing JSONKit):
3.重新打开xcworkspace文件,可以看到JSONKit被移除,再次编译将会通过:
在项目中移除CocoaPods
如果你觉得CocoaPods让你的项目出现了问题,不好用甚至是恶心,想将其从项目中彻底移除,也有方法:
1.删除工程文件夹下的Podfile、Podfile.lock和Pods文件夹。
2.删除xcworkspace文件。
3.打开xcodeproj文件,删除项目中的libpods.a和Pods.xcconfig引用:
4.打开Build Phases选项,删除Check Pods Manifest.lock和Copy Pods Resources:
完成,编译运行,无错通过。
个人感觉,从项目中移除某个类库还算是可以的,但是移除整个CocoaPods就有点麻烦了(也可能是我没有找对方法),希望CocoaPods能作出改进。
另外,如果在编辑工程时不小心删除了某个文件,如Podfile.lock,那么我们就要用上面的方法先移除整个CocoaPods,然后重新建立Podfile和使用pod install命令重装CocoaPods(有够麻烦的)。
文章链接:http://blog.csdn.net/jymn_chen/article/details/
我的热门文章
即使是一小步也想与你分享CocoaPods 的详细安装步骤,使用方法以及安装过程中出现的各种错误总结
iOS开发时,项目中会引用许多第三方库,CocoaPods(/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库。其在Github上开源/CocoaPods/CocoaPods
CocoaPods的下载安装需要在Ruby环境下进行。
1、Ruby环境搭建
MacOS本身自带Ruby,但是需要更新一下版本。首先查看一下你的ruby版本,看看是否满足安装cocoapods时ruby的安装版本要求,因为我第一次安装在没有更新Ruby的情况下就失败了。
a. 查看下当前ruby版本:
打开终端输入:
终端输入:ruby -v(确实安装了,不过用这个版本接下来工作失败了,所以更新下ruby)
ruby1.8.7(patchlevel358)[universal-darwin12.0]
ritekiMac-mini:PodTestlucky$
b. 更新ruby
升级ruby终端输入:gem update --system
移除现有的Ruby
终端输入:gemsources--removehttps://rubygems.org/
使用china镜像:
终端输入:gem source -a https://gems.ruby-china.org(注意此处也可以把Ruby镜像指向taobao,避免被墙(二者可选一),如下)
gem sources -a http://ruby.taobao.org/ 注意:这里至()已被更新为淘宝ruby镜像:gem sources -a https://ruby.taobao.org/
第一个命令是移除官方源,因为在不翻墙的情况下,使用起来比较慢;第二个命令是添加ruby-china的RubyGems镜像(很多旧教程都是说使用taobao的gem源,但是taobao的gem源已经停止维护了,
c.接下来运行一个命令查看是否成功添加了ruby-china的gem源:
终端输入:gemsource
出现如下表示成功:
ritekiMac-mini:~lucky$gemsources-l
***CURRENTSOURCES***
https://gems.ruby-china.org
2、下载安装CocoaPods
终端输入:sudo gem install cocoapods
出现如下表示成功:
CHANGELOG:
Doneinstallingdocumentationforcocoapodsafter10seconds
1geminstalled
这样就下载安装好了CocoaPods
b.安装结束后,需要运行一下命令初始化CocoaPods:
终端输入:pod setup
出现如下表示安装完成
sion at /CocoaPods/CocoaPods/releases/tag/1.2.0.beta.1
Setup completed
没有什么错误的话,就算了安装结束了。
可能存在的错误:
a. gem版本过老:
gem是管理Ruby库和程序的标准包,如果它的版本过低也可能导致安装失败,解决方案自然是升级gem,
$sudogemupdate--system
b. 安装完成后,执行pod setup命令时报错:
/Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:298:in`to_specs':Couldnotfind'cocoapods'(&=0)among6totalgem(s)(Gem::LoadError)
from/Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in`to_spec'
from/Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:53:in`gem'
from/Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in`'
这就是路径设置的问题,可以通过执行:
$rvmuseruby-1.9.3-p448
解决该问题
3、使用CocoaPods
a. 新建一个项目,名字PodTest(可以随便写) (这个项目最好放在桌面便于找)
b.创建Podfile
打开终端,使用cd命令定位到需要使用CocoaPods的项目根路径。(注意:包含PodTest文件夹、PodTest.xcodeproj、PodTestTest的那个总目录)
$cd/Users/wangzz/Desktop/CocoaPodsTest
$touchPodfile
终端输入:cd (你的项目的路径,即在你的项目路径的前面+cd)如上图所示, 注意:这里cd 和后面的路径间要有空隔,否则就会爆照不到文件的错误(我就是一直错在在这里)
再次输入:touchPodfile
首先进入到工程的根目录下,就能看到如图的Podfile文件
(PS:Podfile文件也可以不放在工程的根目录下,只是会稍微麻烦点,在下一篇文章中会有介绍,敬请关注。)
2、编辑Podfile
根据需要,我们可以在Podfile文件中写入需要用到的第三方库,以ORStackView、AFNetworking、SwiftyJSON三个库为例,我的Podfile内容如下:
platform:ios,&10.0'
#use_frameworks!个别需要用到它,比如reactiveCocoa MyApp为你的项目的名字
pod'AFNetworking','~&2.6& //这里需要添加什么第三方就在里面添加 再在终端执行pod install / pod update 即可
pod'ORStackView','~&3.0'
pod'SwiftyJSON','~&2.3'
target'MyApp'do
终端输入:执行pod install / pod update
CocoaPods报错:The dependency `AFNetworking ` is not used in any concrete target
请点击进去参考:
报错误[!] Pods written in Swift can only be inte add `use_frameworks!` to your Podfil请点进去参考:
可能是要添加的这个库 不支持swift导致
解决办法:在podfile里面添加 use_frameworks!
platform:ios,'8.0'
#use_frameworks!个别需要用到它,比如reactiveCocoa MyApp为你的项目的名字
pod'AFNetworking','~&2.6'
pod'ORStackView','~&3.0'
pod'SwiftyJSON','~&2.3'
use_frameworks! //在这里添加,设置支持swift,如果不引进swift相关的类则可以不用写
target'MyApp'do
就是在加入你需要的那些库之后最后再加一句use_frameworks!
3、执行导入命令
准备工作都完成后,开始导入第三方库:
[objc]view plaincopy
$cd/Users/wangzz/Desktop/CocoaPodsTest
$podinstall
首先进入工程根目录,然后执行pod install命令,CocoaPods就开始为我们做下载源码、配置依赖关系、引入需要的framework等一些列工作,命令的执行结果打印出来如下:
Analyzingdependencies
Downloadingdependencies
InstallingAFNetworking(2.1.0)
InstallingJSONKit(1.5pre)
InstallingReachability(3.0.0)
GeneratingPodsproject
Integratingclientproject
[!]Fromnowonuse`CocoaPodsTest.xcworkspace`.
这就说明pod install命令执行成功了。再来看看工程根目录发生的变化,如下图:
可以看到,工程的根目录下多了三个东西:CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目录。
再看看刚才执行完pod install命令打印出来的内容的最后一行:
[objc]view plaincopy
[!]Fromnowonuse`CocoaPodsTest.xcworkspace`.
提示我们从现在起,我们需要使用CocoaPodsTest.xcworkspace文件来开发,
原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理。
即:CocoaPodsTest.xcworkspace,
说明事项:
对于工程发生的变化,有几点需要说明:
第三方库会被编译成静态库供我们正真的工程使用
CocoaPods会将所有的第三方库以target的方式组成一个名为Pods的工程,该工程就放在刚才新生成的Pods目录下。整个第三方库工程会生成一个名称为libPods.a的静态库提供给我们自己的CocoaPodsTest工程使用。
我们的工程和第三方库所在的工程会由一个新生成的workspace管理
为了方便我们直观的管理工程和第三方库,CocoaPodsTest工程和Pods工程会被以workspace的形式组织和管理,也就是我们刚才看到的CocoaPodsTest.xcworkspace文件。
原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理。
打开CocoaPodsTest.xcworkspace,界面如下:
工程的目录结构还是非常明显的。
在项目中引用刚才添加的第三方库的头文件,执行编译操作,果断成功!
CocoaPods: pod search 搜索类库失败的解决办法
执行后可能会一直停在
Setting up CocoaPods master repo然后(很久)会出现如下错误:
[!] Failed to connect to GitHub to update the CocoaPods/Specs specs repo - Please check if you are offline, or that GitHub is down
解决办法是:
这说明CocoaPods还不能正常使用,需要更新pod,下载它的一些依赖包;在终端中输入:
$ pod setup
过一段时间之后,你会在终端中看到跟上面同样的红色的错误信息。
这说明某些环境原因导致pod更新不了,可能原因有,1)gem版本太低;2)github无法链接;3).cocoapods目录下的配置信息错误。我们可以一个一个来排除,
首先更新gem到最新版本,在终端中输入:
$ sudo gem update --system
然后检查是否可以ping通github,在终端中输入:
然后查看pob repo list:
$ pod repo list
说明Cocoapods在将它的信息下载到~/.cocoapods里;
cd到该目录里,用du -sh *命令来查看文件大小,结果显示0 repos,说明没有安装成功;
在终端输入:
cd ~/.cocoapods
进入cocoapods文件后在终端输入:du -sh *
重新执行pod setup,过一段时间后提示setup completed,在终端中输入pod list,展示出安装列表;
这样总算安装好了。接下来再一次输入:
pod search AFNetworking
执行pod setup
其实在你安装CocoaPods执行pod install时,会默认操作pod setup,然而由于中国强大的墙可能会pod setup不成功。这时就需要手动执行pod setup指令,如下:
终端输入:pod setup
会出现Setting up CocoaPods master repo,稍等几十秒,最底下会输出Setup completed。说明执行pod setup成功。
如果pod search操作还是搜索失败,如下:
终端输入:pod search AFNetworking
输出:Unable to find a pod with name, author, summary, or descriptionmatching 'AFNetworking&,但是我输入pod search pop,却有相应的结果,会出现很多的第三方库。这时就需要继续下面的步骤才会得到上面你所搜索的库。
删除~/Library/Caches/CocoaPods目录下的search_index.json文件
pod setup成功后,依然不能pod search,是因为之前你执行pod search生成了search_index.json,此时需要删掉。
终端输入:rm ~/Library/Caches/CocoaPods/search_index.json
删除成功后,再执行pod search。
执行pod search
终端输入:pod search afnetworking(不区分大小写)
输出:Creating search index for spec repo 'master'.. Done!,稍等片刻&&&&&&就会出现所有带有afnetworking字段的类库。
4.输入pod search afnetworking提示如下的错误:
[!]Unabletofindapodwithname,author,summary,ordescriptionmatching'&&&&&&'
对于有些类库确实是在Cocoapods中所不存在的,为了确定我们搜索的库是不是真的在Cocoapods的Repos中存在,我们可以到https://cocoapods.org/中进行搜索。
5.输入pod search后出现如下:
这是他的一些搜索要求,可不必管,继续以上的pod search,若出现错误可参考以上的方法解决。

我要回帖

更多关于 ios 添加cocoapods 的文章

 

随机推荐