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的工程中手动设置当然也可以就是费时费力.现在我们来看看如何在私有库配置文件里配置自动 ...
随机推荐
- Selenium3+python自动化009- 截图
一.断言 assert cur_title=='百度一下,你就知道1','title断言失败' 'title断言失败':自定义报错 二.截图 # 调用截屏方法(路径+截图名称)driver.get_s ...
- 关于List比较好玩的操作
作为Java大家庭中的集合类框架,List应该是平时开发中最常用的,可能有这种需求,当集合中的某些元素符合一定条件时,想要删除这个元素.如: public class ListTest { publi ...
- vue使用kkfileview文件预览功能
1.环境要求: java 1.8+ 2.部署运行: 本机以及虚拟机上运行: 1.从https://gitee.com/kekingcn/file-online-preview/releases地址下载 ...
- linux添加新的环境变量
Linux下设置PYTHONPATH环境变量有三种方法:一种作用于当前终端,一种作用于当前用户,一种作用于所有用户. 1.作用于当前终端,直接当前终端输入命令 $ export PYTHONPATH= ...
- 【Node】Webpack调试启动
"start": "webpack-dev-server --port 33333 --content-base ./dist",
- Java中new一个子类对象的同时并不会自动创建一个父类对象
首先重申一个概念:子类会继承父类所有非私有成员变量和方法,包括父类的构造方法 当创建一个子类对象时,首先开辟内存,然后调用类的构造函数,这里的构造函数由两部分组成,一部分是从父类继承而来的父类的构造方 ...
- java-日期取特定值
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * @author G ...
- SSM项目中的.tld文件是什么,有什么作用?怎么自定义tld文件
原文链接:https://www.cnblogs.com/guaishoubiubiu/p/8721277.html TLD术语解释:标签库描述文件,如要在JSP页面中使用自定义JSP标签,必须首先定 ...
- codeforces 1284B. New Year and Ascent Sequence(二分)
B. New Year and Ascent Sequence 题意:定义上升序列Ascent,在一组序列A中,存在1<i<j<n,使得Ai<Aj.现在给定n个序列,求n个序列 ...
- 数据库 concat 与 ||
mysql中用concat,oracle中concat和||都有,都是做字符串拼接的 oracle简单实例: 1.建表 CREATE TABLE tab1 (col1 VARCHAR2(6), col ...