腦殼大炼彪,寫了個cocoapods 已經(jīng)上了 后面增加內(nèi)容,搞忘了以前怎么寫的了 ?還是在簡書上面記錄哈別到時候更新的還是忘了?
1.github上面新建一個項目;
2.git clone 到本地;
3.cd 到當(dāng)前目錄?創(chuàng)建.podspes文件 for?example ?JJTools.podspec;
$ pod spec create JJTools;
4.在目錄中創(chuàng)建工程(此處命名為JJTools)贩猎,創(chuàng)建共享的類Classes;
5.編輯podspec文件;
6.驗證:pod lib lint JJTools.podspec?--verbose. //只驗證本地
? ? ? ? ? ? pod spec lint JJTools.podspec?--verbose//本地和線上一起驗證 推薦這種
7.打tag,push蜗顽。這里tag加v例如
$ git tag 'v1.1.1'
$git push --tags
$git push origin master
8.注冊pod trunk register xxx@xx'Your name' --description='macbook pro'//已經(jīng)注冊略過
9.發(fā)布:pod trunk push JJTools.podspec --allow-warnings
10.刪除三方庫//這個還未驗證過
pod trunk delete JJTools0.0.1
pod trunk deprecate JJTools
podsetup
10.清除緩存:pod cache clean --all
以下說幾個遇到的坑和經(jīng)驗,供自己以后回顧和道友一起看:
1.確保自己的項目能有run起來雨让,前期不知道咋的build沒問題但是run的時候始終沒反應(yīng)導(dǎo)致最后trunk的時候一直報這個錯誤:
2.-Wnon-modular-include-in-framework-module
這個錯誤出現(xiàn)的時候網(wǎng)上的道友說的是這樣設(shè)置發(fā)現(xiàn)并沒有什么卵用
最后發(fā)現(xiàn)在podspec里面這樣設(shè)置就可以了
s.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }
3.關(guān)于文件夾分層和頭文件的設(shè)置
我看了很久如果里面不分層的話,這樣就直接包括了所有
s.source_files = 'JJTools/JJTools/Classes/**/*'
分層的話,
s.source_files = 'JJTools/JJTools/Classes/JJBaseHeader.h'
s.public_header_files = 'JJTools/JJTools/Classes/JJBaseHeader.h'
s.subspec 'JJModel' do |ss|
? ss.source_files = 'JJTools/JJTools/Classes/JJModel/*'
?ss.dependency 'JJTools/JJDefine'
??end
最開始不理解這種分層的做法雇盖,其實相當(dāng)于在JJTools里面有個子podspec,只要制定了子podspec包含那些上層的自然包括了,而頭文件不在任何子podspec里面栖忠,所以只要s.source_files 包含一個頭文件就好崔挖。可以參考AFN的這種寫法庵寞;
4.項目中既有ARC又有MRC
把MRC單獨(dú)分層出來
non_arc_files = 'JJTools/JJTools/Classes/JJSafe/*'
s.exclude_files = non_arc_files
s.subspec 'JJSafe' do |ss|
? ss.source_files = non_arc_files
? ss.requires_arc = false
? end
5.關(guān)于framework的使用可以在上層podspec中全部寫出來 下面的子podspec不寫 ;
6.如果發(fā)現(xiàn)?pod spec lint 沒問題 ?但是一直trunk一直不對 考慮重新打個tag在push狸相;
7.整個項目在我這里的層級關(guān)系如下cd的項目根目錄
ok,最后的install后安裝是這樣的