1.在github上面創建自己項目
2.將項目clone到本地
1、$ git init
2、$ git clone https://github.com/markStudy/BDHelper.git
3. 給倉庫創建個podspec文件
pod spec create ****
4.編寫podspec文件
s.source_files = ' ' 的多種寫法
s.source_files = "BDHelper", "BDHelper/**/*.{h,m}"
表示BDHelper/BDHelper/目錄下的所有 .h 和 .m 文件
s.source_files = 'BDHelper/**/*
表示BDHelper/ 目錄下所有文件,包括子目錄下所有文件。 **/*
表示遞歸
當有多個文件時,應用,隔開
s.source_file = 'MMDrawerController/MMDrawerController.{h,m}', 'MMDrawerController/UIViewController+MMDrawerController*'
5.更新內容到git上面
6.檢查podspec文件
$ pod spec lint ***.podspec
pod lib lint 和 pod spec lint 命令的區別
pod lib lint是只從本地驗證你的pod能否通過驗證
pod spec lint是從本地和遠程驗證你的pod能否通過驗證
我一般都是直接使用pod spec lint去驗證pod有沒有問題
驗證可能出現的錯誤,把我遇到的一些問題, 單獨寫了出來.
-
swift版本未指定
Mark-Mac:BDHelper Mark_Mac$ pod lib lint LZTool.podspec
-> BDHelper (0.0.3)
[!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a `.swift-version` file to set the version for your Pod. For example to use Swift 2.3, run:
`echo "2.3" > .swift-version`.
解決方案:echo 3.0 > .swift-version
-
fatal: Remote branch 0.0.1 not found in upstream origin
Mark-Mac:BDHelper Mark_Mac$ pod spec lint
-> BDHelper (0.0.1)
- ERROR | [iOS] unknown: Encountered an unknown error ([!] /usr/bin/git clone https://github.com/LQQZYY/PodTest.git /var/folders/14/95vmx0495_s5292ltvwpsc8h0000gn/T/d20170111-11240-1l3iq9n --template= --single-branch --depth 1 --branch 0.0.1
Cloning into '/var/folders/14/95vmx0495_s5292ltvwpsc8h0000gn/T/d20170111-11240-1l3iq9n'...
warning: Could not find remote branch 0.0.1 to clone.
fatal: Remote branch 0.0.1 not found in upstream origin
) during validation.
Analyzed 1 podspec.
[!] The spec did not pass validation, due to 1 error.
[!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a `.swift-version` file to set the version for your Pod. For example to use Swift 2.3, run:
`echo "2.3" > .swift-version`.
Mark-Mac:BDHelper Mark_Mac$
這是因為在你托管代碼的庫里(這里是指github)找不到這個分支, 也就是在編輯 BDHelper.podspec時, 里面的字段s.verson, s.source 中的 tag與github創建的release版本號不一致導致, 修改為一樣即可!
- 如果私有庫添加了靜態庫或者dependency用了靜態庫
-> MKUMengShare (0.0.1)
- WARN | homepage: The homepage has not been updated from default
- WARN | url: There was a problem validating the URL http://EXAMPLE/MKUMengShare.
- ERROR | [iOS] unknown: Encountered an unknown error (The 'Pods-App' target has transitive dependencies that include static binaries: (/private/var/folders/vx/w71z8znj0rl9b531jj620r640000gn/T/CocoaPods/Lint/Pods/UMengUShare/UShareSDK/UMSocialSDKPlugin/libUMSocialLog.a, /private/var/folders/vx/w71z8znj0rl9b531jj620r640000gn/T/CocoaPods/Lint/Pods/UMengUShare/UShareSDK/UMSocialSDK/UMSocialCore.framework, /private/var/folders/vx/w71z8znj0rl9b531jj620r640000gn/T/CocoaPods/Lint/Pods/UMengUShare/UShareSDK/UMSocialSDK/UMSocialNetwork.framework, /private/var/folders/vx/w71z8znj0rl9b531jj620r640000gn/T/CocoaPods/Lint/Pods/UMengUShare/UShareSDK/SocialLibraries/QQ/QQSDK/TencentOpenAPI.framework, /private/var/folders/vx/w71z8znj0rl9b531jj620r640000gn/T/CocoaPods/Lint/Pods/UMengUShare/UShareSDK/SocialLibraries/QQ/libSocialQQ.a, /private/var/folders/vx/w71z8znj0rl9b531jj620r640000gn/T/CocoaPods/Lint/Pods/UMengUShare/UShareSDK/SocialLibraries/WeChat/libSocialWeChat.a, /private/var/folders/vx/w71z8znj0rl9b531jj620r640000gn/T/CocoaPods/Lint/Pods/UMengUShare/UShareSDK/SocialLibraries/WeChat/WechatSDK/libWeChatSDK.a, and /private/var/folders/vx/w71z8znj0rl9b531jj620r640000gn/T/CocoaPods/Lint/Pods/UMengUShare/UShareSDK/UMSocialUI/UShareUI.framework)) during validation.
[!] The spec did not pass validation, due to 1 error.
[!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a `.swift-version` file to set the version for your Pod. For example to use Swift 2.3, run:
`echo "2.3" > .swift-version`.
找了一些相關的,這個錯誤是因為依賴庫(s.dependency)包含了.a靜態庫造成的。雖然這并不影響Pod的使用,但是驗證是無法通過的。可以通過 --use-libraries 來讓驗證通過。使用以下的命令:
pod spec lint ****.podspec --use-libraries
-
如果還有警告,輸入--allow-warnings
$ pod spec lint ****.podspec --use-libraries --allow-warnings
7.發布自己的pods到CocoaPods trunk
使用CocoaPods trunk之前請確認CocoaPods版本是否是0.33或以上,打開Teaminal(終端)輸入pod --version即可查看,如果版本過低,請執行sudo gem install cocoapods安裝最新版本!
- 注冊trunk
pod trunk register 郵箱地址 '用戶名' --description='用戶名' --verbose
如果所有的步驟都能成功的話,你會受到一份郵件,需要點擊驗證下。
- 查看trunk
pod trunk me
可以查看你已經注冊的信息,其中包含你的name、email、since、Pods、sessions,其中Pods為你往CocoaPods提交的所有的Pod!
- 添加其他維護者(如果你的pod是由多人維護的,你也可以添加其他維護者)
pod trunk add-owner '用戶名' 郵箱地址
- 將你的庫文件.podspec文件提交到公有的specs上面,成功后會出現Congrats信息噢~
$ pod trunk push
- 如果還有警告,輸入--allow-warnings
$ pod trunk push --allow-warnings
8.Done
執行pod install
命令
補充
這時候輸入 pod search ***
,你會發現可能搜索不到你剛剛上傳的庫
解決方案:刪除~/Library/Caches/CocoaPods目錄下的search_index.json文件
rm ~/Library/Caches/CocoaPods/search_index.json
- 刪除成功后再執行pod search
- 輸出:Creating search index for spec repo 'master'.. Done!,稍等片刻就會出現所有帶
***
字段的類庫出現。