美文网首页苹果开发,iOS开发,MacOS开发,Android开发,Windows开发
CocoaPods公有库、远程私有库、本地私有库的使用整理

CocoaPods公有库、远程私有库、本地私有库的使用整理

作者: Coder_JMicheal | 来源:发表于2018-05-09 13:52 被阅读144次

    1.CocoaPods 的安装

    <已经了解CocoaPods的同学请直接跳到第3步或第4步>

    1.1 作用:

    帮助管理和维护第三方框架,快速的搜索到第三方框架, 然后自动集成到工程里面来, 并编译成一个libPod.a的静态库给我们项目用.

    1.2 理解:

    1.2.1 什么是gem

            Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如 http://rubygems.org/ )源来查找、安装、升级和卸载软件包,非常的便捷。

    1.2.2 常用命令

            $ gem --version (查看gem版本)

            $ gem update --system(更新gem)

            $ gem sources(查看数据源)

            $ gem sources --remove https://rubygems.org/(删除数据源)

            $ gem sources -a https://ruby.taobao.org/(添加数据源)

            $ gem search 软件包关键字(搜索软件包)

            $ gem install 软件包名称(安装软件包)

            $ gem install cocoapods --pre(安装上一个版本软件包)

            $ gem uninstall 软件包名称(卸载安装包)

            注意: 以上命令最好在使用之前, 都添加sudo,代表以管理员身份运行该命令,因为有可能安装软件包的过程当中, 需要创建文件等等, 必须有管理员权限才能操作。

    1.3 安装:

    $ sudo gem install cocoapods

    执行完这句如果报告以下错误: 

            ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why: Unable to download         data from https://rubygems.org/ - Errno::ETIMEDOUT: Operation timed out connect(2) (https://rubygems.org/latest_specs.4.8.gz)

            ERROR: Possible alternatives: cocoapods 

    则需要更新一下ruby的源: 

            $ gem sources  (查看当前ruby的源)

            $ gem sources --remove https://rubygems.org/ (删除数据源)

            $ gem sources -a https://ruby.taobao.org/ (添加数据源)

    如果gem太老,可以尝试用如下命令升级gem: 

            $ sudo gem update --system(注解: sudo 是以超级管理员的身份操作)

            升级成功后会提示: RubyGems system software updated 

    然后重新执行安装下载命令 

            $ sudo gem install cocoapods

    可能会报错,出现以下问题:ERROR:  While executing gem ... (Gem::FilePermissionError)

        You don't have write permissions for the /usr/bin directory.

    建议使用下面的方法进行安装:

            $ sudo gem install -n /usr/local/bin cocoapods --pre //最新版本

            或着 sudo gem install -n /usr/local/bin cocoapods -v (版本号) //指定安装 cocoapods的版本

            验证成功:$ pod --version

            接下来进行安装,执行: 

            $ pod setup

    升级到10.11, CocoaPods报错: command not found, 解决方案:

            $ sudo gem update --system

            $ sudo gem uninstall cocoapods

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

            随后如果出现下列错误

            [!] An error occurred while performing `Git pull` on repo `master`.

            [!] /usr/bin/git pull --ff-only

            原因: Cocoapods的分支不支持当前最新的Xcode版本

            解决办法: 删除master分支 重新建立新的分支

            $ sudo rm -fr ~/.cocoapods/repos/master

            $ pod setup



    2.CocoaPods 的简单使用

    2.1 步骤

        1> Xcode新建一个项目,名字Test

        2> 终端中,cd到项目总目录(注意:包含Test.xcodeproj的那个目录)

        3> 执行命令 $ pod init 或者 $ vim Podfile 建立Podfile配置文件

        4> 打开podfile文件,不要选择文本编辑打开方式,选择Xcode打开,编辑文件如下

       5> 执行 $ pod install 现在打开项目不是点击 Test.xcodeproj了,而是点击 Test.xcworkspace

    2.2 说明

            生成的重要文件Podfile.lock 用来记录着上一次下载的框架版本

    2.3 pod install 和 pod update 区别

            install  如果Podfile.lock文件存在, 直接从此文件中读取框架信息下载安装,如果不存在, 依然会读取Podfile文件内的框架信息。

            update 不管Podfile.lock是否存在, 都会读取Podfile文件的的框架信息去下载。主要区别在于, Podfile文件内的框架信息, 版本描述没有指定具体版本。


    3.创建CocoaPods远程公有库

    3.1 注册CocoaPods账户信息

            想要创建一个开源pod库, 首先我们需要注册CocoaPods, 这里使用trunk方式, 作为一个iOS开发人员你一定安装了CocoaPods, 那么只需要在终端执行:

    $ pod trunk register 邮箱地址 '用户名' --verbose

            这里我们一般使用github邮箱和用户名, 然后在你的邮箱中会收到确认邮件, 在浏览器中点击链接确认即注册成功, 成功之后可以终端执行:    

    $ pod trunk me

            查看自己的注册信息, 以后当你有了自己的开源Pod库, 也可以用此方式随时查看自己发布过的Pods。

    3.2 创建共享库文件并上传到公有仓库

    共享库需要三个必不可少的部分:

    A. 共享文件夹 (文件夹存放着你要共享的内容, 也就是其他人pod得到的文件, .podspec文件中的source_files需要指定此文件路径及文件类型);

    B. LICENSE文件 (开源许可证,默认一般选择MIT);

    C. 库描述文件.podspec (本库的各项信息描述, 需要提交给CocoaPods, pod通过这个文件查找到你共享的库)。

    这一步分两种情况:

    A.如果你已经有了现成的想要共享的文件,你只需要满足上面三个部分,即可上传到公有仓库即可继续其他的步骤;

    B.你想要创建一个全新的工程去做自己的共享, 可以先从远端clone一个新项目,使用终端命令:

    $ pod lib create 库名

    然后根据需要选择各项配置后创建一个标准的工程,将代码上传到公有仓库。

    3.3 创建并编辑.podspec文件

    .podspec 是用 Ruby 的配置文件,描述你项目的信息。

    在你的仓库目录下,使用终端命令创建:  

    $ pod spec create 文件名称

    修改podspec文件内容:

    Pod::Spec.new do |s|

      s.name            = 'JFPhoneNumTFLib'

      s.version          = '0.1.1'

      s.summary          = 'JFPhoneNumTFLib.'

      s.homepage        = 'https://github.com/MichealFan/JFPhoneNumTFLib'

      s.license          = { :type => 'MIT', :file => 'LICENSE' }

      s.author          = { 'lannikeng' => 'lannikeng@163.com' }

      s.source          = { :git => 'https://github.com/MichealFan/JFPhoneNumTFLib.git', :tag => s.version.to_s }

      s.ios.deployment_target = '8.0'

      s.source_files = 'JFPhoneNumTFLib/Classes/**/*'

      # s.resource_bundles = {

      #  'JFPhoneNumTFLib' => ['JFPhoneNumTFLib/Assets/*.png']

      # }

      # s.public_header_files = 'Pod/Classes/**/*.h'

      s.frameworks = 'UIKit', 'Foundation'

      # s.dependency 'AFNetworking', '~> 2.3'

    end

               值得注意的是:podspec文件中的homepage和source不支持ssh协议地址,所以我们得放入http/https地址。

               编写完成后, 我们需要验证.podspec文件的合法性, 这里需要终端cd到.podspec文件所在文件夹, 执行:

    $ pod lib lint JFPhoneNumTFLib.podspec

            如果遇到警告的话,我们需要加上在后面 --allow-warnings

            如有其他错误请重新检查你的编写正确性, 如果没有问题会出现:

    -> JFPhoneNumTFLib (0.1.1)

    JFPhoneNumTFLib passed validation.

    3.4 给仓库打tag标签, 发布一个release版本

            验证成功后,将仓库提交到远程,然后给仓库打上标签并将标签也推送到远程。

            标签相当于将你的仓库的一个压缩包,用于稳定存储当前版本。标签号与你在.podspec文件中 s.version = "0.1.1"的版本号一致。这里你可以在你的git仓库中的releases一项去手动发布, 也可以在当前文件夹下使用终端命令:

    $ git tag -m 'first release' '0.1.1'

    $ git push --tag #推送tag到远端仓库

    3.5 发布自己的库描述文件podspec给cocoapods

            发布项目的描述的文件 JFPhoneNumTF.podspec

            同样在这个文件夹下, 终端执行:

    $ pod trunk push JFPhoneNumTF.podspec

    将你的.podspec发布到公有的specs上,这一步其实做了很多操作,包括

            1> 更新本地 pods 库~/.cocoaPods.repo/master

            2> 验证.podspec格式是否正确

            3> 将.podspec文件转成 JSON 格式

            4> 对master仓库 进行合并、提交.master仓库地址

    成功后将会出现下列信息:

    Updating spec repo`master`

    Validating podspec -> JFPhoneNumTF (0.1.1)

    Updating spec repo`master` 

    3.6 使用仓库

    发布到Cocoapods后,在终端更新本地pods仓库信息

    $ pod setup

    查询仓库

    $ pod search JFPhoneNumTF

    若出现仓库信息说明已经成功了,这时候你就可以在 Podfile 添加、使用自己的仓库了 pod 'JFPhoneNumTF', '~> 0.1.1'

    3.7 更新维护

    当你的代码更新维护后,就需要重写发布,流程是:

    1> 更新JFPhoneNumTF.podspec中的版本号

    2> 打上tag标签推送远程

    3> pod trunk push JFPhoneNumTF.podspec 推送到pods仓库


    4.创建CocoaPods远程私有库

    4.1 创建添加版本库(repo),远程索引库

            首先,创建一个像 master 一样的存放版本描述文件的git仓库,因为是私人git仓库,我们选择 oschina 创建远程私有仓库(因为是免费的)或者也可以在GitHub上创建($7/month)

            创建版本描述仓库后,回到终端,将这个远程的私有版本仓库添加到本地,repo 就是 repository 储存库的缩写。

    $ pod repo add MySpecRepo https://git.oschina.net/JMicheal/MySpecRepo.git

            查看在 Finder 目录 ~/.cocoapods/repos, 可以发现增加了一个 MySpecRepo 的储存库。

    4.2 创建代码库

            回到 oschina 创建私人代码库,创建时添加 MIT License 和 README。

            将仓库克隆到本地,添加你的代码文件、仓库名.podspec 描述文件,还有.swift-version。

            .swift-version文件用来知道swift版本,用命令行创建:

            $ echo "3.0" > .swift-version```

            这里我要说一下一个坑,用 oschina 创建私人仓库时, 在验证时可能会找不到 MIT LICENSE证书,将其中的

            s.license = "MIT"

    修改为,指定文件

            s.license      = { :type => "MIT", :file => "LICENSE" }       

            验证podspec文件

            $ pod lib lint 验证本地连接

            $ pod spec lint 验证远程连接

            与公有库的创建方式一样, 验证成功之后push到仓库, 然后打tag发布release版本。一般出现错误警告,需要添加 --private 或者 --allow-warnings,就可以通过验证。

    4.3 将描述文件podspec推送到私有Sepc repo版本库中

            公有库使用trunk方式将.podspec文件发布到CocoaPods/Specs, 内部的pod组件库则是添加到我们第一步创建的私有Spec repo中去, 在终端执行:

    $ pod repo push MySpecRepo xxxx.podspec

            这时会对远程仓库进行验证,成功的话就会在 ~/.cocoapods/repos/MySpecRepo 中发现新增的仓库描述信息了。过程为以下几步:

            1> 验证 xxxx.podspec 文件

            2> 拉取远程版本库 MySpecRepo

            3> 添加 xxxx.podspec 到版本库中

            4> push 到远程

    若是出现错误信息:

    [!] The repo `MySpecRepo` at `../.cocoapods/repos/MySpecRepo` is not clean

    更新下我们的版本库,

    $ pod repo update MySpecRepo

    再继续上传即可。

    添加完成后我们就可以在pod中搜索 $ pod search xxxx

    4.4 私人pod库的使用

    使用私人pod库的需要在Podflie中添加这句话,指明你的版本库地址。

    source ‘https://git.oschina.net/JMicheal/MySpecRepo.git’

    **注意**是版本库的地址,而不是代码库的地址

    若有还使用了公有的pod库,需要把公有库地址也带上

    source ‘https://github.com/CocoaPods/Specs.git’

    执行 $ pod install 可以看到代码已经整合到我们的项目中了。



    5 创建CocoaPods本地私有库

    5.1 创建本地库

    5.2 创建podSpec文件

    podspec文件其余都与前两种情况类似,仅仅是把本地库的source链接地址可以去掉,改为:

    s.source = { :git => "", :tag => "#{s.version}" }

    5.3 验证podspec文件

    5.4 创建测试工程,并创建Podfile文件,进行安装本地库

    path指向本地文件的相对路径即可:

    pod 'xxxx',:path => '../Lib/xxxx'

    执行 $ pod install 安装。

    这篇文章讲的也很简洁全面-->

    其他相关文章:

    Cocoapods私有库可能遇到的坑-->

    相关文章

      网友评论

        本文标题:CocoaPods公有库、远程私有库、本地私有库的使用整理

        本文链接:https://www.haomeiwen.com/subject/lsiwrftx.html