react-native遇到CSSLayout.h file not found的解决办法

96
挂着铃铛的兔
2017.01.19 17:25* 字数 539

今天本打算重写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 installpod install这些操作之后,正常来说就应该可以运行项目了,but哪有那么简单的事呢!

问题

问题.png

看到红色的警告了吧!这个在0.39和0.39之前的很多版本都会有这个问题,在这里就讲一下我的解决方式。(0.40咱以后再说)

解决

  1. 将报错的#import <CSSLayout/CSSLayout.h>全部改成#import "CSSLayout.h"
    (改完第一个之后,可以通过common+b来编译一下,很容易就会找到第二处,0.39一共是四处哦!)
  2. 将第一步完成后,再编译项目会再报一个错误
    问题2.png

    通过检查项目会发现是因为有两个CSSLayout.h文件,重名了!。

重名.png

打开React文件夹,将CSSLayout文件夹整体删掉!

3.完成上面的步骤后,再次编译还是会报错,所以,千万别忘了最重要的一步pod update,这步完成后,才见证奇迹的时刻!

结语

这个问题难为了我好久,google和baidu上都没有好的解决方式,在github上关于这个Issues的讨论有好多,最终还是凭之前的经验摸索出这个办法。

希望这篇文章可以帮助各位跳出这个坑!

React-Native