ä¸ãæ¦è¿°
CocoaPodsæ¯iOSï¼Macä¸ä¼ç§ç第ä¸æ¹å 管çå·¥å ·ï¼ç±»ä¼¼äºjavaçmavenï¼ç»æ们项ç®ç®¡ç带æ¥äºæ大çæ¹ä¾¿ã个人æå ¬å¸å¨å¼åè¿ç¨ä¸ï¼ä¼ç§¯ç´¯å¾å¤å¯ä»¥å¤ç¨ç代ç å ï¼æäºæ们ä¸æ³å¼æºï¼åæ³åå¼æºåºä¸æ ·å¨CocoaPodsä¸ç®¡çå®ä»¬ï¼é£ä¹éè¿ç§æä»åºæ¥ç®¡çå°±å¾å¿ è¦ã对äºCocoaPodsè¿ä¸å¤ªçæçï¼å»ºè®®åèä¸ä¸åå·§çå客æè ç´æ¥å°CocoaPodsçå®ç½ççï¼https://cocoapods.org/
äºãæ¦å¿µ
大家å¾å®¹ææspec repository å code repositoryå¼æ··ï¼æä¸å¼å§å°±å¨è¿éæèµ·äºå¥½ä¹ ã
1.code repositoryæ¯ä»£ç ä»åºï¼æ们æå 代ç ä¸ä¼ å°è¿ä¸ªä»åºã
2.spec repositoryæ¯é ç½®ä»åºï¼ææçé ç½®æç §å åãçæ¬å·åé¨å«ç±»çåæ¾å¨è¿ä¸ªä»åºãè¿ä¸ªä»åºåªç¨æ¥åæ¾specæ件ï¼ä¸åæ¾ä»£ç ã
å°ç»ï¼ä»¥AFNetWorking为ä¾ï¼å¦æåªå建AFNetWorkingçcode repositoryï¼èä¸å°code repositoryä¸ç.Podspecæ件ä¸ä¼ å°spec repositoryçè¯ï¼ä½ å¨èªå·±çå·¥ç¨å¼å ¥AFNçæ¶ååæ ¹ç¨ä¸äºã
ä¸ãæ¥éª¤
å建ç§æçCocoaPodsä»åºä¹åéè¦å å¶ä½CocoaPodsä¾èµåºï¼æ以æ¥éª¤å两æ¥ï¼
1.å¶ä½CocoaPodsä¾èµåºï¼ä¹å°±æ¯ä»£ç åºã
2.å建ç§æ CocoaPods ä»åºã
å°ç»ï¼1.å¶ä½ä¾èµåºä¹å°±æ¯å¨èªå·±çæå¡å¨æè githubçè¿ç«¯ç¬¬ä¸æ¹æå¡å¨å建ä¸ä¸ªä»åºï¼ç¨æ¥ä¿å.podspecãLICENSEãREADME.md以å代ç æ件åä¸äºèµæºæ件ã
2.å建ç§æ CocoaPods ä»åºä¹å°±æ¯å¨èªå·±çæå¡å¨æè githubçè¿ç«¯ç¬¬ä¸æ¹æå¡å¨å建ä¸ä¸ªä»åºï¼ç¨æ¥æ¥å并åæ¾.podspecæ件ï¼æ¥ç®¡çèªå·±çç§åºã
åãå¶ä½ CocoaPods ä¾èµåº
å½æ们使ç¨äºç±»ä¼¼äºAFNetWorkingè¿æ ·çPods ä¾èµåºä»¥åï¼ ä½ ä¸å®å¯¹å建èªå·±çä¾èµåºå¾æå ´è¶£å§ï¼ç°å¨æ们就æ¥å°è¯ä¸ä¸ï¼ä»¥ä¸ä¸ªç®å caculatorMaker 为ä¾èªå·±å建ä¸ä¸ª Pods ä¾èµåºã
1.å建并设置ä¸ä¸ªç§æçcode Repositoryã
å 为GitHubçç§æä»åºæ¯æ¶è´¹çï¼æè¿ä¸æ¯GitHubçä»è´¹ç¨æ·ï¼æ以æ使ç¨äºå ¶ä»Gitæå¡ï¼æ使ç¨çæ¯gitlabï¼æä»¬å ¬å¸æ¯åºäºå ç½çï¼å½ç¶ä½ ä¹å¯ä»¥åºäºå¤ç½ï¼ï¼å½ç¶è¿æå ¶ä»çå¯ä¾éæ©å¼æºä¸å½ãCODINGãBitbucket以åCSDN Code.
2.clone ä»åºå°æ¬å°
为äºæ¹ä¾¿åä»åºä¸å åå 容ï¼éè¦å°ä»åº clone å°æ¬å°ï¼è¿éæå¤ç§æä½æ¹å¼ï¼å¯ä»¥éæ©ä½ å欢çä¸ç§ï¼ä½æ¯ä¸ºäºæ¹ä¾¿è¿è¾¹éæ©ä½¿ç¨å½ä»¤è¡ãé¦å éè¦åæ¢å°ä½ æ³å¨æ¬å°åå¨çç®å½ï¼ç¶åå clone ï¼åè®¾ä½ æ¾å¨ç¨æ·çæ ¹ç®å½ä¸ï¼
cd ~
git clone http://njGitrepo/xxx/caculatemaker.git
å®æåï¼æ们è¿å ¥å° ~/caculatemaker ç®å½,è¿æ¶åä½ çå°æ¯ä¸ä¸ªç©ºæ件夹ï¼è¿ç±äºæç¨çæ¯gitlabå建çï¼æ²¡æågithubç½é¡µé£æ ·å¨å建code Repositoryçæ¶åå¯ä»¥å¾éå建LICENSEåREADME.mdæ件ãå ¶å®ä¹ä¸æ¯ä»ä¹é½æ²¡æï¼å®é ä¸æ¯æä¸ä¸ªéèç .git æ件ï¼åç»æ们çæææ件é½å¨è¿ä¸ªç®å½ä¸è¿è¡ã
注æï¼æå¼éèç®å½ï¼å¯ä»¥ä½¿ç¨å½ä»¤ï¼æ¥çéè¦éå¯ä¸ä¸ Finderï¼ å¯ä»¥æä½ option + å³é® Finder å¾æ éæ©éå¯ã
//æå¼éèçå½ä»¤:
defaults write com.apple.finder AppleShowAllFiles -bool true
//å ³ééèçå½ä»¤:
defaults write com.apple.finder AppleShowAllFiles -bool false
3.åæ¬å°ä»åºä¸æ·»å å建 Pods ä¾èµåºæéçæ件
è¿ä¸ªä»£ç åºéè¦æå¨å¨å¤é¢å建好.podspecãLICENSEãREADME.md以å代ç æ件åä¸äºèµæºæ件并æå¨å°ï¼å½ç¶ä½ å¨å ¶ä»çgitæå¡ä¸éè¦å建çåºæ¬é½æ¯è¿å ç§æ件ã
1).æ¯ä¸ª Pods ä¾èµåºå¿ é¡»æä¸ä» æä¸ä¸ªå称åä¾èµåºåä¿æä¸è´ï¼åç¼å为 .podspec çæè¿°æ件ãè¿éæ们ä¾èµåºçæè¿°æ件å称åºè¯¥ä¸º caculatormaker.podspecã
2).å建è¿ä¸ª.podspec çæè¿°æ件æ两ç§éå¾ï¼
a.å¤å¶å·²æç podspec æ件ç¶åä¿®æ¹å¯¹åºçåæ°ã
b.æ§è¡å½ä»¤è¡å建ã
æ们使ç¨å½ä»¤è¡ï¼
pod spec create caculatormaker
æ们åç°è¿ä¸ªæ¯rubyæ件ï¼éé¢æå¾å¤ä¸è¥¿æ¯æ们ä¸éè¦çï¼æ们å¯ä»¥ç¨ææ¬ç¼è¾å¨æå¼å¹¶å é¤æ们ä¸éè¦çå 容ã
Pod::Spec.new do |s|
s.name = 'caculatemaker'
s.version = '0.1.0'
s.summary = 'just test' s.description = <<-DESC
Testing Private Podspec.
DESC
s.homepage = 'http://njgitrepo/wushuanghong/caculatemaker'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'shuanghong.wu' => '[email protected]' }
s.source = { :git => 'http://njGitrepo/wushuanghong/caculatemaker.git' ,:tag => s.version}
s.ios.deployment_target = '8.0'
s.source_files = "Classes", "Classes/**/*.{h,m}", "caculator/**/*.{h,m}"
end
3).README.md
ä½¿ç¨ github ç人åºè¯¥é½çæè¿ä¸ªæ件ï¼å®ä½¿ä¸ä¸ªæåç github ä»åºå¿ ä¸å¯å°çä¸é¨åï¼ä½¿ç¨ markdown 对ä»åºè¿è¡è¯¦ç»è¯´æã
4).LICENSE æ件
CocoaPods 强å¶è¦æ±ææç Pods ä¾èµåºé½å¿ é¡»æ license æ件ï¼å¦åéªè¯ä¸ä¼éè¿ã license æ件æå¾å¤ä¸ï¼è¯¦æ å¯ä»¥åè tldrlegalãåé¢æ们已ç»éæ©å建äºä¸ä¸ª MIT ç±»åç licenseã
4.æ交修æ¹å°code Repository
ç»è¿åé¢æ¥éª¤ï¼æ们已å°å¨æ¬å°ç git ä»åºæ·»å äºä¸å°æ件ï¼ç°å¨æ们åªè¦å°ä»ä»¬æäº¤å° gitlabä¸å°±å¯ä»¥ãå¨æ¤ä¹åæ们éè¦å¯¹åææ·»å ç pod è¿è¡ä¸ä¸éªè¯ï¼
pod lib lint
å¦æä½ åæ没æç»caculatormaker.podspecçs.sourceæå®tagï¼å°±æå¯è½æwarnè¦åï¼æ§è¡ä¸é¢çå½ä»¤ï¼
pod lib lint --allow-warnings
éªè¯æåä¹åï¼æ们åªè¦æ代ç æäº¤å° gitlab ä»åºï¼å°±å¯ä»¥äºï¼åèå½ä»¤ï¼
git add -A && git commit -m "add pod files"
git push origin master
å¦æ以ä¸çæä½é½æ²¡æé®é¢çè¯ï¼gitlabä¸åºè¯¥å¯ä»¥çå°ç±»ä¼¼ä¸é¢çå 容ï¼
å°ç°å¨ä¸ºæ¢ï¼æ们ç CocoaPods ä¾èµåºå°±å·²ç»åå¤å¥½äºï¼ä½æ¯ç°å¨ä½ è¿ä¸è½å¨ä½ çå·¥ç¨ä¸ä½¿ç¨å®ãå¦æä½ æ³æ为ä¸ä¸ªçæ£å¯ç¨çä¾èµåºï¼è¿éè¦æåä¸æ¥æä½ï¼å°åæç产ç podspec æ件æäº¤å° èªå·±å建çç§æSpec Repositoryä¸ï¼é£ä¹ç»§ç»ä¸é¢ç第äºæ¥ã
äºãå建ç§æ CocoaPods ä»åº
1.å建并设置ä¸ä¸ªç§æçSpec Repositoryã
è·ç¬¬åæ¥ä¸çå建code Repositoryä¸æ ·ï¼æ们å建Spec Repositoryä¹æ¯åºäºgitlabçï¼å½è®©ä½ ä¹å¯ä»¥ç¨å ¶ä»ä¸é¢ææå°çæ¹å¼ã
å¦å¾æ示ï¼æ们å¨githubä¸å建ä¸ä¸ªç©ºçä»åºï¼å½å为wshSpecsï¼è¿ä¸ªä»åºæ¯ç¨æ¥åæ¾æ们èªå·±ææçç§æåºçspecæ件ï¼å°±å¦åå®æ¹çhttps://github.com/CocoaPods/Specsæ¯ç¨æ¥åæ¾ææå®æ¹çspecsæ件ä¸æ ·ã
ç»ç«¯æ§è¡å½ä»¤ï¼
pod repo add wshSpecs http://njGitrepo/wushuanghong/wshSpecs.git
注æï¼ä¸é¢çå½ä»¤ç解éå¦ä¸ï¼
pod repo add REPO_NAME SOURCE_URL
å ¶ä¸ç REPO_NAME æ¯æ们è¦æ·»å çç§ærepoçå称ï¼è¿éæä»¬å¾ ä¼å¡«çæ¯:wshSpecsï¼ï¼åé¢æ¯ä»åºç gitlab å°åãè¿éåçå ¶å®æ¯å建çå·¥ä½ï¼ä¹å°±æ¯å¨~/.cocoapods/repoç®å½ä¸æ·»å äºä¸ä¸ªä»¥ä½ çç§ærepo为åçæ件夹ï¼ä½æ¯å¹¶æ²¡ææ·»å specæ件ã
è¿éç¨çæ¯httpså°åï¼å½ç¶ä½ ä¹å¯ä»¥ç¨gitå°åï¼ä¸è¿è¿æ ·æå¯è½å¤±è´¥ãå¦æ失败ï¼å¾å¤§å ç´ æ¯ä½ githubçsshå¨æ¬å°æ²¡æé 置好ï¼é ç½®æ¹æ³å¯ä»¥çè¿éï¼Generating SSH keysï¼æååå¯ä»¥çå¾å°.cocoapodsç®å½å¦ä¸å¾æ示ï¼
è³æ¤ï¼æ们已ç»å¨æ¬å°å¾å°æ们èªå·±çç§æä»åº wshSpecs ï¼è¿æ¯ä¸ä¸ªç©ºçä»åºã
注æï¼è¿éæéè¦ä»ç»ä¸ä¸ä¸é¢çmasteræ件夹éé¢å°åºæ¯ä»ä¹ä¸è¥¿ï¼
a. è¿å ¥å°è¿ä¸ªç®å½
å¨Fingeråå¾æ件夹ä¸è¾å ¥ ~/.cocoapods, æ¾ç¤ºçå 容就æ¯ä¸å¾ççé¢ã
b.ç¹å¼masteræ件夹ä¸é¢çspecç®å½ï¼å ¶ä¸åæ¾çå°±æ¯æææäº¤å° CocoaPods çå¼æºåºç podspec æ件çé åã
å ¶ç»æå¦ä¸å¾æ示ï¼
å ¶ç»ææ¹å¼ï¼
specName -- version -- specName.podspec
( master éç°å¨æ¯ specName.podspec.jsonï¼è¿ä¸ª .json æä»¶å°±æ¯ podspec æ件å äºä¸ªåç¼ãæ们å¯ä»¥éç¨ pod ipc spec è¿ä¸ªå½ä»¤æ¥å° spec æ件转æ¢æ .json)
é£è¿ä¸ªæ件夹æ¯å¦ä½æ¥å¾å¢ï¼å ¶å®ï¼è¿ä¸ªæ件夹æ¯å¨ä½ å®è£ äº CocoaPods åï¼ç¬¬ä¸æ¬¡æ§è¡ pod install æ¶ï¼ CocoaPods éè¿å½ä»¤ pod setup æ¥å»ºç«çï¼è¿æ¡å½ä»¤ä¼èªå¨æ§è¡ï¼ã
2.æ·»å åæ第åæ¥å建ç caculatormaker.podspec å°ä½ ç Spec Repositoryã
å¨åé¢éªè¯éè¿çåºç¡ä¸ï¼æ们æ¥çæ§è¡å½ä»¤ï¼
pod repo push wshSpecs caculatormaker.podspec
æç §å¹³æ¶ä½¿ç¨ CocoaPods çä¹ æ¯ï¼æ们添å ä¾èµåºä¹åä¼å æç´¢ä¸ä¸åºï¼è®©æ们æ§è¡ä¸ä¸å½ä»¤ï¼
pod search caculatormaker
3.å¨ä¸ªäººé¡¹ç®ä¸çPodfileä¸å¢å ååå¶ä½ç好çPod并使ç¨ã
让æ们建ç«ä¸ä¸ªæ®éçå·¥ç¨ï¼å½å为 TestPodDemoï¼ç¶åå¨ç»ç«¯ cd å°å ¶ç®å½è·¯å¾ä¸ï¼æ·»å ä¸ä¸ª Podfile æ件ï¼
pod init
建ç«åä¿®æ¹ Podfile æ件å 容å¦ä¸ï¼
source 'https://github.com/CocoaPods/Specs.git' #å®æ¹ä»åºå°å
source âhttp://njGitrepo/wushuanghong/wshSpecs.gitâ #ç§æä»åºå°å
use_frameworks!
target 'TestPodDemo' do
pod âcaculatemakerâ
end
æ§è¡ï¼
pod install
è¿æ ·ä¸æ¥æ们就å¯ä»¥ä½¿ç¨è¿ä¸ªç§æåºäºï¼
4.æ´æ°ç»´æ¤podspecã
å½æ们ç代ç åå¨æ¶ï¼é¦å éè¦æ´æ°code Repositoryä¸ç.podspec æ件ççæ¬ï¼ç¶åpushå° Spec Repositoryã
æ¬åçç±æé®è æ¨è