美文网首页
iOS组件化开发—pod私有库

iOS组件化开发—pod私有库

作者: Fxxxxxxx | 来源:发表于2019-07-23 14:48 被阅读0次

最近手头在做的事情是公司老项目转组件化的开发,采用的方案是CTMediator + pod私有库的方式,这也是现在比较流行的组合方式,当前公司的项目,要将大部分代码复用到多个类似的项目,所以组件化也是刚需,今天我们主要来讲怎么创建私有的pod库。

1. 建立repo库

image.png

如上图,默认我们的Cocoapods使用的是上面的来自GitHub的地址,下面的另一个就是我自己建立的用来推送私有库的repo地址。接下来我们看怎么操作:

  • 1.首先需要一个远程的git仓库,这里我使用的是码云的仓库,不仅免费,对于国内用户来说,速度真的比GitHub快的不是一点。这个仓库可以是公开也可以是私有,因为他只是来存储我们提交的私有库的podspec文件,不需要很高的保密性,公开反而更方便团队成员查看和推送。
  • 2. 终端执行 pod repo add SpecName ******.git 这里的SpecName自己设置,后面跟上自己刚才申请的git地址
image.png

执行成功后,可以使用pod repo查看,可以看到自己刚才添加的repo

2. 建立pod私有库

  • 1. 现在开始创建我们自己的私有pod仓库,在本地新建一个文件夹,终端cd到目录下,我们使用pod提供的模板来建一个空的项目,执行下面的命令
    pod lib create YourLib
    image.png
    之后会出现几个选择,按自己的需求来就好了。执行完毕会自动打开这个工程,我们来看一下工程的目录:
    image.png
    • Example文件夹放置了我们的模板工程,可以在这里找到.xcworkspace文件来打开项目
    • Assets文件夹用来放置图片等资源文件
    • Classes文件夹用来放置你的代码

资源文件和代码文件替换完成后,进入Example文件夹执行pod install,模板工程会自动组织好文件。

  • 2. 配置podspec文件
    image.png
    打开工程后,可以直接在工程中找到podspec文件,这里填写的内容和语法什么的,和自己上传pod公开库是一样的,就不具体说明了,想要具体了解的,可以读这篇👉iOS上传自己的开源框架到Cocoapods,这里由于我们还没有建立私有库的git仓库,所以项目主页和代码路径先不填

PS:这里讲我遇到的一个坑,我的一个私有库依赖了静态库,我这里是分享组件依赖了ShareSDK,在私有库里怎么都不能引用头文件,桥接文件也不行,最后的解决方案是主工程导入ShareSDK,然后模块中使用CTMediator调用

另一个不是坑,是个新的尝试,我在pod库的资源文件里放了一个.xcassets文件夹,验证过后可以使用,这样的话我们整理私有库里的图片文件就方便多了

  • 3. 上传私有库到git
    我们这里继续建一个私有的git仓库,一定要是私有(私有库嘛😂),然后cd到我们的刚才私有库的根目录,与git关联
git remote add origin ****.git
git push origin master

这里是把本地项目添加到了仓库的origin/master,你也可以使用SourceTree这些工具,把删除了git文件夹的项目拖入对应的仓库目录,使用工具推送到远程仓库,这里推荐使用SourceTree,对于这种基本的git操作这里就不赘述了。然后就是给分支节点打上对应的tag然后推送,将对应的版本号和代码路径填入podspec文件。

3. 将私有仓库推送到spec

  • 1. 我们来验证podspec文件是否可用,先cd到podspec文件所在的文件夹,执行
pod lib lint --allow-warnings  ****.podspec
  • 2. 验证通过,我们推送到我们的自定义spec
pod repo push MySpec MyLib.podspec --allow-warnings

这里的MySpecMyLib改成自己对应的spec名和文件名,推送不成功的话,看一下报的错,自行解决。

4. 私有库使用

  • 1. 像普通的pod库使用一样,在podfile文件添加pod '****'\
  • 2. 在podfile文件最上部添加source '*****spec.git' 注意这里的git仓库是私有库spec的地址,不是私有库工程

PS:这里有个自己遇到的坑,就是自己的私有库和pod公开库的一个项目重名了,要在自己的pod引用之后加上对应的地址:git => '***.git'。还是要尽量避免重名,加上声明地址会导致每次install或者update都要预下载,减慢pod速度。

欢迎更正错误和交流,回复评论和私信皆可 😊

相关文章

网友评论

      本文标题:iOS组件化开发—pod私有库

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