使用CocoaPods进行组件化

前段时间借助了CocoaPods进行组件化开发,现在总结下操作步骤和遇到的问题,以供以后使用,借助Carthage进行组件化实际原理和步骤是相同的。

创建私有Pod仓库

  1. 在git服务器上创建私有仓库

  2. 执行命令pod repo add添加私有仓库(HTSpecs是私有仓库名称)

$ pod repo add HTSpecs [email protected]:IOS/HTSpecs.git
  1. 执行命令pod repo list检查是否添加成功
$ pod repo list
image

创建私有Pod组件库

  1. 创建模板项目

    pod lib create 项目名
    

    第一个问题是我们需要选择的开发语言,这里我们选择ObjC

    第二个问题是询问是否包含一个Demo项目,一般会选择Yes,其他问题根据实际情况选择。

  2. Pod会自动在当前目录生成一个项目,配置项目中的podspec文件

    pod5.png
`s.version` 表示的是当前类库的版本号;//**要和tag值对应**

`s.source` 表示当前类库远程地址;

`s.sources_files` 表示类库的源文件存放目录;

`s.resource_bundles` 表示资源文件存放目录;

`s.frameworks` 表示类库依赖的framework;

`s.static_framework = true` 把当前项目内的framework编译成静态库,如果项目中包含其他闭源静态库需要加上此句;

`s.dependency` 表示依赖的第三方类库;

`s.requires_arc  = true`,如果项目依赖了第三方类库,必须加上此句;

其他字段请参考http://guides.cocoapods.org/syntax/podspec.html

  1. 把需要导入的文件导入工程中,导入位置要与podspecs.sources_files配置的地址对应
**导入完成后执行git命令**  

    只执行一次,确认当前远程地址是否正确
    1. 添加远程仓库   
    git remote add origin 仓库地址 // 仓库地址与.podspec文件中的s.source对应  
    
    2.提交修改的文件并打tag
    git add .  
    git commit -a -m '修改内容'  
    git tag -a tag版本号 -m '修改内容'  // tag版本号和podspec配置文件里的s.version保持一致
    
    3.推送修改的分支和tag到远程仓库
    git push -u origin master  
    git push --tags  
  1. 使用 pod lib lint 验证类库是否符合 pod 的要求,可以使用 --allow-warnings 来忽略一些警告,建议在打 tag 前运行此命令,检查自己写的pod是否报错,在push到远程Specs的时候(步骤5),会自动运行此步骤。

如果项目依赖了私有库,需要加上--sources指定依赖库的所属 specs 地址,如下:

    pod lib lint 项目名.podspec --allow-warnings --sources='[email protected]:IOS/HTSpecs.git,https://github.com/CocoaPods/Specs'

  1. 把当前项目的podspec文件push到私有源中
pod repo push HTSpecs YourPod.podspec --allow-warnings --   sources='[email protected]:IOS/HTSpecs.git,https://github.com/CocoaPods/Specs'   


提交成功后gitlab里的私有仓库能看到上传的项目配置文件

之后提交新版本时按以下步骤进行:

    检查是否可以编译成功(pod lib lint)-> 提交并打上对应的 tag -> 推送到对应的 spec(pod repo push)

使用私有库

在主项目里Podfile文件里添加需要引用私有源地址:

source '[email protected]:IOS/HTSpecs.git'  
source 'https://github.com/CocoaPods/Specs.git'

使用下面命令可以指定引入第三方的远程仓库地址:

pod 'HTNetwork',:git => '[email protected]:IOS/HTNetwork.git'

编码注意

为避免提供给Pod外部时,出现引入错误,Pod中引用和继承第三方库需要按以下方式进行导入:

#if __has_include()
#import 
#else
#import "AFNetworking.h"
#endif

先用宏检查是否存在以第三方库形式导入的,是的话以此方式导入,不是的话以直接引入源码的方式导入。

给项目添加Carthage支持

  1. 打开Xcode,新建与pod库同名的打包工程。Xcode->File->New->Project,根据需要选择framework或者static library。
  1. 将创建好的相关文件复制到pod仓库的文件夹,并创建Cartfile文件,在Cartfile文件中写上所依赖的库。(可选,只为了获取第三方framework)
    例:

    github "SnapKit/Masonry"
    github "jdg/MBProgressHUD"
    git "[email protected]:IOS/YTKNetwork.git"

    运行carthage update --platform iOS --verbose下载依赖的framework,操作完毕文件夹结构应该如下(红色是新增的文件),Carthage/Build路径下有打包好的第三方framework。

  1. 将代码和资源文件添加到打包工程并提交,提交之前修改文件夹中的.gitconfig配置文件,删除Carthage/Checkouts前的注释。

    1. 选择需要分享给carthage的target。

      carthage5.png
      1. 使用以下命令验证是否可以用carthage成功打包

        carthage build --no-skip-current --platform iOS
        

        或者直接编译指定的famework

        carthage build YourFramework --no-skip-current --platform iOS
        

你可能感兴趣的:(使用CocoaPods进行组件化)