準(zhǔn)備工作
- 安裝cocoapod (已安裝請(qǐng)忽略玷氏,未安裝請(qǐng)找度娘)
- 創(chuàng)建私有的spection存放地址
① http://xxxxxxx/TJRepo.git
- 創(chuàng)建工具類代碼存放地址
② http://xxxxxxx/TJKit.git
1. 在本地創(chuàng)建spec倉(cāng)庫(kù)
打開終端,在終端輸入
# pod repo add [自定義的本地私有庫(kù)名字] [第一個(gè)git倉(cāng)庫(kù)地址]
如: pod repo add TJRepo http://xxxxxxx/TJRepo.git
項(xiàng)目clone下來(lái)之后,在~/.cocoapods/repos/ 文件夾下就會(huì)多出一個(gè)MyRepo的文件夾卷要,這里就是我們即將存放本地podspec的倉(cāng)庫(kù)
2.配置源碼倉(cāng)庫(kù)
2.1 創(chuàng)建源碼倉(cāng)庫(kù)
這次要用到第二個(gè)git地址,首先我們需要?jiǎng)?chuàng)建一個(gè)空白文件夾【私有倉(cāng)庫(kù)Demo】独榴,然后 cd 到該文件目錄下執(zhí)行
pod lib create [倉(cāng)庫(kù)名字]
如:pod lib create TJKit
如果出現(xiàn)錯(cuò)誤請(qǐng)查看 Q1 是否符合你的情況
Pod私有庫(kù)創(chuàng)建成功僧叉。一般來(lái)說(shuō)創(chuàng)建成功會(huì)自動(dòng)打開項(xiàng)目
【私有倉(cāng)庫(kù)】文件夾下將會(huì)生成一個(gè)【TJKit】的文件夾,目錄結(jié)構(gòu)如下
2.2 修改TJKit.podspec文件
# 基礎(chǔ)信息
Pod::Spec.new do |s|
s.name = 'TJKit' # 名字
s.version = '0.0.1' # 版本號(hào),需要跟我們上傳的tag號(hào)一致
s.summary = 'xxxx' #摘要棺榔,可自定義
# 描述 可自定義
s.description = <<-DESC
xxxxx
DESC
#項(xiàng)目的主頁(yè)瓶堕,同瀏覽器地址
s.homepage = 'http://xxxxx/TJKit'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { '作者' => '您的郵箱' }
# clone的地址
s.source = { :git => 'http://xxxxx/TJKit.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
# 最低支持的iOS版本
s.ios.deployment_target = '10.0'
# 私有庫(kù)所在的文件目錄
s.source_files = 'TJKit/Classes/**/*'
# 關(guān)聯(lián)的圖片資源
# s.resource_bundles = {
# 'TJKit' => ['TJKit/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.dependency 'AFNetworking', '~> 2.3'
end
2.3 添加自己的代碼
把需要做成私有庫(kù)的源碼放到TJKit/Classes中,然后將原來(lái)的placeme.swift文件刪除,注意新文件中不能有依賴錯(cuò)誤
2.4 檢查設(shè)置是否正確
# 檢查命令
pod lib lint --allow-warnings --verbose
驗(yàn)證通過(guò)症歇,如遇驗(yàn)證不通過(guò)可按照提示進(jìn)行修改
問(wèn)題匯總請(qǐng)參考Q&A
2.5 將代碼同步到Git上
git add .
git commit -m "pod test"
git remote add origin http://xxxxxxx/TJKit.git
push origin master
2.6 添加tag并同步
# 0.0.1,對(duì)應(yīng) xxxxx.podspec 中的s.version
git tag -m "First Version" 0.1.0
git push --tags
2.7 向本地的Repo提交podspec文件
# pod repo push [第?一步私有庫(kù)名稱] [podspec?文件]
如:pod repo push MyRepo TJKit.podspec
有警告是不會(huì)通過(guò)的郎笆,如果想忽略警告,或者查看詳情忘晤,可以在命令后添加以下參數(shù)
--verbose 查看詳情
--allow-warnings 警告忽略
成功了之后宛蚓,~/.cocoapods/repos/xxxx文件結(jié)構(gòu)如下:
如果不成功請(qǐng)查看Q2
2.8 更新倉(cāng)庫(kù)
pod repo update MyRepo
[圖片上傳失敗...(image-da805f-1562830213674)]
3.使用私有庫(kù)
xcode新建一個(gè)項(xiàng)目,在項(xiàng)目文件夾創(chuàng)建Podfile设塔,創(chuàng)建好之后添加:
pod "TJKit",:git=> 'http://xxxxxx/TJKit.git'
然后執(zhí)行pod install
Q&A
q1
.pod無(wú)法生成項(xiàng)目
錯(cuò)誤如下:
/Library/Ruby/Gems/2.3.0/gems/xcodeproj-1.5.8/lib/xcodeproj/project/object/helpers/build_settings_array_settings_by_object_version.rb:27:in `<module:BuildSettingsArraySettingsByObjectVersion>': undefined method `to_set' for #<Array:0x00007f9d7912bfb0> (NoMethodError)
Did you mean? to_s
from /Library/Ruby/Gems/2.3.0/gems/xcodeproj-1.5.8/lib/xcodeproj/project/object/helpers/build_settings_array_settings_by_object_version.rb:8:in `<class:XCBuildConfiguration>'
from /Library/Ruby/Gems/2.3.0/gems/xcodeproj-1.5.8/lib/xcodeproj/project/object/helpers/build_settings_array_settings_by_object_version.rb:4:in `<module:Object>'
...
...
解決方法:升級(jí)cocoapod
sudo gem install -n /usr/local/bin cocoapods
q2
Your configuration specifies to merge with the ref 'refs/heads/master'
from the remote, but no such ref was fetched.
項(xiàng)目沒(méi)有初始化, 這個(gè)時(shí)候git倉(cāng)庫(kù)是空的凄吏,需要我們?cè)趡/cocoapods/repo/xxxx 下添加一個(gè)初始文件,例如添加個(gè)readme.md
解決方法:
檢查./git/config 文件中g(shù)it地址是否正確
初始化項(xiàng)目闰蛔,執(zhí)行
git config --global user.name "git用戶名"
git config --global user.email "郵箱"
cd TJRepo
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master