美文网首页
组件化(七)远程私有库的子索引库

组件化(七)远程私有库的子索引库

作者: 奋斗的小马达 | 来源:发表于2022-01-06 11:02 被阅读0次

    一、远程私有库子索引库的意义

    首先看下面的图片


    82461641365234_.pic_hd.jpg

    如上图所示,AFNetworking 它有5个子索引库 平时我们使用AFNetworking的时候,仅仅使用了它其中的一个子库,如果我们不指定子库 那么pod下来的就是所有的库。此时工程里就多出啦很多无用的代码。
    如果我们不像引入无用的代码,此时 子索引库(Subspecs)就体现出作用了

    我们可以单独饮用其中一个子库
    例:只引入 Reachability 这个子库

    Podfile 文件

    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '9.0'
    target 'CCC' do
      use_frameworks!
      pod 'AFNetworking/Reachability'
    end
    

    工程文件


    B39FA9786CAC14EF90D5A956E531F93F.png

    如上面的示例。

    二、如何创建远程私有库子索引库

    1、远程索引库文件分级 一个子库分一个文件夹 如图


    F1BD0A4E-DFB0-4094-9956-4FCBA2B71284.png

    如上图 我分远程库分成了三个文件夹 (一个是分类、一个是网络请求类、一个是GCD定时器 如果多个直接添加文件夹即可)

    2、修改 FCPrivateTools.podspec 文件内容


    D7315DC0D3CF8C3F93B951340D053FB3.png

    3、上传代码

    1、cd到 fcprivate-tools 文件目录下  看清楚目录别错了
    
    //提交到远程仓库
    2、 git add .
    3、git commit -m 'xxxx'
    4、git push origin master
    
    //5、打标签 (这一步很关键  标签名称一定要与 spec 文件里面的版本号一致)
    
     git tag '0.0.3'
    
    git push --tags
    

    4、验证

    //本地验证
    pod lib lint --allow-warnings
    //远程验证
    pod spec lint --use-libraries --allow-warnings
    

    其实这一步验证可以省略 但是为了保证我们能够成功 所以验证一下本地和远程是否成功 如果都能成功则进行下一步

    验证成功 如图所示


    8677A6C0455704AA7D0B24883B42425E.png

    5、上传自己的远程索引库

    pod repo push 自己远程索引库的名称 自己的工具库.podspec
    
    //这是我的
    pod repo push FCPrivateSpec FCPrivateTools.podspec
    
    如果出错 可以试试
    pod repo push FCPrivateSpec FCPrivateTools.podspec --allow-warnings
    
    

    成功如图所示


    D1AD5A8D32A29DD11C932C12DA996985.png

    6、验证是否升级成功

    pod search 你自己的库
    //我的库
    pod search FCPrivateTools
    

    成功如图

    0B3D728961C91E527A5BD16C33DC3C67.png

    7、创建工程来验证
    Podfile 文件

    source 'https://gitee.com/fc1024/fcprivate-spec.git'
    source 'https://github.com/CocoaPods/Specs.git'
    
    
    platform :ios, '9.0'
    
    target 'Test' do
      use_frameworks!
    
      pod 'FCPrivateTools/Categories'
    
      pod 'FCPrivateTools/NetworkManger'
    
    end
    
    pod install
    

    结果如下


    3A577AAD9B83B6D8A7FB81EBE92FC5E1.png

    工程


    38F6D14BB9D3A54F5CAE7B6F33A67879.png

    我们远程库中有三个(Categories、NetworkManger、GCDTimer)

    而在工程中我们只引用了 Categories 和 NetworkManger
    所以工程內只有 Categories 和 NetworkManger 不会引入 GCDTimer

    如果我们只是

    pod 'FCPrivateTools'
    

    这样会把所有的子库都能引入到工程

    相关文章

      网友评论

          本文标题:组件化(七)远程私有库的子索引库

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