一、本地私有庫
1舰讹、準備工作
本地私有庫是將自己寫的第三方框架以私有pod的形式引入到項目中去月匣,所以我們需要準備好
1)第三方框架代碼;
2)新建項目
3)安裝好cocoaPods環(huán)境
2素标、用命令pod spec create FMBase生成podspec文件萍悴。
然后用Xcode打開podspec文件癣诱,修改一些東西,諸如:
填寫s.description;設(shè)置s.license
s.source_files? = "Classes", "Classes/**/*.{h,m}"
#s.exclude_files = "Classes/Exclude"等嗅蔬。我第一次驗證一直沒通過,后來才發(fā)現(xiàn)艺蝴,原來是差了一句s.platform? ? = :ios沒寫鸟废。
驗證 pod lib lint
3、驗證通過后在項目中pod init創(chuàng)建podfile文件缩擂,填寫pod路徑:
pod 'FMBase', :path =>'../../localLib/FMBase'??
引號內(nèi)更換為庫的真實路徑胯盯。
然后pod install即可
4计露、但是該設(shè)置建立的本地私有庫無法對庫進行獨立的測試,如果想要對該庫進行獨立測試的話叉趣,需要做如下設(shè)置:
????? 4.1 pod lib create? FMBase2 該命令是創(chuàng)建一個pod庫模版工程
????? 4.2 建立完成后疗杉,將classes內(nèi)的replaceme替換為自己的庫沈善。
????? 4.3 進入podfile目錄,然后pod install即可净赴。
????? 4.4 最后修改項目中podfile中庫的路徑罩润,確認可以找到FMBase2.podspec文件即可執(zhí)行pod update 命令割以;
二、遠程私有庫
遠程私有庫的設(shè)置思路是:我們平常使用的AFN等框架都是通過官方的spec repo也就是:https://github.com/CocoaPods/Specs.git進行搜索得到的猜极。如果我們的庫想要實現(xiàn)遠程私有跟伏,那就只能傳到私有的spec repo上,然后通過私有的spec進行搜索携龟,這樣其他人無法獲取私有的spec當然也就無法搜索使用私有庫啦勘高。
1、新建私有遠程repo蕊蝗,并添加repo到Cocoapods中
pod repo add REPO_NAME SOURCE_URL
2匿又、新建私有遠程庫
3碌更、將私有遠程庫提交到私有遠程repo上
3.1? 首先該私有庫我們還是以pod lib create ***的形式創(chuàng)建
3.2 提交遠程私有repo
4劲腿、在項目中修改podfile添加私有repo焦人,即可正常使用遠程私有庫
4.1? 首先添加搜索源,在podfile中添加
source 'https://github.com/CocoaPods/Specs.git'
source 'https://git.coding.net/Vincent__/PrivateRepo.git'
4.2 修改podfile添加pod 'libExtension'忽匈,然后執(zhí)行pod install
大功告成
5矿辽、維護升級遠程私有庫
???? 5.1? 如果私有庫中出現(xiàn)了依賴其他庫:需要修改podspec中:
????? s.dependency 'AFNetworking'
???? 5.2? 或者想要細分私有庫(庫功能太多,將部分功能分離成子庫):
? ? ? ?? s.subspec 'Base' do |b|
? ? ? ? ? b.source_files = 'libExtension/Classes/Base/**/*'
??? ? ? ? end
???? ? ?? s.subspec 'Category' do |c|
? ? ? ? ? c.source_files = 'libExtension/Classes/Category/**/*'
??? ? ? ? end
?????????? 5.2.1? 在podfile中調(diào)用subspec的時候描述如下:
? ? ? ? ? ? pod 'libExtension', :subspecs => ['Base', 'Category']?
????? 5.3 庫中包含xib的加載圖片注意事項:
? ? ? 5.3.1 代碼中需要寫bundle的地方雕蔽,都使用[NSBundle bundleForClass:self]
????? 5.3.2 所有的圖片資源存放在Assets問價夾中
????? 5.3.4 修改podspec文件:
? ? ? ? ? ? s.resource_bundles = {? 'libExtension' => ['libExtension/Assets/*.png'] }
????????????? 執(zhí)行pod install重新加載圖片
????? 5.3.5 如果是在xib中直接設(shè)置圖片:
???????????????
????? 5.3.6 代碼加載圖片的時候批狐,不可以直接使用imageNamed方法贾陷,代碼如下:
? ? ? NSBundle *currentBundle = [NSBundle bundleForClass:[self class]];
????? NSString *bundleName = [currentBundle.infoDictionary[@"CFBundleName"] stringByAppendingString:@".bundle"];
????? NSString *path = [currentBundle pathForResource:@"tabbar_np_play@2x.png" ofType:nil inDirectory:bundleName];
????? UIImage *image = [UIImage imageWithContentsOfFile:path];