CocoaPods私有库

2017-02-28  本文已影响41人  _叮叮当当__

一、本地私有库

1、准备工作

本地私有库是将自己写的第三方框架以私有pod的形式引入到项目中去,所以我们需要准备好

1)第三方框架代码;

2)新建项目

3)安装好cocoaPods环境

2、用命令pod spec create FMBase生成podspec文件。

然后用Xcode打开podspec文件,修改一些东西,诸如:

填写s.description;设置s.license

s.source_files  = "Classes", "Classes/**/*.{h,m}"

#s.exclude_files = "Classes/Exclude"等。我第一次验证一直没通过,后来才发现,原来是差了一句s.platform    = :ios没写。

验证 pod lib lint


3、验证通过后在项目中pod init创建podfile文件,填写pod路径:

pod 'FMBase', :path =>'../../localLib/FMBase'  

引号内更换为库的真实路径。

然后pod install即可

4、但是该设置建立的本地私有库无法对库进行独立的测试,如果想要对该库进行独立测试的话,需要做如下设置:

      4.1 pod lib create  FMBase2 该命令是创建一个pod库模版工程

      4.2 建立完成后,将classes内的replaceme替换为自己的库。

      4.3 进入podfile目录,然后pod install即可。

      4.4 最后修改项目中podfile中库的路径,确认可以找到FMBase2.podspec文件即可执行pod update 命令;

二、远程私有库

远程私有库的设置思路是:我们平常使用的AFN等框架都是通过官方的spec repo也就是:https://github.com/CocoaPods/Specs.git进行搜索得到的。如果我们的库想要实现远程私有,那就只能传到私有的spec repo上,然后通过私有的spec进行搜索,这样其他人无法获取私有的spec当然也就无法搜索使用私有库啦。

1、新建私有远程repo,并添加repo到Cocoapods中

pod repo add REPO_NAME SOURCE_URL

新建私有远程repo

添加repo到Cocoapods中

2、新建私有远程库

tag

3、将私有远程库提交到私有远程repo上

3.1  首先该私有库我们还是以pod lib create ***的形式创建

3.2 提交远程私有repo

将开发的podspec文件添加到本地索引库,系统会自动将其上传到远程索引库

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',然后执行pod install

大功告成

5、维护升级远程私有库

     5.1  如果私有库中出现了依赖其他库:需要修改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中调用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'] }

              执行pod install重新加载图片

      5.3.5 如果是在xib中直接设置图片:

               

在图片名称前添加主bundle

      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];


上一篇下一篇

猜你喜欢

热点阅读