IOS 开发学习十八 包管理工具 CocoaPods的使用

Posted 编程圈子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS 开发学习十八 包管理工具 CocoaPods的使用相关的知识,希望对你有一定的参考价值。

一、简介

开发ios应用时,经常会用到一些第三方开源类库,如JSONKit、AFNetWorking、QRCode等。一个类库可能还会引用其它类库。手动去一个个加载就显得比较麻烦。而CocoaPods就是用来解决类库引用问题的,它类似于php上的Composer、JAVA上的Maven,也许与Linux平台的apt-get命令也有相似之处。 官网地址: https://cocoapods.org

二、安装

CocoaPods需要先安装好Ruby环境,默认应该是已经安装的,这里不再介绍Ruby安装方式,直接介绍CocoaPods安装。 命令行输入
sudo gem install cocoapods
如果输入密码后很长时间没有反应,或提示无法找到,可能地址被墙了,那要先输入:
gem sources --remove https://rubygems.org/
//等有反应之后再敲入以下命令
gem sources -a https://gems.ruby-china.org/
gem sources -l

把镜像改为国内的镜像。
这时界面输出:
*** CURRENT SOURCES ***

https://gems.ruby-china.org/

再执行安装命令。 如果提示: Unable to resolve dependencies:cocoapods requires cocoapods-core(=0.35.0),... 则先运行:
sudo gem update --system
如果再提示: ERROR: While executing gem... (Errno::EPERM)    Operation not permitted - /usr/bin/xcodeproj 则运行:
sudo gem install -n /usr/local/bin cocoapods

如果提示: You don't have permissions for the /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0 directory

尝试了很多方法,最后成功的是:

brew info ruby
# 看到其中提示:
# If you ened to have ruby first in your PATH run:
# echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile

就是执行echo那一句。
 

如果提示: You don't have /Users/用户名/.gem/ruby/2.3.0/bin in your PATH,gem executables will not run.

vim ~/.bash_rc和 vim ~/.zshrc

添加内容:

export GEM_HOME="$(ruby -e 'puts Gem.user_dir')"
export PATH="$PATH:$GEM_HOME/bin"

执行 source ~/.bash_rc

安装完后执行

pod install 命令 ----安装仓库。
也可以通过插件安装:(未测试) 安装一个xcode插件管理工具 http://alcatraz.io,执行curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh| sh  完了打开xcode->window->package manger 搜cocoapods安装,方便操作。

三、ionic项目添加CocoaPods支持

1.  使用xcode打开项目  2. 编辑文本
vim Podfile
# Uncomment this line to define a global platform for your project
platform :ios, '7.0'

target 'Demo' do

pod 'AFNetworking', '~> 2.0'
pod 'JSONModel', '~> 1.1.2'
pod 'AFKissXMLRequestOperation@aceontech', '~> 0.0.4'

end

target 'DemoTests' do

end
然后命令行运行:pod install --verbose --no-repo-update
 
 

四、使用示例

1.项目里引用QRCode 首先验证QRCode是否支持CocoaPods
pod search QRCodeReaderViewController
输出:
-> QRCodeReaderViewController (3.4.0)
   Simple QRCode reader for iOS 7 and over
   pod 'QRCodeReaderViewController', '~> 3.4.0'
   - Homepage: https://github.com/YannickL/QRCodeReaderViewController
   - Source:   https://github.com/yannickl/QRCodeReaderViewController.git
   - Versions: 3.4.0, 3.3.0, 3.2.3, 3.2.2, 3.2.1, 3.2.0, 3.1.0, 3.0.0, 2.0.0,
   1.0.1, 1.0.0 [master repo]
到项目的.xcodeproj目录,建立Podfile文件:
touch Podfile
vim Podfile
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '7.0'
pod 'QRCodeReaderViewController', '~> 3.4.0'
 保存后,输入命令:
 
 
 
pod install

安装完成后,输入命令:
open MyProject.xcworkspace
打开项目,不要用.xcodeproj打开项目。
  以后需要升级使用的开源库时,只需要输入: pod update 即可自动完成更新。
 

四 删除类库

1.删除Poads里的类库文件夹 2.把Podfile里删除对应行 3.重新执行pod install命令。

五 其它命令

有时经常卡住,可能要这样清理一下。如果xcode升级,这里有时也要这么操作一下:

pod repo remove master --删除主仓库
pod setup --重建安装
pod install

跳过更新仓库的操作直接安装类库 

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

方法2:

运行:
rm -rf ~/.cocoapods/repos/masterpod repo remove masterpods install --verbose
可以看到下载提示。 确认是否在运行:
cd ~/.cocoapods
du -sh

看值一直在变大,就是正在下载。

方法3:

下载安装github desktop登陆github,把项目https://github.com/CocoaPods/Specs  fork到自己的github账户下打开github desktop , clone Specs到本地电脑改名为master,放到~/.cocoapods/repos/master

其它问题处理:

运行pod install时

提示An error occurred while processing the post-install hook of the Podfile.undefined method `project` for #<Pod::Installer:0x007ffa309af2e0> 处理方法: 打开Podfile,把里面的 project 改为 pods_project

不支持i386

工程在模拟器上编译报错,不支持i386,Cocoapods确实还不支持64位模拟器,解决办法:

方法1:

1.build active architecture only 在debug的时候设置成YES,不要在release的时候用模拟器   

2.other linker flags 加一个 $(inherited)

pods root也可能需要设置为$(inherited)

方法2:(未测试)

点击项目文件 project.xcodeproj,右键`显示包内容`,用文本编辑器打开`project.pbxproj`,删除`OTHER_LDFLAGS`的地方,保存,回到 Xcode,编译通过。

需要对第三方库修改

先把git fork到自己账号下,然后编辑Podfile:

platform :ios, '7.0'
pod '要导入的库', :git => 'https://github.com/我的github/要导入的库' 
 

Xcode 提示Pod错误

diff: /../Podfile.lock: No such file or directory

diff: /Manifest.lock: No such file or directory

error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

1.关闭Xcode,重新执行pod install,之后再重新打开Xcode运行。

2.删除一下文件

xcworkspace
Podfile.lock
Pods文件夹
~/Library/Developer/Xcode/DerivedData路径下对应工程的文件夹

然后重新执行pod install

3.如果以上都不行 检查Project->选择Info tab->看看Configurations是不是被设置为 None了,如果是None的话改为Pods

4.右键工程根目录下的xxx.xcodeproj文件,显示包内容

双击打开project.pbxproj文件查找"Pods-resources.sh", 把路径改为如下红框处:

解决方案参考:http://www.jianshu.com/p/4c3164fe552a

架构异常的问题

Library/ Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi/library.rb:275: [BUG] Bus Error at 0x0000000102b20000 执行命令:
sudo arch -x86_64 gem install ffi
arch -x86_64 pod install

以上是关于IOS 开发学习十八 包管理工具 CocoaPods的使用的主要内容,如果未能解决你的问题,请参考以下文章

Linux企业运维——Kubernetes(十八)Helm包管理工具

Linux企业运维——Kubernetes(十八)Helm包管理工具

项目管理:CocoaPods建立私有仓库

iOS Catalyst Cocoapod 框架错误 - 签名需要开发团队

iOS包管理工具Cocoapods的安装与使用

如何创建一个 cocoapod 库