关于组件化使用私有Pods的一些记录

最近在做项目的组件化,其中遇到一些问题,经常遇到自己解决过的问题又完全想不起来,于是每次都要反复查阅,很影响效率,所以打算把自己遇到的问题都记录下来,利人利己,下面我会以案例的方式,来讲述一些问题:

案例1

项目中图片缓存层是基于SDWebImage做的二次封装,在提交私有Pod时,出现了以下问题:

1
2
3
4
5
-> LGWebImage (1)
- ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code.
- ERROR | xcodebuild: LGWebImage/LGWebImage/LGWebImage/UIButton+LGWebCache.m:10:9: error: 'UIButton+WebCache.h' file not found with <angled> include; use "quotes" instead
- ERROR | xcodebuild: LGWebImage/LGWebImage/LGWebImage/UIImageView+LGWebCache.m:10:9: error: 'UIImageView+WebCache.h' file not found with <angled> include; use "quotes" instead
>

封装库中使用了SDWebImage中的UIImageView+WebCache和UIButton+WebCache,虽然在PodSpec文件里面添加了SDWebImage的依赖,但在打Pod时,并没有发现SDWebImage的文件头,所以代码层面就编译不过了,这时候只需要在PodSpec添加暴露SDWebImage头文件的配置即可解决问题,如下所示:

1
s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SRCROOT)/SDWebImage" }

案例2

新工程Podfile引入自己私有pod,明明私有Pod存在,却一直报以下错误:

1
2
3
Resolving dependencies of `Podfile`
[!] Unable to find a specification for `LGWebImage`
>

这是由于PodFile里面没有添加私有Pod源的地址,使用的Pod又没有指定git或者svn地址,所以在PodFile文件头部添加私有Pod源的地址即可解决问题,如下所示:

1
source 'https://192.168.1.100/Git/Specs.git'

案例3

加载图片资源文件时,要引用整个ImageAssets时,该如何写PodSpec?

1
2
3
s.resources = "HSImageAssets/HSImageAssets/Resources/**/*.xcassets”
<!--类似其他资源文件同样,如-->
s.resources = "CurrencyResource/CurrencyResource/**/*.plist"

案例4

封装听云SDK,由于听云提供的是Framework包,所以提交pod时会报以下错误:

1
2
3
4
-> TingYun_SDK_Catagory (1)
- ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code.
- NOTE | xcodebuild: TingYun_SDK_Catagory/TingYun_SDK_Catagory/TingYun_SDK_Catagory/Target/CTMediator+Tingyun_SDK_Catagory.m:10:9: fatal error: 'tingyunApp/NBSAppAgent.h' file not found
>

这是由于找不到听云里面的头文件,和安全1类似,由于他提供的为framework包,所以给他指定framework的位置:

1
s.xcconfig = {"FRAMEWORK_SEARCH_PATHS" => "$(PODS_ROOT)/tingyunApp/nbs-newlens-ios-2.5.2/"}

注:版权声明:本文为博主原创文章,未经博主允许不得转载。