最近看到元件化,抽取公共程式碼做成第三方庫供coocpods管理也是其中一種比較流行的方法,於是動手按別人教程進行了一遍,其中多有坑,記之免忘之,以後還踩。
1)在github上建立一個程式碼庫,成功後拿到git地址即可,最初始的目錄
2)執行 pod repo add O2Specs https://github.com/zypsusu/ZYPTEST.git
拉取倉庫到本地cocopods的目錄中, O2Specs可以隨便命名
3) cd到O2Specs這個目錄,執行 pod spec create ZYP 建立Spec配置檔案, ZYP就是你第三方庫的名字,也能隨便命名。
4)這時候可以在當前目錄建立一個工程,建立一個資料夾包含要引用的.h,.m檔案,建立bundle包含圖片,xib要按靜態庫做法編譯成.nib檔案。 注: 當然也可以先建立工程,引用檔案,圖片,xib都建立好,然後在工程所在目錄建立Spec配置檔案
5)Spec配置檔案的填寫
Pod::Spec.new do |s|
s.name = "ZYP"
s.version = "0.0.2"
s.summary = " of ZYP."
s.description = <<-DESCpod spec create PrivateSpecDemopod spec create PrivateSpecDemoDESC
s.homepage = "https://github.com/zypsusu/ZYPTEST"
s.license = { :type => "MIT", :file => "README.md" }
s.author = { "zypsusu" => "yongpeng209@iCloud.com" }
s.platform = :ios, "7.0"
s.source = { :git => "https://github.com/zypsusu/ZYPTEST.git", :tag => "#{s.version}" }
s.source_files = "testDemo/testDemo/ZYPAFN/**/*.{h,m}"
s.resources = "testDemo/testDemo/image.bundle"
s.requires_arc = true
# s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
# s.dependency "JSONKit", "~> 1.4"end複製程式碼
注:這裡路徑的填寫是以Spec配置檔案所在的目錄為起始目錄進行填寫,如果引用其他第三方庫,要填寫依賴庫
6) pod lib lint 進行本地驗證,主要是路徑填寫不正確,可以多試幾次;
7)這時就可以將配置檔案還有新建工程全部上傳到git上,最重要的就是一定要打tag
git add . git commit -m 'first' git push origin master
git tag -m '0.0.2' 之前成功,後來這個命令不起作用跳出一堆git tag相關命令, 改用git tag '0.0.2' 可以正常使用
git push --tags 或者git tag origin '0.0.2'
8)這時候其實已經完成了第三方庫的製作, 你可以新建一個工程 ,建立PodFile
platform :ios, 7.0
target :’testGit’ do
pod ‘ZYP’, :git => ‘https://github.com/zypsusu/ZYPTEST.git’
end
複製程式碼
然後pod install 下載成功, 如果想要寫成source 形式則先要在 7)完成後將 spec配置檔案上傳至遠端Spec,不然會找不到ZYP這個spec,從而pod 失敗
pod repo push O2Specs ZYP.podspec
複製程式碼
成功後你新建工程的PodFile才能寫成如下形式
platform :ios, 7.0
source 'https://github.com/CocoaPods/Specs.git'
source ‘https://github.com/zypsusu/ZYPTEST.git’
target :’testGit’ do
pod ‘ZYP’,’~> 0.0.2’
end
複製程式碼
9) 庫的更新:在O2Specs目錄下工程功能迭代,引用檔案程式碼更新後,修改spec配置檔案版本號,然後重新進行 6) 7) 8)操作,引用第三方庫的工程pod update即可更新到最新版本。 目前同一個Spec不同版本上傳到遠端,會有不同版本檔案的spec,但 pod ‘ZYP’,’~> 0.0.2’ 和pod ‘ZYP’,’~> 0.0.3’效果是一樣的,都是拿到最新0.0.3的版本的程式碼檔案,以後有時間繼續摸索。 只找到建立一個名字不一樣的Spec,Second.Spec來對應0.0.2版本的, pod ’Second‘ 來回退到0.0.2的方法
哈哈,今天發現了不能指定版本是因為ruby語法不對,指定版本直接就是pod 'ZYP','0.0.2',自己好方。。。