iOS组件化----- 创建私有组件库

一、远程私有索引库创建(本文远程仓库都是基于码云)

1、创建远程私有索引库MyLib(和创建远程工程一样),复制仓库地址(点击克隆/下载)

创建远程私有组件库.jpg

2、打开终端,将远程私有库关联到本地

cd /Users/jamace/.cocoapods/repos
pod repo add MyLib https://gitee.com/jamace/MyLib.git

https://gitee.com/jamace/MyLib.git是上面仓库MyLib点击克隆/下载按钮复制下来即可
打开前往-前往文件夹-/Users/jamace/.cocoapods/repos会发现多了一个MyLib文件夹

二、创建私有仓库(组件工程)

1、在桌面创建文件夹MyDemo

2、本地私有代码库

# cd到MyDemo文件夹目录
cd /Users/jamace/MyDemo
# 这里的XJTestComponent是组件名称(自由创建)
pod lib create XJTestComponent

如果提示要输入码云账号,按照提示要求操作就行
执行pod lib create XJTestComponent操作后稍等一会会出现一些组件工程的配置,按照以下配置即可

What platform do you want to use?? [ iOS / macOS ]
>iOS

//开发语言设置,根据自己而定,这里为ObjC
What language do you want to use?? [ Swift / ObjC ]
>ObjC 

//是否需要创建一个demo用来测试你的组件,这里选择Yes,是为了之后对写好的组件进行测试
Would you like to include a demo application with your library? [ Yes / No ]
>Yes 

//测试框架
Which testing frameworks will you use? [ Specta / Kiwi / None ]
>None 

//是否要做基础的视图测试
Would you like to do view based testing? [ Yes / No ]
>No 

//文件前缀
What is your class prefix?
>XJ 

3、创建完成过后,我们的工程会自动打开,创建完成后,工程的目录如下

组件工程.jpg

1、XJTestComponent.podspec这个是仓库配置文件;
2、在finder打开XJTestComponentView并且复制这两个文件添加到/Users/jamace/Desktop/MyDemo/XJTestComponent/XJTestComponent/Classes/XJTestComponentView这个文件夹下;
3、注意删除ReplaceMe.m文件,找到XJTestComponent下面的Classes文件夹,这里就是我们要放代码的地方,如图

组件文件.jpg

4、本地仓库建好了,前往码云创建远程仓库项目https://gitee.com创建项目XJTestComponent

远程组件库.jpg

5、创建成功后配置XJTestComponent项目的.podspec文件,文件位置如上图XJTestComponent.podspec,做以下修改

配置文件修改.jpg

0.1.0这个版本在后面更新组件的时候会更改,会跟tag一起更改

6、更新本地组件代码到码云上

cd /Users/jamace/MyDemo/XJTestComponent
git remote add origin https://gitee.com/jamace/XJTestComponent.git #添加远程仓库
git push -u origin master #第一次可能会报错可尝试用 git push -u origin master -f 可能会覆盖远程的修改
git add . #记得后面一定要有 .
git commit -m "创建测试组件"
git push -u origin master
git tag '0.1.0' #注意:这里的tag号必须和.podSpec文件的版本号一致
git push --tags

执行上面操作后前往码云就能看到代码已经提交到XJTestComponent仓库

7、对文件进行本地验证和远程验证(在工程目录下)

->从本地验证你的pod能否通过验证
pod lib lint --use-libraries --allow-warnings

--verbose:有些非语法错误是不会给出错误原因的,这个时候可以使用--verbose来查看详细的验证过程来帮助定位错误。
--use-libraries:表示使用静态库或者是framework,这里主要是解决当我们依赖一些framework库后校验提示找不到库的时候用到。
--allow-warnings:表示允许警告。


本地验证成功.jpg
->从本地和远程验证的pod能否通过验证
pod spec lint --use-libraries --allow-warnings
repos验证成功.jpg
->将spec 文件提交到本地的私有仓库,然后再push到远程仓库
pod repo push MyLib XJTestComponent.podspec --use-libraries --allow-warnings 
push到远程仓库.jpg
->此时打开/Users/jamace/.cocoapods/repos/MyLib,发现下面多出XJTestComponent文件
MyLib目录下的组件版本.jpg
->查看远程私有索引库
码云上的XJTestComponent索引库.jpg
->使用终端查看自己的私有组件
pod search XJTestComponent

如果提示
[!] Unable to find a pod with name, author, summary, or description matching XJTestComponent
没有找到的话可以删除search_index.json

终端输入

rm ~/Library/Caches/CocoaPods/search_index.json

重新搜索

pod search XJTestComponent

三、如何在项目中使用组件库

->新建项目XJTestComponentDemo,cd到该项目目录下添加Podfile文件,其中的仓库远程地址指定去哪个资源去搜索资源
cd /Users/jamace/Desktop/XJTestComponentDemo #项目目录
vim Podfile #创建Podfile
pod install #安装组件库
在项目中导入组件库.png

三、如何更新组件库

1、我们在之前的XJTestComponentView目录下新增XJTestComponentView1目录并且添加新的代码

待更新的代码.jpg

2、更新代码到远程仓库

->修改XJTestComponent.podspec中的版本号0.1.1
待更新的版本.jpg
->cd到组件库的位置
cd /Users/jamace/MyDemo/XJTestComponent
git add .
git commit -m '新的更新描述'
git pull  #在更新之前先拉下代码
git push origin master #提交代码

2、仓库版本更新

git tag -a '0.1.1' -m '这里需要与上面XJTestComponent.podspec中修改的版本一致'
git push --tags
新添加的tag.jpg

可以看到我们新的0.1.1的tag

3、更新索引库

->验证本地仓库
pod lib lint --use-libraries --allow-warnings
->验证本地仓库和远程仓库
pod spec lint --use-libraries --allow-warnings
->将spec 文件提交到本地的私有仓库,然后再push到远程仓库
pod repo push MyLib XJTestComponent.podspec --use-libraries --allow-warnings 

执行这一步如果报错[!] The repo MyLib at ../../../.cocoapods/repos/MyLib is not clean,执行以下步骤

pod repo remove MyLib    #移除本地私有库
pod repo add MyLib https://gitee.com/jamace/MyLib.git      #在添加本地私有库
pod repo push MyLib XJTestComponent.podspec --use-libraries --allow-warnings    #再执行推送
更新索引库.jpg

搜索看一下有没有我们新的0.1.1版本库

pod search XJTestComponent

如果报错[!] An unexpected version directory Classes was encountered for the /Users/jamace/.cocoapods/repos/gitee-jamace-xjtestcomponent/XJTestComponent Pod in the XJTestComponent repository.
解决方法:去/Users/jamace/.cocoapods/repos删除gitee-jamace-xjtestcomponent这个目录在执行pod search XJTestComponent就好了

新的组件库.jpg

四、如何设置第三方库依赖

XJTestComponent.podspec配置文件里默认s.dependency 'AFNetworking',这个就是设置组件库依赖AFNetworking
如果我们只要求某个文件夹里的类依赖,而其他类不依赖,那就要如下设置子库:

s.subspec '子库名称' do |别名|
end
部分依赖.jpg

注意上面的deployment_target要设置成9.0,因为AFNetworking4.0只支持ios9.0+,这里设置的意思是XJTestComponentView这个文件夹里面的文件依赖AFNetworking,而XJTestComponentView1这个文件夹里的文件则不设置依赖。这样设置我们就可以分开安装了,比如在我们的新工程XJTestComponentDemo的Podfile中配置,这样就给我们分开安装需要的库了:


子库安装.jpg

至此,创建私有组件库的基本流程over~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342