iOS-CocoaPods-安装笔记(持续更新遇到的坑)

由于把简书全部的文章删除了,因此这边就补充会本来的一些认为有价值的文章供查阅ios

CocoaPods 真是每时每刻均可能出现新的坑,因此我又只能更新了....git

CocoaPods 能让开发者很是方便的使用第三方类库,不用本身去管理依赖问题,以及非arc等编译条件在mac 系统下调用终端:github


  • 基本的步骤是 gem install cocoapods -> pod setup -> pod init -> edit Podfile -> pod install -> open xcworksapce (期间出现对应的问题 就对应解决)xcode

  • 这里着重解析下pod经常使用的几个文件夹:缓存

    • /Users/{yourName}/Library/Caches/CocoaPods 这个位置放着系统的pod git clone成功后的三方库的缓存
      大概的逻辑: pod install -> 下载SDWebImage到Caches里面 -> 根据podSpec copy Caches内的库到项目Pods里面进行使用
    • /Users/{yourName}/.cocoapods/repos 这个位置存放着cocoapods的中心索引表,主要得repo 是 master, 也必需要有master才可让pod进行执行 同时你新建的私有repo也会处于这个位置
    • 项目文件下的 Pods 根据Podfile生成的文件内容,里面包含了源码

    因此在网络极端状况(本身特别难更新的话),终极技能是,直接去复制队友的Pods文件到本身项目文件,而后pod install就行...,或者也能够将队友的Caches文件复制过去,ruby


#安装cocoapodsbash

为了防止gem安装更新失败,所以先替换为国内的淘宝的镜像源,不然在天朝的网络限制中会很慢很慢网络

请别弄混乱一个东西,这里替换的ruby源的地址,是为了安装cocoapods这个库管理软件,安装目录默认在/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/, 后面说替换的coding等spec.git,是指替换cocoapods的中心索引表的git地址ssh

gem sources --remove https://rubygems.org/ //等有反应以后再敲入如下命令 
// 更新为 ruby-china的镜像, 淘宝镜像已经中止
gem sources -a https://gems.ruby-china.org/
复制代码

检查一下看看curl

gem sources -l
*** CURRENT SOURCES *** https://gems.ruby-china.org/
复制代码

使用gem安装cocoapods

sudo gem install cocoapods  //1.0正式版本已经发布,规则有一点的变化
复制代码

若是gem出现错误 ** Unable to resolve dependencies: cocoapods requires cocoapods-core (= 0.35.0), claide (~> 0.7.0), xcodeproj (~> 0.20.2), cocoapods-downloader (~> 0.8.0) **

先更新gem而后从新开始

sudo gem update --system  //没什么问题就不要更新这个了,容易出现问题,更新后请从新设置下镜像源



复制代码

** sudo gem install cocoapods 出现 Operation not permitted - /usr/bin/xcodeproj**

sudo gem install -n /usr/local/bin cocoapods
复制代码

//若是还有问题 请看下面

设置pod中心索引表(初始化cocoapods) -- 重要问题都在这

若是pod setup能够将github的代码下载得动,那你就不用去折腾了

specs的意思: 规格, 说明书

全部第三方库pod lib lint经过后,都会push到这个Specs.git里面,并且cocoapods软件在pod install,也是去Specs.git(即repo里面的master)查找对应的版本信息的,所以我称之为中心索引表

cocospod就是一个中心化的工具,相对而言carthge是去中心化的,所以carthge 不能进行search,或者查看下各个库支持到哪一个版本,只能去三方的git库自行查看

pod setup //会将Specs.git的代码下载到~/.cocoapods/repo/master
//若是仍是太慢,尝试下
pod install --verbose
复制代码
  • pod setup内部实现 /Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/command/setup.rb

    def run
          UI.section 'Setting up CocoaPods master repo' do
            if master_repo_dir.exist?
              set_master_repo_url
              set_master_repo_branch
              update_master_repo
            else
              add_master_repo
            end
          end
    
          UI.puts 'Setup completed'.green
        end
    
        // 省略一些代码 ....
        
        def self.read_only_url
          'https://github.com/CocoaPods/Specs.git'  
    复制代码

//这里默认写了加载索引表的地址, 因此 若是 pod repo add master https://git.coding.net/CocoaPods/Specs.git 这句失败的话 //能够尝试直接把这个url改成你要更换的新的git 地址,并且改为你要用的ssh可能更加好

end
复制代码
- **若是setup很慢甚至卡住**
>  (github自己就慢,并且Spec.git的文件数量甚多(1069459+)),致使300+m的git库特别难下载成功)

为了`pod install / update` 的时候加快速度,specs仓库镜像换成coding上的镜像或者是 oschina 上的镜像因此建议先更换数据源  

复制代码

pod repo remove master

// 这里执行的是,用国内的oschina/coding 去提供git下载,作一下中转,让速度稍微快点,可是如今发现上面的Specs.git大多都不更新了... // 后面要自力更生了 pod repo add master https://git.oschina.net/akuandev/Specs.git

> 若是提示失败或者setup不成功,方案有两种:

