通过构建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 ...
随机推荐
- Python_练习_VS清理器
#导入os import os #创建列表放入后缀 d=[ '.txt','obj','tlog','lastbuildstate','idb','pdb','pch','res','ilk','sd ...
- Bitmap.createBitmap函数有6个重载方法
位图剪切参考重载方法4和6,重载方法6比较简单 public static Bitmap createBitmap (Bitmap src)从原位图src复制出一个新的位图,和原始位图相同 publi ...
- CSS三栏布局的四种方法
总括: 不管是三栏布局还是两栏布局都是我们在平时项目里经常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操作中也只会依赖那某一种方法,本文具 ...
- 计算几何——认识基本object:点、线、面 。
认识基本object:点.线.面 一.点 点用P(x, y)来表示:如: typedef pair<double, double> _pair; _pair point[MAXN]; 二 ...
- 初次使用IDEA创建maven项目
第一次使用IDEA,创建一个maven项目,首先下载maven,官方地址:http://maven.apache.org/download.cgi 解压,在环境变量里配置 path里 D:\maven ...
- mysql基准测试与sysbench工具
一.基准测试简介 1.什么是基准测试 数据库的基准测试是对数据库的性能指标进行定量的.可复现的.可对比的测试. 基准测试与压力测试 基准测试可以理解为针对系统的一种压力测试.但基准测试不关心业务逻辑 ...
- django+uwsgi+nginx部署(非常详细)
django+uwsgi+nginx部署 1.介绍: 在网上看了很多教程,但自己部署了很久都没有成功,这篇博文记录自己所踩过得坑. 2.环境: Ubuntu 16.04.1 LTS (GNU/Linu ...
- Atcoder regular Contest 073(D - Simple Knapsack)
Atcoder regular Contest 073(D - Simple Knapsack) 传送门 因为 w1≤wi≤w1+3 这个特殊条件,我们可以将每个重量离散化一下,同时多开一维记录选择的 ...
- Direct3D 12 创建windows窗口
之前列出了计算机图形学的计划,现在开始这一阶段的学习,首先是Windows窗口的创建. 创建windows窗口 环境: 1. Visual Studio 2015 新建项目 创建工程项目完成,确定为窗 ...
- Leetcode 152.乘机最大子序列
乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 ...