iOS podspec文件目录/subspec/子组件

公司最近在推动组件私有库的工作, 自己在尝试把组件推到远端私有库时,遇到了几个问题。

1 s.homepage 和 s.source

自己在写demo时,索引库和组件代码库用的都是github,地址比较接近。在XXX.podspec文件中,s.homepage 和 s.source对应的链接,很容易弄错。

s.homepage 和 s.source对应的链接指的是你的组件代码库的地址。不要写成索引库的地址。

2 组件推送到远端之后,通过pod的方式加载了组件,发现文件目录并非是自己想要的目录结构。

我期望的目录结构:


Manual changes.png

实际的目录结构:


Don't expect.png

我手动在Classes文件夹下创建了两个文件夹:Category和Downloader
将文件放在对应的文件夹下。
但是,pod进项目之后,发现Classes文件下并没有我手动创建的两个文件夹。所有的代码文件被统一放到了Classes文件下。
但是我发现AFN等一些三方,却可以把代码源文件文件按照功能来分块。
后面我查找了一些资料,发现了subspec这个东西。

因为我只是手动在 Classes文件下创建了子文件夹,并没修改XXX.podspec中的source_files。而s.source_files = 'XXX/Classes/*/' 指定了Classes目录为代码源文件的目录地址,系统会将Classes及其子目录下所有的文件统一放到Classes下,不展示手动创建的子目录。

这里需要更改XXX.podspec中的代码。
注释原来的s.source_files,按照Classes中子目录的文件结构,在XXX.podspec中,写上对应的subspec代码。

#  s.source_files = 'XXX/Classes/**/*'
s.subspec 'Category' do |category|
      category.source_files = 'XXX/Classes/Category/**/*'
      category.dependency 'AFNetworking'
  end

  s.subspec 'Downloader' do |dowmloader|
      dowmloader.source_files = 'XXX/Classes/Downloader/**/*'
      dowmloader.dependency 'YYModel'
  end

重新cd到example中pod install. 更新版本号并将组件推到远程私有库中。
此时,再通过pod的方式加载组件,就会得到想要的目录结构。


victory.png

还可以通过修改podfile中的代码,来指定加载XXX组件的子组件。

pod 'XXX/Category' 或  pod 'XXX/Downloader'  

效果图如下:


subspecs.png

你可能感兴趣的:(iOS podspec文件目录/subspec/子组件)