美文网首页Cocoapods
iOS podspec文件目录/subspec/子组件

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

作者: 童话镇里蜿蜒的河 | 来源:发表于2020-03-17 16:13 被阅读0次

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

    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/子组件

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