美文网首页
搭建和使用pod私有库

搭建和使用pod私有库

作者: 程守斌 | 来源:发表于2019-03-13 10:50 被阅读0次

    1.创建一个git仓库由于存储pod.spec文件

    在git云平台创建一个空的git仓库,将该仓库添加到本地pod管理。该仓库不需要手动commit,仅使用pod命令添加处理即可。

    //附:建议使用ssh key与远程git仓库通信。
    pod repo add 5th-pods ssh://git@.../5th-pods.git
    

    这样在本地的pod repos中就有了5th-pods 与master文件夹,其中master就是CocoaPods官方的


    屏幕快照 2019-03-13 上午9.48.50.png

    2.使用Pod命令创建一个Pod工程

     pod lib create ProductName
    #输入项
    What platform do you want to use?? [ iOS / macOS ]
     > iOS
    What language do you want to use?? [ Swift / ObjC ]
     > ObjC
    Would you like to include a demo application with your library? [ Yes / No ]
     > Yes
    Which testing frameworks will you use? [ Specta / Kiwi / None ]
     > None
    Would you like to do view based testing? [ Yes / No ]
     > No
    What is your class prefix?
     > AB
    

    使用pod lib create 可以创建一个标准的pod工程,将该工程添加到远程git仓库进行管理。属于pod库的代码应该放在ProductName/Classes 目录下,使用示例代码写在Example的工程中。每个版本代码修改完成并在Example中测试没问题,且本地pod spec校验没问题,可修改.podspec 中的s.version版本号,并commit推送到远端仓库,打上与s.version同名的tag标签。

    3.Pod校验及推送到私有库

    #本地校验
    pod spec lint ProductName.podspec --verbose --allow-warnings
    #.podspec中有同时有私有库和公有库依赖
    pod spec lint ProductName.podspec --verbose --allow-warnings --sources=ssh://git@git@.../5th-pods.git,https://github.com/CocoaPods/Specs.git
    #推送到私有库
    pod repo push 5th-pods ProductName.podspec
    #推送到私有库(有私有库依赖)
    pod repo push 5th-pods ProductName.podspec --verbose --allow-warnings --sources=ssh://git@git@.../5th-pods.git,https://github.com/CocoaPods/Specs.git
    

    附:推送到私有库,使用的是远程git代码,一定要确保.podspec中git指向的s.version分支已存在并打好了tag推送到remote。

    推送成功后就会看到repos/5th-pods中会多出ProductName的文件夹,并且pod已经帮我们管理好了s.version对应的代码版本。

    4.使用私有库的Podfile写法

    source 'https://github.com/CocoaPods/Specs.git'     #原CocoaPods仓库
    source 'ssh://git@git@.../5th-pods.git'  #私有pod仓库
    
    target "Exchange" do
        pod 'AFNetworking'  #公有库
        pod 'PrivatePod', '0.01'  #私有库
    end
    

    如果遇到没有找到module问题可参考

    #import <ABNetwork/ABNetwork.h>             Could not build module 'ABNetwork'
    解决:选中项目target 选择Build Setting 搜索 Allow Non-modular Includes in Framework Modules 将该项设为YES。
    原因:module中引用了外部module。需要项目中设置允许在框架模块中包含非模块
    

    更换pod版本号时,需要更新repos,下载最新的pod.podspec

    pod repo update
    

    5.使用Pod来管理代码的好处

    对于项目工程来说,代码版本的管理直接影响着开发的效率,好的管理可以让开发的效率倍增。
    在没有使用pod来管理之前,我们习惯都是整个大的工程的代码都使用一个git仓库来管理,git仓库可以很方便的回滚到某一个commit。不足之处在于整个工程的代码都会回滚,而且commit的版本过多,以至于开发人员无法辨别哪一个是最接近回滚需求的那一个。

    这里使用pod来管理代码就可以完美的避免该问题,每个pod都是一个整体,且仅是工程中可抽离的部分功能代码。又有每个可运行的pod版本。因此,pod部分的代码回滚仅需要修改版本号,而对主工程的其他代码不会产生太大的影响。

    5.pod依赖注意事项

    pod库会依赖其他第三方库,如果两个A、B两个库分别依赖C库的0.1和0.2版本,而主工程需要同时依赖A库和B库,则pod加载会通不过。这个是需要注意的地方。

    6.pod库调试注意事项

    刚刚改完pod中的代码,就在Example中写示例调试经常会遇到运行报错的情况,这里需要注意的是,Xcode不是每次都会从新编译pod中的代码,因此修改过pod中代码后使用快捷键command+shift+k来清理一下,再从新编译运行。

    相关文章

      网友评论

          本文标题:搭建和使用pod私有库

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