今天准备试一下lottie这个牛牛的第三方,这个工具可以把从AE中导出的动画的json文件解析成一个view供我们使用。lottie的地址是:https://github.com/airbnb/lottie-ios。
首先,我是准备直接在项目中导入这个框架。本以为很简单的,可是意外还是发生了。导入框架lottie-ios之后,编译通不过,报了九个错误。我明明是按照说明做得,这是怎么回事呢?开始各种google,最终没有找到原因。具体错误信息如下:
CADisplayLink.m文件编译出错9个。
例如: Unknown type name 'CVDisplayLinkRef'; did you mean 'CADisplayLink'?
在搜索的过程中遇到一位博主,写了使用lottie的相关东西,无奈之下,试着在他的文章下面把我的问题提问了一下,没想到,他竟然回复了,非常的惊喜。他的回复如下:
iTerryWang: @睡醒的妞妞 我这边也用你的方式集成了下,确实会报你说的错,调查了下,是因为TARGET_OS_IPHONE 这种宏没有生效。正常的情况,报错那几个文件是macOS平台使用的。在编译iOS平台时,不应该被编译。可以尝试创建一个pch文件,把#import "TargetConditionals.h"这个加一下就可以正常编译了。 不过还是推荐使用pods的方式集成。
我按照他的方法进行了实验,真的编译过了,很开心。在我开心的心情还没有平静的时候,一盆冷水又浇了个透心凉。
继续集成lottie,使用推荐的方法:
LOTAnimationView animation = [LOTAnimationView animationNamed:@"loading"];
[self.view addSubview:animation];
[animation playWithCompletion:^(BOOL animationFinished) {
NSLog(@"动画播放完成");
}];
然后编译,崩溃啦!崩溃啦!崩溃啦!
崩溃信息如下:
运行,结果崩溃了,崩溃在LOTAnimationView的205行, resourceNotFoundException;这句话。控制台给的崩溃信息是:** Terminating app due to uncaught exception 'ResourceNotFoundException', reason: '(null)'
。好无奈。
放弃使用直接导入的方式了,改用推荐的pod吧。
打开终端,正常的方式建立Podfile文件,写入
platform:ios,'8.0'
target 'TestLottie' do
pod 'lottie-ios','~>1.5.0'
end
一直pod失败,提示连接失败443。以为是终端没有使用翻墙代理导致的,所以花费了两三个小时的时间在做终端代理的配置。配置了代理之后,还是报错。为了验证到底是哪里出了问题,先导入AFNetWorking试试,一试发现成功了,现在可以排除网络原因了,应该是lottie这个三方没找对。
错误信息如下:
bogon:TestLottie aa$ pod install
Analyzing dependencies
Downloading dependencies
Using AFNetworking (3.1.0)
Installing lottie-ios (1.5.0)
[!] Error installing lottie-ios
[!] /usr/bin/git clone https://github.com/airbnb/lottie-ios.git /var/folders/yb/20c1c4sx0q91yqvzlr92n_p80000gp/T/d20170310-59137-kam3xz --template= --single-branch --depth 1 --branch 1.5.0
Cloning into '/var/folders/yb/20c1c4sx0q91yqvzlr92n_p80000gp/T/d20170310-59137-kam3xz'...
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
然后我想到先search一下看看能否找到lottie这个三方库。
bogon:TestLottie aa$ pod search lottie-ios
[!] Unable to find a pod with name, author, summary, or description matching `lottie\-ios`
搜索不到这个三方库。再搜一下AF试试吧。
bogon:TestLottie aa$ pod search AFNetWorking
[!] Unable to find a pod with name, author, summary, or description matching `AFNetWorking`
AF之前明明已经pod成功了,竟然也search不到,继续查找原因。然后就找到了,说是本地库的缓存有问题,在终端执行如下命令:
bogon:TestLottie aa$ rm ~/Library/Caches/CocoaPods/search_index.json
再次search,真的成功了!
bogon:TestLottie aa$ pod search AFNetworking
Creating search index for spec repo 'master'.. Done!
再次搜索search lottie,就真的找到了。
再次执行install
bogon:TestLottie aa$ pod install
Analyzing dependencies
Downloading dependencies
Using AFNetworking (3.1.0)
Installing lottie-ios (1.5.0)
[!] Error installing lottie-ios
[!] /usr/bin/git clone https://github.com/airbnb/lottie-ios.git /var/folders/yb/20c1c4sx0q91yqvzlr92n_p80000gp/T/d20170310-59225-l8vqf0 --template= --single-branch --depth 1 --branch 1.5.0
Cloning into '/var/folders/yb/20c1c4sx0q91yqvzlr92n_p80000gp/T/d20170310-59225-l8vqf0'...
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
结果,又失败了。。。。。
仔细对比之后发现,这次的错误和上次的错误竟然是一样的!!!看来还是应该查找
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
这个错误。
寻找之后发现执行下面这个命令之后就好了:
bogon:TestLottie aa$ Git config --global http.postBuffer 524288000
再次执行install,
bogon:TestLottie aa$ pod install
Analyzing dependencies
Downloading dependencies
Using AFNetworking (3.1.0)
Installing lottie-ios 1.5.0 (was 1.0.4)
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There are 2 dependencies from the Podfile and 2 total pods installed.
bogon:TestLottie aa$
终于成功啦!!!!
后来再次查找原来的导入lottie的工程中的崩溃,发现是我忘记导入loading文件啦,实在是汗颜。人在着急的状态下真的是检验抗压和应变能力,这种错误实在是。。。。。以后不管事情多着急,还是应该静下心来才能事半功倍。继续加油吧!