美高梅官方网站3045-mgm6608美高梅app下载
CocoaPods公有库

CocoaPods公有库

作者:mgm6608美高梅app下载    来源:未知    发布时间:2020-01-11 20:58    浏览量:

1、注册GitHub账号并登录2、右上方点击+,新建仓库(仓库名字(Repository name)、仓库权限、readme、license)

Cocoapods 一般用来管理第三方库,具体可以分为共有库和私有库。通过cocoapos可以快速导入导入需要的功能模块,提升开发效率的同时也提高了编码的质量。在开发过程中,对于封装一个功能模块,多项目中使用(在不考虑耦合度的情况下)需要配置一些系统库和设置。过程不难但很繁琐。那么多个功能模块导入或者模块封装者不在的时候无疑是一种灾难。

       最近在学习CocoaPods公有库、本地私有库、远程私有库,其中遇到了许多问题,怕过后又忘记了,所以记录下来帮助自己也帮助他人少走弯路。做iOS 3年多未写过什么文章,感觉自己都对不起自己的技术了,新手第一次写文章,大神不要喷我。现在面试听说要求很多,都要GitHub有开源项目,有博客分享过技术文章...,生活不易呀,为了生存。    

图片 1图片 2

一、开源代码的发布

       这文章先说说CocoaPods公有库,接下来的文章就讲讲本地私有库、远程私有库。啥叫CocoaPods公有库?比如我们经常用到第三方库AFNetworking、SDWebImage、MBProgressHUD,本人理解的CocoaPods公有库就是把自己做好的库、项目功能模块上传到开源仓库,上传CocoaPods的开源索引库repo,通过CocoaPods管理自己的库或者模块。这样管理项目就方便了,直接用CocoaPods安装即可。

创建完成如下图:

1.在自己的服务器创建代码仓库。

一、安装cocoapod或更新cocoapods

需要安装新版的cocoapods,旧版的cocoapods可能不支持,会导致下面的步骤出错,所以先要更新cocoapods。我是用最新的1.5.0 beta版,如图:

图片 3

我这里就不说安装cocoapods或者更新cocoapods了,请大家网上搜一下教程。

更新cocoapods的简单步骤:

$ sudo gem update --system// 先更新gem;

$ sudo gem install cocoapods// 安装cocoapods

$ pod setup//设置

如果gem升级失败,可能是ruby版本过低导致的,安装RVM来升级ruby。

图片 4

github 开源的库免费,私有的是要收费的。这里以git开源库为例。(不一定要github 其他的代码库也行)

二、创建远程仓库与本地代码关联

先在GitHub上创建新项目,这里我就直接用例子了,如图所示:

图片 5

       这里用的是选择公有库,私有的要钱的,最好添加ignore和证书license,证书在后面用到,可以去掉警告。创建成功项目里就只有ignore和license,选择地址clone项目到桌面。

图片 6

      cd到桌面,或者你想要的文件夹,clone项目到本地。

图片 7

       打开刚才clone的文件夹,我这里就直接用库,不带demo的,如果你们想要带demo的话也是一样的道理,只是路径填好就行了。一般在库里面创建Classes文件夹,名称随意,.podspec的资源路径填好就没问题,然后把你的库或者模块放在Classes文件夹里面,我就用我自己做的一个库,如图:

图片 8

      我这边就把远程库和本地代码关联了,只是没有把代码上传带远程仓库,你们也可以直接在本地创建库名,然后通过命令 git remote add origin 远程仓库地址 关联远程仓库 ,这我就不示范了。

3、检出仓库

  1. 从远程库下拉更新 git pull
  2. 将添加或者修改的文件/代码添加到本地项目目录 git add <filename>
    git add task.rtf
    git add *
    git add .
  3. 提交修改后的文件/代码到本地仓库 git commit -m “备注,描述”
  4. 从本地仓库推送到远程库 git push

