美文网首页
iOS 组件化开发

iOS 组件化开发

作者: 喜相逢v5 | 来源:发表于2018-07-25 17:00 被阅读62次

    [toc]

    CocoaPods 是一个很好的三方开源库管理工具,在配置和更新上为我们节省了大量的时间与降低了工作的繁琐度。CocoaPods不仅可以对公有的Git仓库进行分享开源(AFNetworking等),还可以对我们自己的私有Git仓库进行管理。这里我们就利用CocoaPods来对我们私有的Git仓库进行索引。
    

    一 、基本概念

    1. Podspec : 该文件为你的代码仓库索引描述文件

      CocoaPods :通过该文件对你真正存储代码工程的 Git 仓库进行索引与下载

      Project :你上传到远程Git仓库的代码工程,将来用于开源共享或则私有

    2. 索引流程


      索引流程

    二 、原理

    CocoaPod  通过第一个 Git 仓库的里 .podspec 描述文件找到真正存储你代码的第二个 Git 仓库,然后根据 .podspec 里的相关字段对特定目录下的代码,三方依赖库,资源文件等进行下载。
    
    换一种说法来理解,第一个 Git 仓库里的 .podspec 描述文件相当于我们的指针, 其指向的另一个 Git 仓库(内存)才是你自己真正所共享的代码。
    

    三 、制作流程

    1. 创建两个git仓库,一个用于存储 .podspec 后缀文件的私有 Git 仓库(公开的public),一个用于存储的共享代码的私有 Git 仓库(私有的private)。

    2. 本地创建后续要被共享的代码项目

      • 打开终端工具,cd到你要创建的目录下

      • 然后输入 pod lib create XXX 命令创建一个待上传的项目模板

        创建项目模板.jpg
      • 然后系统会要求你配置相关的设置,可以根据自己需求进行配置。


        配置相关参数.jpg
    • 然后打开项目目录,显示如下: 后续添加的文件需要放到Classes文件夹下面,示例文件ReplaceMe.m可以删除替换为自己的文件。

      需替换文件目录.jpg
    • 接下来我们需要配置一下podspec ,打开Example文件夹下面的.xcworkspace文件,显示如下:


      配置podspec文件.jpg
     配置 **.podspec** 后缀文件 
    
    配置podspec文件注意事项.jpg
     ```
     s.name : 项目名
    
     s.version :  版本号(需跟代码仓库后面打 Tag 的值相等)
    
     s.homepage : 项目主页(请注意,这里的地址跟git仓库地址有一定差别)---------注意修改
    
     s.license : 开源协议
    
     s.source : Git 仓库地址
    
     s.ios.deployment_target : 项目最低支持版本
    
     s.source_files : 具体去那个目录下下载特定共享代码               ---------注意修改
    
     s.frameworks : 项目所依赖的系统库
    
     s.dependency : 项目所依赖的第三方库
     ```
    
    • 配置完成之后,验证一下 .podspec 文件格式的正确性

      在同一目录下面,使用终端命令行工具输入:pod lib lint 出现警告使用 pod lib lint --allow-warnings

    验证podspec文件的正确性.jpg
     出现 passed validation 说明验证成功。
    
    验证podspec文件成功.jpg
    • 将本地代码工程与远程私有仓库关联

      git remote add origin 远程仓库地址
      
    关联远程代码仓库.jpg
    • 将本地仓库内容同步到远程仓库

      git add .
      git commit -m 'Something description'
      git push origin master
      
    • 同步到远程之后,我们需要打一个 .podsepc 文件中s.version 版本 一致的 tag 分支

      (创建本地tag分支,提交远程tag分支)

      git tag -a 0.1.0 -m '0.1.0版本'
      git push --tags
      
      打tag标记.jpg
     当你的tag 版本和podspec 文件里面的版本不一致的时候可以删除tag 分支重新打一个新的tag分支
    
     (删除本地tag分支,然后删除对应远程tag分支,执行上面的两个命令)
    
     ```
     git tag -d 0.1.0              
     git push origin :refs/tags/0.1.0 
     ```
    
    删除远端tag标记.jpg
     然后进行本地和远程验证一下文件有效性:输入命令 `pod spec lint `
    
    验证一下有效性.jpg
     验证通过!!!
    
    • 至此Podfile中可以用 pod 'LFPodDemo', :git => 'http://git.longhu.net/lijunjie/LFPodDemo.git'方式正常使用 pod install,但是本地不能使用 pod search XXX 命令搜索到
    使用方式一.jpg
    1. 要想使用 pod search XXX 需要我们项目组每个成员自己本地配置一下。 拉取项目代码到本地然后关联到远程仓库。上传.podspec到第一个远程私有仓库

      • 首先进入 ~/.cocoapods/repos 目录下

        cd ~/.cocoapods/repos

      • 然后创建一个私有仓库目录

        pod repo add LFPodPublicSpec spec远端的git仓库地址

        创建私有仓库目录.jpg
    • 然后向私有的 LFPodPublicSpec 远程仓库中提交 .podspec 文件

      pod repo push LFPodPublicSpec LFPodDemo.podspec

      向远端私有spec文件仓库提交podspec文件.jpg
     提交成功,然后看一下.cocoapods目录下面的变化: 
    
    本地cocoapods变化情况.jpg
     0.1.0版本出现了。然后我们使用 ` pod search LFPodDemo ` 命令搜索一下。 
    
    能够search到了.jpg
     成功了!!!!!!!
    
    1. 如何使用私有库

      • 使用 pod 'LFPodDemo', :git => 'http://git.longhu.net/lijunjie/LFPodDemo.git'方式

        该方式不支持项目私有库引用dependency

        使用方式一.jpg
    • 使用spec -- source 方式

      该方式支持项目私有库引用dependency,但是需要创建许多spec的git仓库用来搜索。

    使用方式二-source.jpg
    1. 把不同的specs文件集中到一个git代码仓库的整合,类似于CocoaPods/Specs.git

      将不同的项目代码下载到本地,然后在本地项目代码路径下面执行下面代码,在向私有的 LFPodPublicSpec 远程仓库中提交 .podspec 文件

      pod repo push LFPodPublicSpec LFXXX.podspec

    一个podspecs仓库关联多个podspecs.jpg 本地cocoapod文件目录结构.jpg

    整合到一个PublickSpec文件夹下面了。nice!!!!

    1. 使用pod search LFPodDemo搜索一下
    成功搜索到私有库.jpg

    成功了!!!!!!!

    四、参考链接

    相关文章

      网友评论

          本文标题:iOS 组件化开发

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