美文网首页
CocoaPods私有库

CocoaPods私有库

作者: _叮叮当当__ | 来源:发表于2017-02-28 15:47 被阅读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];


    相关文章

      网友评论

          本文标题:CocoaPods私有库

          本文链接:https://www.haomeiwen.com/subject/ndpxgttx.html