三、创建.podspec文件和修改.podspec文件的内容

       接着cd到库,命令执行,$ pod spec create PublicLib // PublicLib是你的库名称,这里创建.podspec文件,这个文件就是最重要的。你再去看看你的库是不是多了一个.podspec文件,如图:

图片 9

      打开.podspec文件,通过xcode打开,修改相应的内容,想详细了解更多的.podspec文件内容,请看官网介绍:Specs and the Specs Repo。把不需要的删除,修改完后如图:

图片 10

        .podspec文件内容那么多,为啥就只剩这一点点了,#开头的是注释的,用不到的,看着有点乱,所以就删了。

s.name一般不需要修改,它对应.podspec文件的名字,如果不相同就会报错;

s.version是你库的版本号;

s.version库简介;

s.description库描述,这个库描述一定要比简介长;

s.homepage远程仓库的主页,对应你项目库的主页,不是项目地址,不带.git后缀的;

s.license是证书,刚开始创建远程项目时选择的;

s.author作者联系名和邮箱;

s.platform支持的平台,这个必须要的,要不会包错,包没有找到头文件或者没有找到UIKit;

s.source资源的地址和tag,这里的地址是库的地址,带.git的,tag要对应远程的tag;

s.source_files资源文件,通过这路径找到对应的文件;

s.public_header_files暴露的.h文件,用到静态库;

s.requires_arc是否支持ARC;

s.ios.vendored_libraries静态库路径,我这里用到了静态库。

         这里如果没有填写正确,会遇到很多坑,文件路径一定要填写好,如果我这里不是直接Classes文件夹,而是Classes文件夹在Lib文件里面,Lib文件是跟.podspec文件同目录的,那么路径就要Lib/Classes/**/;还有这里你有没有发现我的静态库.a文件跟.h文件名字不一样,那是我后来改的,如果用到了系统外的就要以lib开头的.a,所以我就在原来的基础上更改了。这是我查了很久资源才知道的,当时一直报错。。。

新建一个文件夹SDK:

注意: 打tag(指定版本号)主要用于版本控制(必须与podspec中版本一致), git tag -m "1.0.1" 1.0.0 ;

温馨提示:

       .podspec文件的内容配置要根据你的项目库来填写,里面还有许多我没有用到的,比如资源库、依赖第三方的库、frame框架、系统的库等等。这些都需要你们到官网看看介绍,或者看其他人的介绍,这我就不一一介绍了。

这些在别人文章找到的:

*vendored_frameworks:配置需要引用的非系统框架*

写法:vendored_frameworks ='Frameworks/LibFramework.framework'

*frameworks:配置依赖的系统框架*

写法:frameworks ='AVFoundation','CoreGraphics','Security','SystemConfiguration'

*vendored_libraries:配置需要引用的非系统静态库(要注意,这里的.a静态库名字必须要带lib前缀,如果引用的静态库名字没lib前缀会导致编译报错,只需要重命名加上即可)*

写法:vendored_libraries ='Classes/libQYHKeyBoardManager.a'

*libraries:配置依赖的系统库(要注意,这里的写法需要忽略lib前缀)*

写法:libraries ='c++','sqlite3','stdc++.6.0.9','z'

*resources:配置资源文件(.bundle,.png,.txt等资源文件,这些资源文件会被放到mainBundle中,要注意避免发生命名重复的问题)*

写法:resources ='Resources/QYHKeyBoard.bundle'

*resource_bundles:配置指定bundle的资源文件(可以解决resources导致的命名冲突问题)*

写法:resource_bundles = {'QYHKeyBoardBundle'=> ['Resources/QYHKeyBoard.bundle'],}

*dependency:依赖的三方库*

写法:dependency 'AFNetworking','~>3.1.0'

图片 11

  1. git tag -m "注释" 0.0.2
  2. git push --tags

四、把本地代码上传到远程仓库和打tag版本

