通过构建Cocoapods私有库进行组件化开发探索
专题一
一、创建私有索引库
选Github或者码云都可以,本例以Github为例。创建私有索引库用来作为自己组件库的索引:

二、本地添加私有索引库
添加:pod repo add 索引库名称 索引库地址
例:pod repo add ZYHModule https://github.com/zyhDeveloper/ZYHModule.git
查询:pod repo

三、创建组件库(同步骤一操作,在Github或者码云上创建)
四、创建组件工程
1、快速创建模版库
在命令行工具里cd进入桌面文件夹
执行:pod lib create 组件名
例:pod lib create XXModules

2、添加组件内容
我们把基础组件相关的东西丢到Classes文件夹中,并且把ReplaceMe.m文件删除

执行:
git rm XXModule/Classes/ReplaceMe.m
git add .
3、安装与测试本地库
在Example项目的Podfile文件中可以看到 “ pod 'LXFBase', :path => '../' ”,模板库已经默认帮我们在Podfile中指定了LXFBase.podspec的位置,我们无需操作,直接在命令行工具里cd到Example文件夹,执行pod install

4、 修改Spec

五、上传组件代码
1、将代码提交到组件仓库
2、打标签
标签与spec中的s.version保持一致
git tag -a 0.1.0 -m "Release version 0.1.0"
git push origin --tags
六、提交podspec到私有索引库
先做个本地和远程验证
1、本地验证
pod lib lint --allow-warnings
2、远程验证
3、提交podspec
七、使用私有库
测试下搜索我们的组件:pod search XXModules
1、添加Podfile文件
cd到开发的项目工程文件
执行:pod init
2、在Podfile的最顶部添加如下描述
// 第二行是为了保证公有库的正常使用
source 'https://github.com/zyhDeveloper/ZYHModule.git'
source 'https://github.com/CocoaPods/Specs.git'
添加:pod 'XXModules'
3、安装组件
执行:pod install
专题二
一、私有库的更新迭代
更新远程私有仓库
1、代码变动更新
组件库当有新增文件或者发生修改或者删除时,更新迭代执行:
删除:git rm XXXX
git add .
git commit -m '更新描述'
git push origin master
2、版本更新
版本更新 这一步非常重要,为更新索引库做准备
git tag -a 0.2.0 -m "Release version 0.2.0"
git push origin --tags
修改描述文件并更新索引库
1、修改spec文件
打开你的xx.podspec文件,将原本的版本号改为0.2.0,与刚刚的tag保持一致
git add .
git commit -m '更新描述'
2、验证Spec
pod spec lint --allow-warnings
3、更新索引库
// pod repo push 索引库名称 xxx.podspec
pod repo push ZYHModule XXModule.podspec --allow-warnings
最终需更新使用
pod update
二、子库Subspecs的使用
如果我们只需要用到SDWebImage中的GIF功能,那么并不需要将整个SDWebImage都下载下来,在Podfile中将~~pod 'SDWebImage'~~ 改为 pod SDWebImage/GIF即可单独使用这一功能。
子库格式
s.subspec '子库名称' do |别名|
end
使用说明:
s.source_files = 'XXModule/Classes/*'# s.dependency 'SDWebImage', '~> 4.3.3'主库的依赖库
s.subspec 'Cache' do |c|
c.source_files = 'XXModule/Classes/Manager/**/*'c.dependency 'SDWebImage', '~> 4.3.3' 子库的依赖库end
s.subspec 'Manager' do |m|
m.source_files = 'XXModule/Classes/Category/**/*'end
修改后再按之前的步骤更新索引库和组件库就可以了
pod spec lint --allow-warnings(如果文件路径没问题,出现The`source_files` pattern did not match any file可尝试新设置tag)
pod repo push ZYHModule XXModule.podspec --allow-warnings
pod update
如需在某个工程添加子库,可执行:
pod 'XXModule/Manager'
pod install
专题三
资源文件的使用
资源文件都放在Assets文件夹中