- ###1) 手动将代码clone下来 【该方法比较有效】
- 出现  [!] To setup the master specs repo, please run `pod setup`.

  这些git若是没更新的话,就先去oschina 搜索 `Specs` 来找一些更新的,或者也能够本身作一些中转(新建项目,导入git url,把cocoapods官方的导入到本身的项目中,自行更新... 你要写个脚本,天天更新也行...)
  ![寻找新的git](http://upload-images.jianshu.io/upload_images/1111290-fb7f09546d64263c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


复制代码

git clone https://git.oschina.net/yqszxx/Specs ~/.cocoapods/repos/master

//或者使用ssh的方式,总以为ssh的方式会快点,https老是卡住 git clone git@git.coding.net:yqszxx/Specs.git ~/.cocoapods/repos/master

pod setup //务必在手动下载代码后执行一次,执行后 Setup completed

//在执行 pod install --verbose --no-repo-update //避免去更新了

> 若是使用oschina 的 https git clone不成功的话,建议到`git.oschina.net`中添加ssh key,换ssh方式下载源码
复制代码

git clone git@git.oschina.net:akuandev/Specs.git ~/.cocoapods/repos/master

--- 


#Cocoapods 具体使用方法:

直接在须要加入cocoapods项目的根目录新建Podfile文件

复制代码

$pod init //会生成模板的Podfile文件 //或者手动建立 $touch Podfile

##编辑 Podfile文件
复制代码

platform :ios pod 'AFNetworking'

###单独某个target依赖pod 
> 在1.0中要求必须指定target了

复制代码

target 'XXXTarget' do pod 'AFNetworking' pod 'Masonry' end

而后再执行 pod setup 便可之后每次更改 Podfile文件 则执行 pod update 便可若是在初始化的时候出现:若是安装后出现

复制代码

[!] The platform of the target Pods (iOS 4.3) may not be compatible with Reachability (3.2) which has a minimum requirement of iOS 6.0 - OS X 10.8.

则修改 Podfile 为
复制代码

platform :ios, '6.0'

update 后若是出现大量提示
复制代码

错误 target overrides the OTHER_LDFLAGS...

则项目中Building setting 设置中 搜索**`Other Linker Flags`**的地方,添加一条
复制代码

$(inherited)

之后打开项目点击xcworksapce后缀的文件,不要点击原来的项目文件


![打开](http://upload-images.jianshu.io/upload_images/1111290-3ae8e3273afdc017.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 至此,已经结束,愉快地使用吧

---
#出现问题总结:
##若是 pod update / pod install 命令执行过慢

(首次运行的时候不要)执行pod install仍是pod update都卡在了Analyzing dependencies不动缘由在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数能够省略这一步,而后速度就会提高很多。
加参数的命令以下:
复制代码

pod install --verbose --no-repo-update pod update --verbose --no-repo-update

##gem install
> 出现 ERROR:  While executing gem ... (Gem::FilePermissionError)

解决方法:


复制代码

sudo gem install -n /usr/local/bin cocoapods

---
或者:

复制代码

$ mkdir -p $HOME/Software/ruby $ export GEM_HOME=$HOME/Software/ruby $ gem install cocoapods //打印 $ export PATH=$PATH:$HOME/Sofware/ruby/bin $ pod --version

或者从新安装rvm
复制代码

//Install Homebrew:(已经装过就不用了) $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" // Install RVM: $ \curl -sSL https://get.rvm.io | bash -s stable --ruby $ gem install cocoapods

##出现 Invalid \\`Podfile` file
复制代码

[!] Invalid Podfile file: incompatible character encodings: UTF-8 and ASCII-8BIT. Updating CocoaPods might fix the issue.

这是编码的问题,有两种缘由,
1.你的设备确实不支持utf8,
2.你自己录入文本有问题查看编码
复制代码

localhost:xib cty$ locale

执行命令后出现
复制代码

LANG="zh_CN.UTF-8"LC_COLLATE="zh_CN.UTF-8"LC_CTYPE="zh_CN.UTF-8"LC_MESSAGES="zh_CN.UTF-8"LC_MONETARY="zh_CN.UTF-8"LC_NUMERIC="zh_CN.UTF-8"LC_TIME="zh_CN.UTF-8"LC_ALL=

发现都是zh,强制设置一下
复制代码

localhost:xib cty$ export LC_ALL=en_US.UTF-8 localhost:xib cty$ export.UTF-8

再检查一下
复制代码

LANG="en_US.UTF-8"LC_COLLATE="en_US.UTF-8"LC_CTYPE="en_US.UTF-8"LC_MESSAGES="en_US.UTF-8"LC_MONETARY="en_US.UTF-8"LC_NUMERIC="en_US.UTF-8"LC_TIME="en_US.UTF-8"LC_ALL="en_US.UTF-8"

好像好了,继续pod install吧
复制代码

[!] Invalid Podfile file: incompatible character encodings: UTF-8 and ASCII-8BIT. Updating CocoaPods might fix the issue.

问题依然把全部可能的配置都试一遍
复制代码

gem install rails

而后
复制代码

gem install rdoc

而后
复制代码

gem install nokogiri --no-ri --no-rdoc

这些都设置完通常不会出现问题了,再有问题,多是文本录入的问题2的解决办法,若是你是手动输入的这个须要注意,copy别人的也要检查一下打开键盘偏好设置设置单引号格式,固然冒号我还没找到怎么设置,通常错误会提示给你哪写错了这里再也不提示utf8的错误了,输入法的错误,可是我切换了半天设置了半天仍是没解决冒号,只能吧
复制代码

The master repo requires CocoaPods 0.18.1 -

这个错误是在升级阶段出现的,升级
复制代码

gem update cocoapods

##使cocopods管理开源库编译出现Library not found for -lPods问题的解决方法
+ 点击菜单栏上 Product > Edit Scheme
+ 选择Build
+ 加入Pods static library, 而且保证 pods 处于第一个位置
+ Clean and build 项目

##若是在导入头文件的时候发现没法自动补全,或者PCH文件中提示File not found
在User headers search path(在Project 和 Target 都修改)中
复制代码

${SRCROOT} --右侧选择recursive

##Jenkins 脚本打包中出现 uft-8问题
> [33mWARNING: CocoaPods requires your terminal to be using UTF-8 encoding.

在pod install 以前执行 

复制代码

export LC_ALL="en_US.UTF-8" pod install --no-repo-update

复制代码
相关文章
相关标签/搜索