配置好.podspec文件,接着就是把代码上传到远程仓库,通过

    $ git add . ;  

    $ git commit -m “XX”  ; 

    $ git push。

打tag,打的tag一定要对应版本号,因为.podspec文件配置已经写好跟版本号一样的,通过

    $ git tag '0.0.1' ; 

    $ git push --tags;

如图所示:

图片 12

图片 13

图片 14

打开终端:

2.注册trunk邮箱 会发带验证链接的邮件到邮箱地址,名称无法修改

五、注册Cocoapods账号

       可以先查看你本机有没有注册过Cocoapods账号,通过 $ pod trunk me ,如果没有信息就证明没有注册过,需要注册。输入$ pod trunk register 邮箱地址 ‘用户名’ --description='描述信息' 注册,然后在你注册的邮箱收到邮件,打开邮件复制链接打开网页激活验证注册,然后跳到pod官网提示pod trunk push。

    $ pod trunk me //查看有没有注册,有的话就是相关的注册账号的信息

    $ pod trunk register  邮箱地址  ‘用户名’ --description='描述信息'  //注册Cocoapods账号

    $ pod trunk push xx.podspec --allow-warnings //提交到pod,最后用到

如图是本人自己操作的,pod trunk me有显示库,是我之前弄的。

图片 15

图片 16

图片 17

图片 18

pod trunk register 你的邮箱 '英文名’

六、验证pod是否能通过

上传代码后,然后验证pod是否能通过:

    $ pod lib lint   本地验证 

    $ pod spec lint  本地和远程验证

    $ pod lib lint --verbose 显示详细的检测过程,出错时会显示详细的错误信息

    $ pod lib lint --allow-warnings  允许警告,用来解决存在警告导致不能通过校验的问题

如果出现绿色字passed validation就是验证通过,如图所示:

图片 19

将FireRadarSDK文件夹拖进SDK里的克隆后的FireRadarSDK文件夹中

可查询注册信息。

七、提交pod和检查库

pod验证通过了,就接着执行$ pod trunk push xx.podspec --allow-warnings,等几分钟,结果报错了。

图片 20

        pod上面已经有相应的名称了,所以要更改名称了。我目录的文件夹和.podspec文件名和.podspec文件里面的s.name都全部更改了,要不会报错,如图:

图片 21

这次成功了,如果所示:

图片 22

再执行$ pod trunk me 可以看到自己的信息,包括自己的库,如上图所示。

然后通过搜索库看能不能搜索出来,$ pod search XX ,结果搜不出来,因为是pod的缓存问题,是从缓存的repo搜索的。把缓存删除了,通过$ rm ~/Library/Caches/CocoaPods/search_index.json 把缓存删掉,再$ pod search XX搜重新从网上搜索缓存下来。如图,如果能搜到就成功了,直接就可以用pod 安装管理了。

    $ pod search XX    //搜索库

    $ rm ~/Library/Caches/CocoaPods/search_index.json  //删除pod的缓存

图片 23

图片 24

图片 25

pod trunk me

八、版本更新

版本更新跟之前的步骤差不多,这就简单说一下步骤:

关掉终端,重新打开,切换到git仓库目录

3.创建.podspec文件

    1.修改.podspec文件中的版本号;

        s.version      = "0.0.2" //修改0.0.2版本,不能是之前的版本,要不提交不成功

cd /Users/huangzengsong/SDK/FireRadarSDK

注意:会在当前目录下生成 podName.podspec文件,里面有非常多的注释,大部分都是无用的。建议删除内容,直接使用其它成功提交的podspec文件修改。

    2.上传到远程仓库;

        $ git add . ;  

        $ git commit -m “XX”  ; 

        $ git push。

查看cocoapods的版本号

pod spec create podName

    3.打tag并上传;

        $ git tag '0.0.2' ;    

        $ git push --tags;

pod --version