一、修改Spec
将关于资源加载的注释去掉
s.resource_bundles = {
# 'LXFMain' => ['LXFMain/Assets/*.png']
改为:'LXFMain' => ['LXFMain/Assets/*']
}
二、修改加载资源代码
使用[UIImage imageNamed:@"图片名称"]加载不出来图片
使用以下代码:
Xib的加载也是如此
如果是直接在xib中拖入一个imageView控件来设置图片的加载,我们则需要在图片名字前加上当前bundle名称 XXXX.bundle/图片名字
专题四
本地私有索引库路径:/Users/Mr.z/.cocoapods/repos
删除私有索引库:
pod repo remove [索引库名称] //移除本地索引库
通过构建Cocoapods私有库进行组件化开发探索的更多相关文章
- 使用CocoaPods创建自己的私有库-iOS组件化第一步
目前iOS组件化常用的解决方案是Pod+路由+持续集成,通常架构设计完成后第一步就是将原来工程里的模块按照架构图分解为一个个独立的pod工程(组件),今天我们就来看看如何创建一个Pod私有库. 新建: ...
- iOS组件化开发入门 —— 提交自己的私有库
前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述cocoapods的私有库封装和提交.组件化开发是个大的议题,涉及到架构思路.设计模 ...
- iOS 组件化开发之使用CocoaPod制作自己的远程私有库
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好 ...
- iOS组件化开发-CocoaPods简介
CocoaPods简介 任何一门开发语言到达一定阶段就会出现第三方的类库管理工具,比如Java的Maven.WEB的Webpack等.在iOS中类库的管理工具-CocoaPods. 利用CocoaPo ...
- iOS:最详细的创建CocoaPods私有库教程
一.感慨 说实话,创建这个CocoaPods私有库,我愣是搞了两个星期,创建的过程中,自己的感情波动是这样的:激情四射---->有点困惑----->极度困惑----->有点失望--- ...
- 从零开始创建CocoaPods私有库
为什么要创建CocoaPods私有库? 避免重复的造轮子 节约时间,方便管理自己的代码 精益求精 创建CocoaPods私有库 1.创建私有仓库工程 执行命令pod lib create SmartB ...
- vue.js组件化开发实践
前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然 ...
- vue组件化开发实践
前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了一下的内容.首先会对使用Vue进行开发的一些前期需要的技术储备进行简单 ...
- vue(9)—— 组件化开发 - webpack(3)
前面两个终于把webpack相关配置解析完了.现在终于进入vue的开发了 vue组件化开发预热 前期准备 创建如下项目: app.js: footer.js: main.js: webpack.con ...
随机推荐
- oracle分析函数之ratio_to_report
ratio_to_report主要完成对百分比的计算,语法为ratio_to_report(exp) over()也就是根据over窗口函数的作用区间,求出作用区间中的单个值在整个区间的总值的比重比如 ...
- vue+VeeValidate 校验范围(部分校验,全部校验)
搜索很久,没有发现有关于vue+VeeValidate部分校验的.自己写一个. 主要是两个场景: 1. 校验范围内,所有的字段. 2. 校验全局所有字段.主要方法: 1.validate(fields ...
- delphi GDI+ [1]
摘抄自:万一的博客 安装头文件:http://www.cnblogs.com/del/archive/2008/06/06/1215319.html 目录 基本使用方法(绘制直线) 绘制一组直线 绘制 ...
- Matlab学习笔记(五)
三.矩阵运算 (一)矩阵函数和特殊矩阵 常见的矩阵处理函数 表3-1 常见的矩阵函数 函数 说明 /或\ 矩阵除法中的左除或右除,可以用于求解线性方程组 accumarray(ind,val) ...
- LeetCode(30) Substring with Concatenation of All Words
题目 You are given a string, s, and a list of words, words, that are all of the same length. Find all ...
- devstck 部署OpenStack Queens allinone
1.环境信息 1台虚拟机 8C16G CentOS 7.2 2.准备工作 #!/bin/bash set -x #配置aliyun的centos和epel mirror mkdir /etc/yu ...
- Leetcode 143.重排链表
重排链表 给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示 ...
- Installing Zabbix 3.2 in Centos 6.8 Clean Install Dependencies Errors
ZABBIX Forums > Zabbix Discussions and Feedback > Zabbix Troubleshooting and Problems > Ins ...
- 【Linux】date命令用法详解(日期格式)
inux下date命令用法 date [OPTION]… [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] date命令参数 ...
- HDU 1525 Euclid Game
题目大意: 给定2个数a , b,假定b>=a总是从b中取走一个a的整数倍,也就是让 b-k*a(k*a<=b) 每人执行一步这个操作,最后得到0的人胜利结束游戏 (0,a)是一个终止态P ...