#本文供剛接觸代碼庫且瀏覽了其他文章依然摸不著頭腦的同事,借鑒;請代碼庫老司機指點#
最近3天接觸建立自己代碼庫,網絡上看了很多優(yōu)秀的文章本地庫/遠程公共庫/遠程私有庫? , ?遠程私有庫?,?本地庫/遠程私有庫?,使我對庫的認識理解有了巨大巨大的提升,自我的升華.這些文章本身已經非常詳細具體,但對于我,在閱讀實踐的過程中遇到了層出不窮的坑,欲報無門的感受讓我記憶深刻.另一方面初步掌握新知識時,總結記錄是從小到大教育過我的老師們千叮萬囑的事情.所以嘗試寫下這篇筆記.
相信我是站在第一次接觸代碼庫的角度來寫這篇文章的,現在我陪你一起認識,搭建自己的代碼庫.
目錄:
一:代碼庫 用途 :
二:使用工具 : CocoPods /GitHub/SourceTree
三:本地庫搭建
四:遠程公共庫搭建
五:遠程私有庫搭建
干貨線
一:代碼庫 用途 :
1.功能代碼抽離復用,追求一勞永逸,即使用的第三方庫,如AFNNetwork;我們可以建立功能性代碼的基礎上,實現組件化架構;也是走上大神之路,在gitHub上分享自己的開源庫,達到上萬星成就的第一步(又說出了我的夢想)
2.新項目建項時大多需要的Base代碼集合,一步引入
?二:使用工具 : CocoPods /GitHub/SourceTree
cocopods,github:既然你已經接觸私有庫了,這兩個工具就默認你是熟悉的;如果不的話,按command+w,再見
sourceTree:上面提供的三個文檔鏈接中都是使用終端操作的,因為公司用sourceTree習慣了,所以用了sourceTree軟件,如果你不熟悉使用,通過終端操作是一樣的,都不復雜.
三:本地庫-搭建
本地庫是最簡單的,只需要新建一個podspec格式的文件,準確完善文件中的描述信息(填寫格式很重要)
podspec:cocopod本地庫的說明書,內容是由你來填寫,很簡單的就會出現很多坑
1.終端cd你想存放本地庫的文件夾
2.輸入 : pod spec create <本地庫名字>
3.會生成一個模板podspec文件如下圖
5.根據以下內容完善你的podspec文件,大部分#注釋的暫時不需要,以下內容是必填的
s.version = 0.0.1
s.summary = "簡單描述"
s.description = <<-DESC
詳細描述,長度要大于簡單描述,要另起一行寫在-DESC和DESC中間
DESC
s.homepage = "主頁,本地庫用不到,可以個性發(fā)揮"
s.license = s.license? ? ? = { :type => "MIT", :file => "FILE_LICENSE" } # 開放協(xié)議根據自己的需要填寫? 一般可以填寫MIT,第二個參數指定加載文件的名字
s.autor = { "名字" => "郵箱" }
s.platform = "支持平臺和版本"
s.soure = { :git =>"托管git代碼倉庫地址,本地庫填寫本地庫文件夾的地址如:/Users/Master/Documents/第三方庫/Example1", :tag => s.version }#注意格式s.version
s.souce_files = "soure中關鍵代碼的路徑"
最重要的是souce_files 字段 一定要? 一定要 一定要清晰準確? 其中當前是podspec文件所在層級,填寫源代碼所在的路徑;例如Classes/**/*.{h,m},**是通配符,而且會一層一層的向下匹配,.{h,m}是指定匹配.h/.m文件,此處注意的是 如果存在xib格式的文件,則必須指定h./m.類型,不然加載xib會出錯,xib和圖片等資源型文件應通過s.resource_bundles字段指定.
6.創(chuàng)建license文件,文件名為 FILE_LICENSE (與podspec中設置的對應即可);文件格式為文稿;內容都一樣,只需要將劃線的地方改為你個人的信息
MIT License
Copyright (c) 2017 zhenghaonagehao
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
7.在本地庫文件夾中新建名為:Classes的文件夾,存放源碼文件,不然pod加載不到
8.對本地庫進行git管理
cd 到本地庫,一次執(zhí)行下列命令
git init?
git add .
?git commit -m'initial'
git tag 0.0.1
git push?
9.使用終端檢測,輸入 pod spec lint?
如果存在錯誤如下圖,根據提示進行調整,
常出錯誤:
1, Could not find remote branch 0.0.1 to clone. 這個問題大多是tag值打的不對,因為pod是根據git的tag值進行加載的;如果修改了本地庫中源碼的內容,不需要對使用本地庫的項目進行pod install;但如果是添加/刪除了文件,則需要對使用本地庫項目進行pod install
10.創(chuàng)建使用本地庫的項目,pod file中如下格式設置,重要的是一定要設置為use_frameworks!
pod 'localResp' , :path => '../本地庫' ?(../ :表示從當前podfile的層級返回上一級;也可以設置為絕對路徑)
11.運行xcworkspace就可以看到pods中出現了本地庫中classes文件夾中的源碼
如果在使用本地庫的項目中引用不到本地庫中的文件,設置buildSetting中header search path,添加一個路徑為本地庫的絕對路徑,設置為recurive
四:遠程公共庫-搭建
1.可以通過快速創(chuàng)建lib的方式,同樣,私有本地庫也可以通過這個方式創(chuàng)建
pod lib create yourLibName
使用英文做你的lib名稱,會自動填寫好部分文件的名稱.
2.在github上或者碼云上或者其他代碼托管平臺新建一個空的庫
3.將github上倉庫的地址設置在podspec的s.source中,完善其他信息;將源碼文件放入publicLib文件夾的classes中;同時修改s.homepage
4.終端cd到publicLib,依次執(zhí)行
git init
git add .
?git commit -m'initial'
git remote add master github地址
git push --set-upstream master master
git tag 0.1.0 (版本號保持與pedspec中的一致)
git push --tags
完成后,github上的倉庫為下圖
5.通過lib spec lint進行驗證成功后,將podspec上傳到cocopod的索引庫中
注冊trunk风科,不是任何人都能推送洪灯,因為cocoapods依賴trunk服務器管理,所以需要通過trunk推送自己的podspec(cocoapods官網)
命令:pod trunk register EMAIL [NAME]
[NAME]:? ? 表示NAME可有可無
pod trunk register 58999050@qq.com yuanzheng
驗證成功后,點擊郵箱就好了慨菱,打開會有點慢.
推送自己的podspec到cocoapods的索引庫
pod trunk push HttpManager.podspec --allow-warnings
注意:必須cd 進入到podspec目錄下,才能執(zhí)行這個代碼
注意:podspec文件中的s.version版本號要跟最新Tag一致
注意:podspec文件中的s.source倉庫地址也不能寫錯
測試能否索引到
pod search 自己倉庫
發(fā)現索引不到列林,其實已經上傳到cocoapods上了终吼,只不過需要重新更新索引文件
怎么更新pod索引文件?
原理:pod setup成功后會生成~/Library/Caches/CocoaPods/search_index.json文件
把search_index.json文件文件刪除音念,重新執(zhí)行pod search沪饺,就會重新更新索引.
作者:袁崢
鏈接:http://www.reibang.com/p/7b4667cde80b
來源:簡書
著作權歸作者所有。商業(yè)轉載請聯系作者獲得授權闷愤,非商業(yè)轉載請注明出處整葡。
6.現在可以在使用私有庫的項目中podfile像引用其他第三方庫如AFNWorking一樣使用自己的公共私有庫
五:遠程私有庫-搭建
與遠程公共庫相比,創(chuàng)建的是兩個私有庫
其他流程與遠程公共庫第5步開始不同
現在已經在github或其他平臺創(chuàng)建好了存放源碼的私有庫
5.創(chuàng)建第二個空私有庫,叫做索引庫,作用是用來存放podspec這個索引文件,將自己創(chuàng)建的索引庫添加到本地
pod repo add podSpecResp https://github.com/zhenghaonagehao/podspecResp.git,后面是索引庫遠程地址
通過pod respo 查看添加podSpecResp
6.同樣的方式,將podspec設置好后上傳到第二個私有庫,打上tag值,注意,tag值必須與podspec中version的描述一致,這樣就可以在使用私有庫的時候進行版本控制
pod repo push podSpecResp publicLib.podspec --allow-warnings
本地和遠程庫里都會有podspec文件
7.將第二個私有庫的地址添加到使用私有庫的podfile中
# 表示先去找私有,在找公有
source 'https://github.com/zhenghaonagehao/podspecResp.git'
source 'https://github.com/CocoaPods/Specs.git'
target '測試私有索引庫' do
pod 'publicLib'
pod 'AFNetworking', '~> 3.1.0'
end
六:使用注意
完善學習?繼續(xù)學習?Cocoapods使用私有庫中遇到的坑
接觸時間比較短,自己還是處在搭建基本庫的程度,其他更多的技能,可以在上面兩個連接中習得,像私有庫中依賴其他第三方庫,私有庫中存在xib格式的文件,圖片音頻,劃分子庫等
文中有錯誤理解感謝在評論中給與鞭策;搭建過程中遇到錯誤提示評論打上,經常逛簡書,會及時提供我的幫助