.podspec文件详情:

    4.验证pod并提交到pod。

         $ spec repo    //查询repo

         $ pod spec lint --allow-warnings    //远程本地pod验证

         $ pod trunk push  PublicLibQiuyh.podspec --allow-warnings   //提交pod

         $ pod search PublicLibQiuyh   //查询库

第一次写文章,用了好久的时间,不过有点成就感,嘻嘻!!!

下次就是写本地私有库和远程私有库了...

喜欢点个赞呗!!!

确保cocoapods的版本号大于0.33,如果不大于需要先更新版本(无论版本号多大最好都更新一下)

Pod::Spec.new do |s|
s.name = "podName" #名字
s.version = "0.1.0" #版本号
s.summary = "Custom Category" #简短的介绍
s.homepage = "https://github.com/1551715165/PXLNetWork" #主页,这里要填写可以访问到的地址,不然验证不通过
s.license = "MIT" #开源协议
s.author = { "fqzl" => "1551715165@qq.com" } #作者信息
s.platform = :ios, "10.0" #支持平台及版本
s.source = { :git => "https://github.com/1551715165/PXLNetWork.git", :tag => s.version } #这里的tag是github上的版本 建议与cocoapods上版本对应
s.source_files = "podName/*/" #代码源文件地址
s.requires_arc = true #项目是否使用 ARC
s.resources = "resource//" #资源文件(.xib,*.png, bundle等)
s.dependency "JSONKit", "~> 1.4" #当前依赖库,pod install时会自动下载该库(注意:没有 '=' 符号 )

sudo gem install cocoapods

这里要特别说一下

注册Trunk账户(邮箱地址建议写成github注册的邮箱,用户名写成github对应的用户名)

s.source_files = "podName/*/" 表示podName目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置。这里的路径对应git仓库和本地验证时用到的路径。
注意点:

  1. 本地验证时(没有语法错误):会自动在"/Users/用户/Library/Caches/CocoaPods/Pods/External/.podspec文件名/035cb9aa62b9d49f904fad1119b83da4-aebfe"文件目录下查询"podName/*/"。 如果路径不对,终端会提示 The source_files pattern did not match any file. 这时候应该查询有没有你的podName文件夹,没有就自己新建一个。
  2. git仓库路径:上面提到的是本地验证,验证通过就可以发布了。但是git上如果没有与之对应的文件路径,pod update 下来的库你会发现没有文件。

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

这里再说一下#.subspec 这个属性

注册命令执行完之后,对应的邮箱地址会收到一封邮件,“请确认您的注册CocoaPods通过点击以下链接:”,打开链接地址完成验证,如果地址不能点击就直接粘贴URL到浏览器上执行

s.public_header_files = 'Expand/NetWork/.h'
ss.subspec 'DownLoadTool' do |sss|
sss.source_files = 'Expand/NetWork/NetWorkDownloadTool/
.{h,m}'
sss.dependency 'PXLNetWork/NetWork/RequestTool'
end

查看自己的注册信息

.source_files 在导入xcode时只会导入文件,文件夹会忽略掉。使用.subspec会创建文件夹,在.subspec文件里的代码文件如果要用到父subspec里的代码.h文件,需要在父subspec里面用s.public_header_files声明。(dependency在. subspec 还可以依赖别的subspec # podspec名/subspec名)

pod trunk me

  1. 发布

图片 26

pod spec lint podName.podspec --allow-warnings #检验pod是否有警告
pod trunk push podName.podspec --allow-warnings #私有pod时请跳过此步骤)

pod spec create FireRadarSDK

发布中出现的问题终端都会提示的很清楚,这里要注意的是:最好不要用文本编辑打开 podName.podspec,这可能会导致文件转码异常。(我这里是xcode打开 其他的开发软件也是可以)

下一篇:没有了
友情链接: 网站地图
Copyright © 2015-2019 http://www.zen-40.com. mgm美高梅有限公司 版权所有