美文网首页iOS项目综合
CocoaPods创建私有库的坑

CocoaPods创建私有库的坑

作者: dream_nice | 来源:发表于2018-07-05 19:31 被阅读574次

    暑假实习开始第一件事就是学习组件开发,从pod命令生成项目,到更新framework至cocoapod遇到了大大小小的坑,以下文字文笔不好,纯当总结。

    自己学习组件化的步骤:
    1.Cocoapod创建私有库,并生成生成项目
    2.上传组件至Cocoapods
    3.更新组件至Cocoapods
    4.组件封装成Framework
    5.上传Framework至Cocoapods

    1.Cocoapods创建私有库,并生成生成项目

    (1).在coding创建一个项目ZLSNavc
    (2).在终端中创建一个本地私有库,在终端中输入: pod repo add DPNavc https://git.coding.net/dream_boy/DPNavc.git (coding中创建的项目地址)

    创建项目
    创建私有库

    此时在~/.cocoapods/repos/就能看见自己私有库


    私有库

    (3).使用pod生成项目
    cd到一个空目录,并执行pod lib create DPNavcLib


    生成项目

    2.上传组件至Cocoapod

    在上传这一步我遇到了第一个大坑
    (1).根据网上步骤,将创建项目中~/DPNavcLib/DPNavcLib/Classes中的ReplaceMe.m替换成自己的组件文件


    替换文件
    替换后的文件

    (2).打开example中的项目,打开DPNavcLib中的DPNavcLib.podspec


    DPNavcLib.podspec

    (3).进入DPNavcLib目录,对DPNavcLib.podspec,执行 pod lib lint DPNavcLib.podspec --use-libraries进行本地验证


    本地验证

    (4).将本地代码与远程项目关联,并上传代码


    上传代码

    (5).对远程项目打上tag要与DPNavcLib.podspec中的s.version相同


    s.version
    远程仓库打上tag

    (6).向私有库DPNavc上传代码,进入DPNavcLib目录,执行pod repo push DPNavc DPNavcLib.podspec --use-libraries


    image.png

    此时私有库DPNavc已经有了自己的组件


    image.png

    (7).在自己项目编写podfile如图

    Podfile

    (8).执行pod install遇到了问题:

    问题

    解决方法:
    进入/Users/dapao/.cocoapods/repos/DPNavc/DPNavcLib,删除Assets,Classes


    image.png

    进入ZLSNavcLib,在里面新建一个空目录,并将Classes中的组件代码复制至新目录中,删除Assets和Classes


    image.png

    打开DPNavcLib.podspec,修改参数s.source_files和s.version(注意,每次修改完项目,都需写上新的version,否则会有不可预知的错误)

    修改DPNavcLib.podspec

    再重新执行(3)~(6)步,此时遇到经典git冲突,解决冲突具体看网上git冲突解决,在此不赘言。
    在执行第(6)前对repo进行升级,执行 pod repo update DPNavc


    升级repo

    最后完成截图


    完成

    (9).重新再项目里执行pod install


    安装成功

    此时项目会出现自己的组件


    image.png

    3.更新组件至CocoaPods

    其实这一步就是2中解决错误的步骤,将修改完成的代码,按流程上传至git,并更新本地私有库,再执行pod repo push DPNavc DPNavcLib.podspec --use-libraries,更新库版本。

    4.组件封装成Framework

    方法一:使用Xcode封装
    新建一个Cocoa TouchFramwork项目,并将组件拉入项目


    新建项目

    在Build Settings设置Mach-O Type 为Static Library,Defines Module为NO


    设置1
    设置2

    在Build Phases可以设置framework的公开和私有.h文件


    Build Phases

    DPNavc.h必须要公开并引用其他需公开的.h文件


    DPNavc.h

    command+B编译,就出现了framework,注意真机,和模拟机的framework是分开的,右键framework show in file,就能在文件中找到framework


    生成framework

    方法二:使用Cocoapods封装
    安装cocoapods-packager插件,在终端输入sudo gem install cocoapods-packager安装插件

    安装插件

    进入DPNavcLib.podspec,设置公开头文件,其他隐藏


    DPNavcLib.podspec
    image.png

    进入DPNavcLib目录,执行以下命令
    pod package DPNavcLib.podspec --library --force
    pod package DPNavcLib.podspec --force
    --library指定打包成.a文件,如果不带上会打包成.framework,--force表示强制覆盖

    封装

    DPNavcLib目录中会出现封装好的文件夹


    framework文件

    5.上传Framework至Cocoapods

    打开DPNavcLib.podspec,设置s.vendored_frameworks,这个是Framework文件目录,并更新s.version,将framework文件放入目录


    DPNavcLib.podspec

    注意:sourcefile和vendored_frameworks只能验证一个,若同时出现2个,则无法通过验证。

    Framework文件目录

    按流程上传至git,并更新本地私有库,进行本地验证,再执行pod repo push DPNavc DPNavcLib.podspec --use-libraries,更新库版本

    后续应该还有好多坑,碰到后再补充

    相关文章

      网友评论

        本文标题:CocoaPods创建私有库的坑

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