創(chuàng)建遠(yuǎn)程私有管理庫(kù)
-
在遠(yuǎn)程服務(wù)器(例:碼云镣煮、Coding等)創(chuàng)建私有管理庫(kù)
- 碼云:https://gitee.com
- Coding: https://coding.net
就是新建一個(gè)私有項(xiàng)目
-
本地添加私有管理庫(kù)
-
$ pod repo add HQSpecs git@gitee.com:H-Joe/HQSpecs.git
-
創(chuàng)建私有庫(kù)(組件)
-
創(chuàng)建私有庫(kù)(組件)
-
創(chuàng)建模版庫(kù):
$ pod lib create HQBase
使用模版庫(kù)的好處是您访,會(huì)自動(dòng)生成測(cè)試工程斗忌,可以邊開發(fā)庫(kù)邊測(cè)試。
如果創(chuàng)建不成功第晰,可能原因之一是
Xcode
和cocoapods
版本不匹配开缎,升級(jí)cocoapods
:$ sudo gem install cocoapods
-
設(shè)置配置信息
-
生成的模版如下:
-
把要做成私有庫(kù)(組件)的代碼放入
Classes
中斤寂,把其他資源文件(圖片、文件等)放在Assets
中
-
在模版中的測(cè)試工程
Example
中诚镰,已經(jīng)配置好了Podfile
,只需pod install
即可
- 如果私有庫(kù)(組件)中有依賴系統(tǒng)庫(kù)奕坟,則需配置
s.frameworks
或s.library
- 如果私有庫(kù)(組件)中有依賴第三方庫(kù),類似
SDWebImage
怕享、AFNetworking
等执赡,需要在HQBase.podspec
中添加依賴關(guān)系
- 本地測(cè)試
-
-
推送到遠(yuǎn)程服務(wù)器
-
在遠(yuǎn)程服務(wù)器上創(chuàng)建私有庫(kù)(組件)項(xiàng)目
-
配置
HQBase.podspec
文件homepage
是私有庫(kù)(組件)倉(cāng)庫(kù)的地址,source
是私有庫(kù)(組件)代碼地址 -
本地驗(yàn)證
HQBase.podspec
配置是否正確$ pod lib lint
- 或
$ pod lib lint --allow-warnings
-
提交遠(yuǎn)程倉(cāng)庫(kù)
-
git
管理$ git add .
$ git commit -m "描述信息"
$ git remote add 遠(yuǎn)程代碼地址
$ git push origin master
-
增加標(biāo)簽
$ git tag '0.1.0'
此標(biāo)簽號(hào)必須與
HQBase.podspec
中的s.version
一致$ git push --tags
-
遠(yuǎn)程驗(yàn)證:
$ pod spec lint --allow-warnings
-
-
-
推送到遠(yuǎn)程私有管理庫(kù)
$ pod repo push 遠(yuǎn)程私有管理庫(kù) 本地個(gè)人私有庫(kù).podspec
-
例:
$ pod repo push HQSpecs HQBase.podspec
-
使用
可以通過
pod search
來搜索查詢私有組件-
$ pod search HQBase
-
在宿主項(xiàng)目函筋,直接在
Podfile
文件中配置
需要注意的是沙合,必須配置兩個(gè)源,這樣就可以同時(shí)使用公有庫(kù)和私有庫(kù)
升級(jí)私有庫(kù)(組件)
-
添加代碼到
Classes
中
-
本地測(cè)試
- 在
Example
中$ pod install
- 編譯測(cè)試通過
- 在
-
推送到遠(yuǎn)程服務(wù)器
-
配置
HQBase.podspec
文件跌帐,version
版本增加
-
git
管理$ git add .
$ git commit -m "描述信息"
$ git push origin master
-
增加標(biāo)簽
$ git tag '0.2.0'
$ git push --tags
遠(yuǎn)程驗(yàn)證:
$ pod spec lint --allow-warnings
-
-
推送到遠(yuǎn)程私有管理庫(kù)
$ pod repo push HQSpecs HQBase.podspec
-
使用
- 宿主項(xiàng)目中首懈,
$ pod update
即可绊率。
- 宿主項(xiàng)目中首懈,
子私有庫(kù)(組件)
如果私有庫(kù)(組件)有很多功能,我們所用的只是其中的一個(gè)子功能究履,就有必要?jiǎng)?chuàng)建子私有庫(kù)(組件)
- 配置
HQBase.podspec
文件滤否,添加子私有庫(kù)(組件)增加版本號(hào)
version
-
設(shè)置依賴
dependency
依賴放在具體的子索引庫(kù)中,誰(shuí)需要最仑,誰(shuí)設(shè)置藐俺,不需要,不設(shè)置
-
增加
subspec
本地驗(yàn)證:
$ pod lib lint --allow-warnings
- 推送到遠(yuǎn)程服務(wù)器
-
git
管理$ git add .
$ git commit -m "描述信息"
$ git push origin master
- 增加標(biāo)簽
$ git tag '0.3.0'
$ git push --tags
- 遠(yuǎn)程驗(yàn)證:
$ pod spec lint --allow-warnings
-
- 推送到遠(yuǎn)程私有管理庫(kù)
$ pod repo push HQSpecs HQBase.podspec
- 使用
-
$ pod search HQBase
-
宿主項(xiàng)目中泥彤,可以
$ pod install
需要的子功能
-
私有庫(kù)(組件)中資源文件的使用
-
xib
-
在私有庫(kù)(組件)中加載
xib
文件需注意以下幾點(diǎn):-
- 所有使用
bundle
的地方都必須動(dòng)態(tài)獲取
[NSBundle bundleForClass:[self class]]
- 所有使用
-
- 不能使用
mainBundle
欲芹, 因?yàn)榇藭r(shí)的xib
文件不在mainBundle
下,是在xxx.framework
下
- 不能使用
-
-
使用
UILabel *l = [[UILabel alloc]init]; l.frame = CGRectMake(30, 20, 300, 30); l.text = @"1吟吝、測(cè)試加載xib文件"; [self.view addSubview:l]; TestXibView *t = [[NSBundle bundleForClass:[self class]] loadNibNamed:@"TestXibView" owner:nil options:nil].firstObject; t.frame = CGRectMake(30, 60, 300, 100); [self.view addSubview:t];
-
- 圖片
-
圖片資源放置的位置是
Assets
-
配置
HQMain.podspec
文件
-
在私有庫(kù)(組件)中菱父,圖片資源的存放位置和
xib
文件一樣,已經(jīng)不在mainBundle
下剑逃,是在xxx.framework
下的xxx.bundle
中 -
使用
-
-
xib
中使用
- 在圖片名稱前面添加組件主
bundle
, 本例中就是HQMain.bundle
UILabel * l = [[UILabel alloc]init]; l.frame = CGRectMake(30, 180, 300, 30); l.text = @"2浙宜、測(cè)試加載xib上有圖片"; [self.view addSubview:l]; TestXibImageView * t = [[NSBundle bundleForClass:[self class]] loadNibNamed:@"TestXibImageView" owner:nil options:nil].firstObject; t.frame = CGRectMake(100, 220, 120, 100); [self.view addSubview:t];
-
-
- 代碼加載
- 不能使用
imageNamed
方法 - 使用
imageWithContentsOfFile
方法 -
核心代碼
UILabel * l = [[UILabel alloc]init]; l.frame = CGRectMake(30, 340, 300, 30); l.text = @"3、測(cè)試加載圖片"; [self.view addSubview:l]; NSBundle *currentBundle = [NSBundle bundleForClass:[self class]]; NSString *bundleName = [currentBundle.infoDictionary[@"CFBundleName"] stringByAppendingString:@".bundle"]; NSString *path = [currentBundle pathForResource:@"aixin.png" ofType:nil inDirectory:bundleName]; UIImage *image = [UIImage imageWithContentsOfFile:path]; UIImageView * i = [[UIImageView alloc]init]; i.image = image; i.frame = CGRectMake(30, 380, 300, 250); [self.view addSubview:i];
-
在加載圖片時(shí)蛹磺,圖片名稱必須是全名粟瞬, 如:
aixin.png
、aixin@2x.png
称开、aixin@3x.png