美文网首页
iOS记录一下项目组件化配置podspec遇到的坑

iOS记录一下项目组件化配置podspec遇到的坑

作者: 小驴拉磨 | 来源:发表于2018-11-30 10:30 被阅读57次

    私有库的创建我就不多记录了,网上太多了。

    这是我们其中一个首页组件,内部建了实体文件夹。


    image.png

    本地验证

    pod lib lint IQHHome.podspec --verbose --use-libraries --allow-warnings
    

    --verbose:打印验证过程的信息
    --use-libraries:解决引用第三方造成警告以及报错(详细的不说了,网上一搜一大堆)
    --allow-warnings:忽略所有警告

    问题1: - ERROR | [iOS] unknown: Encountered an unknown error (Unable to find a specification for IQHFoundation depended upon by IQHHome
    原因:IQHFoundation 是我们自己的私有库,引用时需要在pod lib lint 后面加source源,具体命令写法如下(不要忽略CocoaPods的库源)

    pod lib lint IQHHome.podspec --use-libraries --allow-warnings --sources=私有库源,CocoaPods的库源
    

    问题2: - ERROR | [iOS] [IQHHome/RouterAPI] xcodebuild: Returned an unsuccessful exit code. You can use --verbose for more information.
    还会报什么找不到文件:- NOTE | [IQHHome/RouterAPI] xcodebuild: /Users/lidong/Desktop/xxx/xxx/IQHHome/IQHHome/RouterAPI/IQHHomeRouterAPI.m:11:9: fatal error: 'IQHHomeController.h' file not found

    我感觉的原因:是因为建立实体文件夹,文件都不在同级目录,导致内部找不到文件,这个问题困扰了我好天,开始主要是因为私有库引用私有库都会报这个找不到文件的问题。最后我是去研究AFNetworking的podspec,才找到问题(此处感谢欧阳大佬的文章)。
    解决办法:

    • 当前私有库中引用当前私有库的其他实体文件中的文件


      image.png
      s.subspec 'RouterAPI' do |api|
        api.source_files = 'IQHHome/RouterAPI'
        api.dependency 'IQHHome/Controller'
      end
    
    • 当前私有库引用其他私有库,就简单了
     s.dependency 'IQHFoundation'
    

    但是你也可以按AFNetworking的方法,根据文件名字来建立虚拟文件夹,这样是就不存在这种问题的。

    希望遇到类似问题的朋友给留一下言,多多交流

    https://www.jianshu.com/p/7672943d8808

    相关文章

      网友评论

          本文标题:iOS记录一下项目组件化配置podspec遇到的坑

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