今天本打算重写React-Native与iOS原生的集成步骤,因为读了一遍之前的文章之后,觉得确实有些地方写的不太清楚,但在重写的时候,却遇'CSSLayout/CSSLayout.h' file not found
这个问题,弄了好久才找到解决办法。
如果遇到什么问题可以在评论区回复,或者加QQ群397885169讨论
复现
那篇文章的目标是将rn和原生iOS集成,所以,前面的步骤就不说了,之后会将那篇文章更新成完整版。
package.json
{
"name": "react-iOSNative",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
},
"dependencies": {
"react": "15.4.1",
"react-native": "0.39.2"
}
}
通过上面的package文件可以看到react-native
版本是0.39,为什么要用0.39呢?因为0.40有更大的坑啊!
按照我写的集成步骤,通过npm install
,pod install
这些操作之后,正常来说就应该可以运行项目了,but哪有那么简单的事呢!
问题
看到红色的警告了吧!这个在0.39和0.39之前的很多版本都会有这个问题,在这里就讲一下我的解决方式。(0.40咱以后再说)
解决
- 将报错的
#import <CSSLayout/CSSLayout.h>
全部改成#import "CSSLayout.h"
(改完第一个之后,可以通过common+b来编译一下,很容易就会找到第二处,0.39一共是四处哦!) - 将第一步完成后,再编译项目会再报一个错误
通过检查项目会发现是因为有两个CSSLayout.h
文件,重名了!。
打开
React
文件夹,将CSSLayout
文件夹整体删掉!
3.完成上面的步骤后,再次编译还是会报错,所以,千万别忘了最重要的一步pod update
,这步完成后,才见证奇迹的时刻!
结语
这个问题难为了我好久,google和baidu上都没有好的解决方式,在github
上关于这个Issues
的讨论有好多,最终还是凭之前的经验摸索出这个办法。