iOS 组件化开发之使用CocoaPod制作自己的远程私有库
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分。但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好的让拆分出去的业务工程能够独立运行,必须进行组件拆分并且实现组件服务化。
组件化开发优点:
1.组件和组件之间没有明确的约束。
2.组件单独开发、单独测试,不能揉入主项目中开发,测试也可以针对性的测试。
组件主要分为三类:
基础功能组件:
基础 UI 组件:
产品业务组件:
使用 CocoaPods 制作私有库实现过程:
1、创建索引库:
可使用 GitHub、Gitlab、Gitee、等,以 GitHub 为例:

2、将创建的索引库添加到本地 Cocoapods 仓库中:
pod repo add UCKit https://github.com/zhangtibin/UCKit.git

路径是:~/.cocoapods/repos
3、创建模板:
pod lib create UCKit

按提示输入选择后,创建完成,会自动打开 Xcode 工程:

在 Classes 目录下,放入需要添加组件的文件:

进入 Example 目录下,执行:pod install。

4、**.podspec 文件中更改模板文件相关信息:

5、验证 .podspec 文件:
pod lib lint UCKit.podspec --allow-warning
6、将制作好的组件上传至 GitHub
git remote add origin https://github.com/zhangtibin/UCKit.git
git push -u origin master
如果出现报错时,如下,可以采用修改冲突文件,并提交至 GitHub


提交完之后

7、使用:
pod 'UCKit' , :git =>'https://github.com/zhangtibin/UCKit.git'
在执行:pod lib lint UCKit.podspec --allow-warning
出现错误:- ERROR | [iOS] unknown: Encountered an unknown error (/usr/bin/xcrun simctl list -j devices

xcode设置里面,将Command line Tools设置一下,在Xcode>preferences>Locations里面,设置之后再运行终端即可。

解决后,当出现 ** passed validation表示验证成功:

执行:git push -u origin master
报错:
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/zhangtibin/UCKit.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
原因:远程repository和我本地的repository冲突导致的,而我在创建版本库后,在github的版本库页面点击了创建README.md文件的按钮创建了说明文档,但是却没有pull到本地。这样就产生了版本冲突的问题。
解决方案:push前先将远程repository修改pull下来。
$ git pull origin master
$ git push -u origin master
推送之后,就会在 GitHub 上看到新提交的
iOS 组件化开发之使用CocoaPod制作自己的远程私有库的更多相关文章
- iOS组件化开发入门 —— 提交自己的私有库
前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述cocoapods的私有库封装和提交.组件化开发是个大的议题,涉及到架构思路.设计模 ...
- iOS组件化开发-CocoaPods简介
CocoaPods简介 任何一门开发语言到达一定阶段就会出现第三方的类库管理工具,比如Java的Maven.WEB的Webpack等.在iOS中类库的管理工具-CocoaPods. 利用CocoaPo ...
- iOS组件化开发· 什么是组件化
越来越多公司,开始了组件化,你还要等到什么时候...... 说到开发模式,我们最熟知的开发模式 MVC 或者最近比较热门的MVVM.但是我今天说的组件化的开发,其实MVC不是一类的.它其实是····· ...
- iOS组件化开发一本地环境配置(一)
首先我们要使用pod支持组件化开发 解决CocoaPods慢的方案(gem和pod repo换源) gem换源 $ gem sources --remove https://rubygems.org/ ...
- iOS组件化开发一远程私有库的升级(三)
一.远程私有库的升级 1. 把新增的类 拖入到 classes 文件夹中 : 2. 修改 pod.spec 文件的 s.verson = ‘0.2.0': 二.更新远程仓库 1.cd 到本地仓库的位置 ...
- iOS组件化开发一远端私有库建立(二)
公共库业务,基础层划分! 一.构建私有云,本文推荐为码云 1.构建名称为LuckTimeSpec,选择私有建立: 2.Copy地址的https 链接: 二.打开终端 输入: cd /Users/zha ...
- iOS组件化开发一使用source管理远端库升级(四)
一.克隆远端库代码到本地选择master分支 1.克隆 2.代码会显示出你所有版本的tag 二.可以在Example目录下验证代码的正确行: cd 到库的文件夹然后 pod install comma ...
- iOS组件化开发-发布私有库
远程索引库 将远程索引库添关联到本地 pod repo 查看本地已关联仓库源 pod repo add 本地索引库名称 远程索引库仓库地址 pod repo update 索引库名称 pod repo ...
- iOS组件化开发一pod库包含MRC的文件处理(五)
在做项目的过程中,建立了一个私有pod库,在这个库中存在mrc类文件这个时候如果在使用了arc的工程中引用这个pod的工程中手动设置当然也可以就是费时费力.现在我们来看看如何在私有库配置文件里配置自动 ...
随机推荐
- WSO2 ESB XML定义语法(3)
6.Property Mediator 通过Synapse调解的每条消息都可以具有一组关联的属性.Synapse引擎和底层传输在处理的每条消息上设置了许多属性,用户可以操纵这些属性来修改消息流的运行时 ...
- How to write a paper in a weekend - by Prof. Pete Carr
Key points: don't procrastinate; review the notes and renew the literature search; determine who you ...
- dataTables插件的使用
用到dataTables这个插件还是因为Metronic这个框架里有用到,不然我不会选择它的,为啥呢?就感觉它的文档有点复杂(当然,也有我智商不够用的原因):既然用了,那就说说我遇到的问题吧,以防下次 ...
- vscode设置成中文
打开 VS Code Ctrl + Shift +p打开搜索框 搜索框内输入Configure Display Language 回车 修改代码中“locale”后面引号内内容为zh-CH 重新启动V ...
- 全面了解 Java 原子变量类
目录 一.原子变量类简介 二.基本类型 三.引用类型 四.数组类型 五.属性更新器类型 参考资料
- Linux忘记 root密码的解决办法
很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可. 步骤如下: 重启linux系统 重启 ...
- echats--visualmap
visualmap 既图片左下角的筛选按钮 1.对颜色的区分 visualMap: [ { top: 20, left: 0, right: null, // 设置文本为红色 textStyle: { ...
- TD-在http请求头上添加参数
dojo.xhrGet({ url : url, timeout : easy7.timeout, headers: { iBaseToken: easy7.iBaseToken },
- IN中超过1000处理
后台 所有用到IN的方法,都要考虑超过1000的可能 if(cameraIds != null && cameraIds.length > 0){sql.append(" ...
- QT5.1+中文乱码问题
原文连接:https://blog.csdn.net/liyuanbhu/article/details/72596952 QT中规定 QString 的 const char* 构造函数是调用 fr ...