pod 私有 pod 庫創建和使用


1、創建私有的 pod 倉庫,就像 GitHub 這樣的倉庫一樣,大家都把代碼托管到這個里面。

- 1、在自己公司的 git 服務器或者其他平台的 git 服務器上創建私有遠程倉庫,我是用公司的 git 服務器,名字叫 MySpecs ,克隆地址為:https://XXX/XXX/XXX/MySpecs.git

- 2、將私有的遠程倉庫copy到本地。

pod repo add MySpecs https://XXX/XXX/XXX/MySpecs.git

- 3、執行完畢后,在目錄:/Users/xx/.cocoapods/repos 下會多出來一個MySpecs文件夾,至此私有的遠程倉庫部分就完成了。

-注意,這個私有的遠程倉庫生成之后,只做此一步就好。

 

2、創建私有的 pod 組件庫,這里創建一個網絡庫為例

- 1、打開終端,執行命令來創建一個名為 MyNetworkManager 的Pod庫空模板。

pod lib create MyNetworkManager

- 下面是選項的選擇

- Pod庫空模板就自動創建成功了。

- 2、在公司的 git 服務器上面創建 MyNetworkManager 的 git 遠程倉庫,克隆地址是:https://XXX/XXX/XXX/MyNetworkManager.git 。

- git 遠程倉庫這一步大家都很熟悉了,這里要注意的是不要創建 LICENSE 和 README.md 和 .gitignore 文件,不然下面關聯遠程倉庫的時候有問題。

- 在終端 MyNetworkManager 目錄下執行下面命令,關聯本地倉庫到遠程倉庫,推送已經創建的倉庫

git remote add origin https://XXX/XXX/XXXMyNetworkManager.git
git push -u origin master

 - 更換 .gitignore 文件

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

- 提交本次修改。

- 3、刪除ReplaceMe文件,將原項目中需要封裝文件復制到 MyNetworkManager/MyNetworkManager/Classes中,在拖入到項目里面

- 4、修改 MyNetworkManager.podspec 文件

Pod::Spec.new do |s|
  s.name             = 'MyNetworkManager'
  s.version          = '0.1.0'
  s.summary          = '網絡模塊'

  s.homepage         = 'https://XXX/XXX/XXX'
  
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'szb' => 'zhongbo.shen@2339.com' }
  s.source           = { :git => 'https://XXX/XXX/XXX/MyNetworkManager.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '8.0'

  s.source_files = 'MyNetworkManager/Classes/**/*'
  
end

- 5、做正常的 git 提交命令了,這里的 tag 版本號要和上面的 s.version 版本號一致

// Example目錄下
pod install

// 回到項目根目錄下
git add .
git commit -am"此次內容"
git push
git tag 0.1.0
git push origin --tags

- 6、校驗 MyNetworkManager.podspec 文件

pod spec lint --allow-warnings

- 檢驗完成發現沒有錯誤,就說明沒有問題。可以進行最后一步了。

3、上傳 MyNetworkManager.podspec 文件到我們的私有遠程倉庫 MySpecs

pod repo push MySpecs MyNetworkManager.podspec --allow-warnings 

- 上面命令對 MyNetworkManager.podspec 文件做了兩個操作:一個是將其推送到私有的遠程倉庫,可以去 公司的 git 上面 MySpecs 倉庫中查看;另一個是將其 copy 到私有的本地倉庫,這個可以去目錄:/Users/xx/.cocoapods/repos/MySpecs 下查看到。

至此私有的 Pod 庫也就完成了,可以在終端執行 pod search MyNetworkManager 來查詢它,接下來就是在原項目中使用它了。

4、使用私有 pod 庫

- 1、在項目里面,自己的 source 源放到 gitHub 源前面。這樣避免有相同名字的庫名字,會優先拉取自己的私有 pod 庫
- 2、公司內部其他成員在使用之前需要執行下面命令,將私有的遠程倉庫拉到本地,然后就可以正常使用了。
 
           
pod repo add MySpecs https://XXX/XXX/XXX/MySpecs.git

5、注意問題

- 1、有時候會出現一些莫名其妙的問題,可以先試一下清楚緩存
pod cache clean MyNetworkManager --all

 - 2、.podspec錯誤 – source_files`模式與任何文件不匹配

- 3、項目添加Cocoapods支持遇到的坑

- 4、添加 frameworks 和

s.frameworks = "MobileCoreServices", "SystemConfiguration"

- libraries 

libz.tbd 寫成 z ,規則要去除 lib 和后邊的.tbd,配置系統 library 這么簡寫

s.libraries = "c++", "sqlite3.0", "z"

 -5、 缺少架構 normal i386/normal x86_64

  1. The following build commands failed:
  2. Ld /Users/ywk/Library/Developer/Xcode/DerivedData/App-bbsqamfhzhjciwehdhwasdrwlxod/Build/Intermediates.noindex/App.build/Release-iphonesimulator/App.build/Objects-normal/x86_64/Binary/App normal x86_64
  3. Ld /Users/ywk/Library/Developer/Xcode/DerivedData/App-bbsqamfhzhjciwehdhwasdrwlxod/Build/Intermediates.noindex/App.build/Release-iphonesimulator/App.build/Objects-normal/i386/Binary/App normal i386

解決方法:
方法一:首先要檢查source_files 路徑有沒有配置對,我的是目錄分級時由於有一個路徑配置跟其他的重復導致此錯誤。

方法二:然后嘗試:
pod lib lint 后添加 --skip-import-validation

pod repo push 也添加--skip-import-validation
但可能不通過

方法三:podspec 文件添加x86_64 i386配置
s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64' }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM