CocoaPods报错:The dependency `AFNetworking ` is not used in any concrete target
请点击进去参考:
报错误[!] Pods written in Swift can only be integrated as frameworks; add `use_frameworks!` to your Podfil 请点进去参考:
CocoaPods详解之-Podfile.lock参考: http://blog.csdn.net/u012460084/article/details/45721857
使用cocoapods时常见错误: http://www.jianshu.com/p/dfc7b93e67eb
参考至: http://blog.csdn.net/meegomeego/article/details/24005567
一、概要
iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库。
其 源码
在Github上开源https://github.com/CocoaPods/CocoaPods
二、安装
CocoaPods的
下载安装
需要在Ruby环境下进行。
1、Ruby环境搭建
Mac OS本身自带Ruby,但是需要更新一下版本。首先查看一下你的ruby版本,看看是否满足安装cocoapods时ruby的安装版本要求,因为我第一次安装在没有更新Ruby的情况下就失败了。
a. 查看下当前ruby版本:
打开终端输入:
终端输入:ruby -v(确实安装了,不过用这个版本接下来工作失败了,所以更新下ruby)
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
ritekiMac-mini:PodTest lucky$
b. 更新ruby
升级ruby终端输入:
gem update --system
移除现有的Ruby
终端输入:
gem sources --remove https://rubygems.org/
使用china镜像:
终端输入:gem source -a https://gems.ruby-china.org(注意此处也可以把Ruby镜像指向taobao,避免被墙(二者可选一),如下)
gem sources -a http://ruby.taobao.org/
注意:这里至(
2016-01-20)
已被更新为
淘宝ruby镜像:
gem sources -a https://ruby.taobao.org/
第一个命令是移除官方源,因为在不翻墙的情况下,使用起来比较慢;第二个命令是添加ruby-china的RubyGems镜像(很多旧教程都是说使用taobao的gem源,但是taobao的gem源已经停止维护了,
c.接下来运行一个命令查看是否成功添加了ruby-china的gem源:
终端输入:gem source
出现如下表示成功:
- ritekiMac-mini:~ lucky$ gem sources -l
- *** CURRENT SOURCES ***
- https://gems.ruby-china.org
2、下载安装CocoaPods
a.
终端输入:sudo gem install cocoapods
出现如下表示成功:
CHANGELOG:
…...
Done installing documentation for cocoapods after 10 seconds
1 gem installed
这样就下载安装好了
CocoaPods
b.安装结束后,需要运行一下命令初始化CocoaPods:
终端输入:pod setup
出现如下表示安装完成
sion at https://github.com/CocoaPods/CocoaPods/releases/tag/1.2.0.beta.1
Setup completed
没有什么错误的话,就算了安装结束了。
可能存在的错误:
a. gem版本过老:
gem是管理Ruby库和程序的标准包,如果它的版本过低也可能导致安装失败,解决方案自然是
升级gem,
升级gem
- $ sudo gem update --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': Could not find 'cocoapods' (>= 0) among 6 total gem(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 `<main>'
这就是路径设置的问题,可以通过执行:
-
- $ rvm use ruby-1.9.3-p448
-
解决该问题
3、使用CocoaPods
a. 新建一个项目,名字PodTest(可以随便写) (这个项目最好放在桌面便于找)
b.创建Podfile
打开终端,使用cd命令定位到需要使用CocoaPods的项目根路径。
(注意:包含PodTest文件夹、PodTest.xcodeproj、PodTestTest的那个总目录)
- $ cd /Users/wangzz/Desktop/CocoaPodsTest
- $ touch Podfile
终端输入:cd (你的项目的路径,即在你的项目路径的前面+cd)如上图所示,
注意:这里cd 和后面的路径间要有空隔,否则就会爆照不到文件的错误(我就是一直错在在这里)
再次输入:touch Podfile
首先进入到工程的根目录下,就能看到如图的
Podfile
文件:
(PS:Podfile文件也可以不放在工程的根目录下,只是会稍微麻烦点,在下一篇文章中会有介绍,敬请关注。)
2、编辑Podfile
根据需要,我们可以在Podfile文件中写入需要用到的第三方库,以
ORStackView
、
AFNetworking
、
SwiftyJSON
三个库为例,
我的Podfile内容如下:
终端输入:执行pod install / pod update
CocoaPods报错:The dependency `AFNetworking ` is not used in any concrete target
请点击进去参考:
报错误[!] Pods written in Swift can only be integrated as frameworks; add `use_frameworks!` to your Podfil 请点进去参考:
可能是要添加的这个库 不支持swift导致
解决办法:在podfile里面添加 use_frameworks!
platform :ios, '8.0'
#use_frameworks!个别需要用到它,比如reactiveCocoa
MyApp为你的项目的名字
def pods
pod 'AFNetworking', '~> 2.6'
pod 'ORStackView', '~> 3.0'
pod 'SwiftyJSON', '~> 2.3'
use_frameworks! //在这里添加,设置支持
swift,如果不引进swift相关的类则可以不用写
end
target 'MyApp' do
pods
end
就是在加入你需要的那些库之后最后再加一句use_frameworks!
3、执行导入命令
准备工作都完成后,开始导入第三方库:
[objc] view plain copy
- $ cd /Users/wangzz/Desktop/CocoaPodsTest
- $ pod install
首先进入工程根目录,然后执行pod install命令,CocoaPods就开始为我们做下载源码、配置依赖关系、引入需要的framework等一些列工作,命令的执行结果打印出来如下:
- Analyzing dependencies
- Downloading dependencies
- Installing AFNetworking (2.1.0)
- Installing JSONKit (1.5pre)
- Installing Reachability (3.0.0)
- Generating Pods project
- Integrating client project
- [!] From now on use `CocoaPodsTest.xcworkspace`.
这就说明pod install命令执行成功了。再来看看工程根目录发生的变化,如下图:
可以看到,工程的根目录下多了三个东西:CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目录。
再看看刚才执行完pod install命令打印出来的内容的最后一行:
[objc] view plain copy
- [!] From now on use `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 搜索类库失败的解决办法
- 执行
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
,却有相应的结果,会出现很多的第三方库。这时就需要继续下面的步骤才会得到上面你所搜索的库。 - 。
- 其实在你安装CocoaPods执行
- 删除~/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
提示如下的错误:
[!] Unable to find a pod with name, author, summary, or descriptionmatching '······'
对于有些类库确实是在Cocoapods中所不存在的,为了确定我们搜索的库是不是真的在Cocoapods的Repos中存在,我们可以到 https://cocoapods.org/中进行搜索。
5.
输入
pod search
后出现如下:
这是他的一些搜索要求,可不必管,继续以上的
pod search,若出现错误可参考以上的方法解决。