前言: 由于webp格式和png同等清晰度下,数据量更小,项目组决定要支持加载wbep图片,SDWebImage要支持webp格式,必须依赖libwebp库,但是由于libwebp原有源是在chromium.googlesource.com上,翻墙pod install安装也会失败。报错信息如下:
Cloning into'/var/folders/9d/jkc05y752h1csv8s91s27pg80000gn/T/d20170503-52118-q8kwcb'...fatal: unable to access'https://chromium.googlesource.com/webm/libwebp/': Failed to connect to chromium.googlesource.com port443: Operation timed out
由于项目里面都是使用SDWebImage框架,改用YYImage成本也比较大,时间也不充裕,目前通过查阅网上的办法并测试发现目前就三个办法可行,可以看文章末尾,都不太适合我们工程。比较了几个方法之后,我在想是不是可以把依赖的libwebp库下载下来推送到私有pod仓库,测试用enkins也不用翻墙,毕竟libwebp库的更新频率是比较低 736B 的,能保证SDWebImage每次打包都更新就可以,于是就有了这个仓库
使用方法
1、podfile新增:
source https://github.com/yohenpeng/YHSpecs.git
pod 'YHLibwebp'
pod 'SDWebImage'
2、将仓库里的 SDImageWebPCoder引入到工程中,并将其加入到解码管理类
SDImageWebPCoder *coder = [SDImageWebPCoder sharedCoder];
[[SDImageCodersManager sharedManager] addCoder:coder];
优缺点:替换一次host文件即可,可以使用Cocoapod集成,但是需要翻墙
- podfile增加
SDWebImageWebPCoder
运行pod install,肯定会失败的,不过可以查看SDWebImage依赖的libwebp版本,比如0.6.1 - find ~/.cocoapods/repos/master -iname libwebp输出路径
- cd 上述路径,找到对应的版本目录,进去编辑libwebp.podspec.json
- 找到 "source": { "git": "https://chromium.googlesource.com/webm/libwebp","tag": "v0.6.1”}, 将源替换为https://github.com/webmproject/libwebp.git
- 修改为镜像源之后指定pod install
优缺点:不用翻墙,可以使用Cocoapod集成,每次更新pod或者打包都要进行这样的操作,非常繁琐
- 从github上下载SDWebImage源代码
- 从webp库这里下载对应系统的webp库framework集成到工程中
优缺点:不用翻墙,无法使用Cocoapod集成,会经常遗漏升级版本,而且各组件工程也无法使用