最近項(xiàng)目經(jīng)管理需要做到組件化悦析,而組件化自己動(dòng)手的第一步
需要用到 CocoaPods
制作私有PodSpec
检访,網(wǎng)上查了很多相關(guān)文章,跟著文中去實(shí)施起來千埃,發(fā)現(xiàn)作者自己理解了,寫出來中間多多少少都會(huì)少幾步忆植,實(shí)踐起來需要結(jié)合上下文花費(fèi)大量時(shí)間去理解放可。寫這篇目的是以一個(gè)新手角度,跟著文中一步一步來從0開始讓你只需要2小時(shí)
學(xué)會(huì) CocoaPods 制作私有倉庫朝刊,熟練起來還需要多練幾次就能達(dá)到像我一樣耀里,現(xiàn)在只需要5分鐘打完tag
后推到自己私有庫。
1拾氓、
github 創(chuàng)建倉庫(pod倉庫 https://github.com/cicic1c1/podspec.git)冯挎,這個(gè)倉庫作用管理pod的版本(倉庫要初始化,不能為空里面有個(gè)文件README.md咙鞍,或者自己弄個(gè)文件上去(不能是空文件夾)房官,否則步驟14
會(huì)失敗push不上去,需要去自行研究 Git
知識(shí) baidu续滋、Google)
2翰守、
添加私有庫,把步驟1
中創(chuàng)建的pod倉庫疲酌,添加到本地 ~/.cocoapods/repos
中蜡峰,只需要執(zhí)行命令 pod repo add mypodspec https://github.com/cicic1c1/podspec.git
,去查看所有pod倉庫執(zhí)行pod repo
查看添加成功沒有
3徐勃、
github 創(chuàng)建倉庫(代碼倉庫https://github.com/cicic1c1/code.git)事示,這個(gè)倉庫作用管理代碼 (這個(gè)倉庫為空倉庫,里面什么都沒有僻肖,README.md也沒有肖爵,初始化也沒有,不然步驟12
會(huì)push失敗臀脏,需要去自行研究 Git
知識(shí) baidu劝堪、Google) 冀自,此時(shí)我們有了2個(gè)倉庫
4、
去你想去的目錄初始化一個(gè)pod工程秒啦,執(zhí)行pod lib create Demo
熬粗,我是在~/Desktop
目錄下初始化pod工程,我自己全部選No
(為什么選No步驟5
有詳細(xì)說明余境,我不需要pod幫我創(chuàng)建一個(gè)測(cè)試工程)驻呐。 這一步根據(jù)自己的需求選擇,(這是pod
知識(shí)芳来,自行baidu含末、Google pod lib create
)
5、步驟4
成功后打開Demo文件夾即舌,在根目錄刪除 _Pods.xcodeproj佣盒、Example
,有(Assets/Classes)文件夾改名 Sources
(這樣做的目的是不需要pod lib create Demo
這一步時(shí)候顽聂,在這個(gè)問題 Would you like to include a demo application with your library? [ Yes / No ] > Yes 肥惭,Yes就會(huì)幫我們創(chuàng)建一個(gè)測(cè)試工程
。如果創(chuàng)建了測(cè)試工程紊搪,你需要將你寫好的工具類丟到Classes目錄下蜜葱,cd到Example文件夾下(Yes才有這個(gè)文件夾),再執(zhí)行pod install
你的這個(gè)測(cè)試工程就有了你工具類嗦明,這樣操作太麻煩)所以我自己新建一個(gè)同名
工程笼沥,每次Classes創(chuàng)建類蚪燕,就沒有這一步操作詳細(xì)請(qǐng)看步驟6
6娶牌、
打開 Xcode 新建一個(gè)同名
工程(我的名字是Demo),將新建工程里面文件全部
丟進(jìn)你刪除那個(gè)文件夾下面(也是就是步驟5
那個(gè)文件夾)馆纳,完成后如圖6.2.png
诗良。
7、
去pod lib create Demo
出來Demo根目錄執(zhí)行pod init
,pod install
(一定要先init
鲁驶,再install
鉴裹,這樣就能把自己建的那個(gè)工程與pod lib create Demo
那個(gè)工程關(guān)聯(lián)起來)。
8钥弯、
把pod lib create Demo
出來的工程径荔,關(guān)聯(lián)到github
創(chuàng)建代碼倉庫(代碼倉庫https://github.com/cicic1c1/code.git)執(zhí)行命令git remote add origin https://github.com/cicic1c1/code.git
, 查看關(guān)聯(lián)上沒有git remote -v
9脆霎、
打開 Demo.xcworkspace
將Sources总处,Demo.podspec
丟進(jìn)工程。Classes 目錄下就可以寫工具類代碼了睛蛛,我寫了一個(gè)打印測(cè)試Test.swift
10鹦马、
修改Demo.xcworkspace
里面pod
配置信息胧谈,這個(gè)可以baidu、Google荸频,根據(jù)項(xiàng)目需要來配置菱肖。
s.homepage = '步驟3中地址(代碼倉庫地址)'
s.source = '步驟3中地址(代碼倉庫地址)'
s.ios.deployment_target = '10.0' (工程targets 對(duì)應(yīng)修改10.0)
我自己項(xiàng)目支持10.0
s.swift_version = '5.0'
我自己項(xiàng)目支持5.0
s.source_files = 'Sources/Classes/**/*'
步驟5中改Sources對(duì)應(yīng)
s.resource_bundles = ...['Sources/Assets/*.png']
11、
驗(yàn)證 Demo.xcworkspace
文件編寫是否正確旭从,執(zhí)行pod lib lint
稳强,"--allow-warnings"為忽略警告作用(Sources 里面要有文件不能為空否則無法驗(yàn)證通過, 'source_files' 會(huì)報(bào)錯(cuò))和悦,我的項(xiàng)目有警告所以用這句pod lib lint --allow-warnings
键袱,看到Demo passed validation.
為驗(yàn)證通過
12、
上傳代碼到步驟3
代碼倉庫摹闽,倉庫中有了代碼
git add .
git commit -m "test 打印輸出類"
git pull
git push origin master
13蹄咖、
打tag,推送tag 到代碼倉庫
git tag -a 0.1.0 -m "V0.1.0"
git push origin 0.1.0
14付鹿、
push 代碼倉庫的Demo.podspec
到pod倉庫中去澜汤,執(zhí)行命令pod repo push mypodspec Demo.podspec --allow-warnings --verbose
(push 步驟3
倉庫中的 *.podspec -> 步驟1
倉庫中去) 無報(bào)錯(cuò)成功。(.cocoapods/repo可以查看 tag 成功沒有)舵匾,命令意思pod repo push (.cocoapods/repo/倉庫名俊抵,步驟2中起的名字) Demo.podspec(pod 配置文件) --allow-warnings --verbose(去掉警告)
15、
新建一個(gè)工程Podfile 引入私有庫坐梯,至此測(cè)試成功
在實(shí)施步驟14徽诲、pod repo push [xxx] [xxx]
增加私有 pod 時(shí)出現(xiàn)過2次問題:The repo `xxxxx` at `../../../../../.cocoapods/repos/xxxx is not clean
解決辦法:1、先移除 pod repo remove [xxx]
2吵血、再次添加pod repo add [xxx] [倉庫地址]