iOS组件化Cocoapods踩坑

2018-12-29  本文已影响8人  PandaXiong

一、推送私有库时候忽略警告

// pod repo push 私有索引库名称 spec名称.podspec 
pod repo push  xxx spec xxx.podspec --allow-warnings --verbose 

// --allow-warnings : 允许 警告,有一些警告是代码自身带的。
// --use-libraries : 私有库、静态库引用的时候加上 
// —verbose : lint显示详情

二、框架中如果使用Xib加载crash的情况
出现通过mainBundle加载不了,无法获取Xib

  [NSBundle bundleForClass:[self class] 获取bundle 
// 这样之后,无论是通过copy文件夹方式还是CocoaPods下载安装的方式,都能正常使用xib进行初始化了

三、图片无法正常显示通过ImageName

通过CocoaPods下载安装,如果xib中直接填写好的图片,则图片资源能直接显示,如果通过代码"[UIImage imageNamed:@""]"去设置的话,则图片资源根本显示不了

//改变代码图片路径
// 图片路径
#define WMCommonSrcName(file) [@"WMCommon.bundle" stringByAppendingPathComponent:file]
#define WMCommonFrameworkSrcName(file) [@"Frameworks/WMCommon.framework/WMCommon.bundle" stringByAppendingPathComponent:file]

WMCommonSrcName(file) 为通过copy文件夹方式获取图片路径的宏
WMCommonFrameworkSrcName(file) 为通过cocoapods下载安装获取图片路径的宏

之后修改代码中设置图片的方式如下:

UIImage *img = [UIImage imageNamed:WMCommonSrcName(@"image.png")]?:[UIImage imageNamed:WMCommonFrameworkSrcName(@"image.png")];

四、资源文件修改后需要clean一下,比如xib,html文件等
In Xcode, go to File->Project/Workspace settings.
Change the build system to Legacy Build system.
这样可以解决 ,改成xcode旧的构建系统。

五、error: include of non-modular header inside framework module

这个问题倒是好解决,在代码语句后面添加上  --use-libraries
pod lib lint --use-libraries
#或者
pod spec lint --use-libraries
#当然,在提交的时候也要加上
pod repo push <repoName> <podspec> --use-libraries
#此方法好像能一并解决xxx.h找不到的问题

六、MySpecs is not clean
这是pod lib lint验证通过货,提交时报的问题,可在我访问这个文件~/.cocoapods/repos/MySpecs,并把里面唯一一个license文件删干净后都还是有这个错误,然后发现好像删干净后要提交一下才行

有个解决办法是

$ pod repo update MyRepo

不过还是not clean;有效的朋友下面这段应该可以省略了~~
cd ~/.cocoapods/repos/MySpecs
#如果你没有手动删,也可以用命令删 先 ls 列出这个目录所有文件 然后执行rm -Rf 文件名
#删完后提交
git add --all .
git commit -m "remove useless files"
git push origin master

执行完后再执行提交语句就成功啦

pod push repo Myspecs xxx.podspec --use-libraries --allow-warnings

Note:这里添加了一个options就是--allow-warnings,
就是如果你的库依赖的第三方库有警告的话 终端会提示你要把这个加进去哒~
上一篇下一篇

猜你喜欢

热点阅读