美文网首页
[冒个泡]CocoaPods集成RN到Swift项目报错及解决办

[冒个泡]CocoaPods集成RN到Swift项目报错及解决办

作者: Azen | 来源:发表于2016-09-08 13:37 被阅读144次

背景

  1. RN0.31之后的版本,使用CocoaPods集成到Swift项目,编译不通过,报错为

'CSSLayout/CSSLayout.h'file not found

  1. 原因是CocoaPods强制把所有的头文件(包括CSSLayout.h)放到同一个目录里了,而RN还傻乎乎的试图通过『#import <CSSLayout/CSSLayout.h>』这种方式引CSSLayout.h文件,当然找不到啦

解决方案

方案一:把RN的包退回到0.30去
方案二:

  1. 在package.json文件的script里加一句:
"postinstall": "find ./node_modules/react-native \\( -name *.h -o -name *.m \\) -print0 | xargs -0 sed -i '' -e 's:<CSSLayout/\\(.*\\)>:\"\\1\":g'"

修改后的样式大概长这样:

{
  "name": "项目名字",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "bundle": "react-native bundle --platform ios --entry-file index.ios.js --bundle-output bundle/main.ios.jsbundle --assets-dest bundle/ --dev false",
    "postinstall": "find ./node_modules/react-native \\( -name *.h -o -name *.m \\) -print0 | xargs -0 sed -i '' -e 's:<CSSLayout/\\(.*\\)>:\"\\1\":g'"
  },
  "dependencies": {
    "react": "15.3.1",
    "react-native": "0.32.0"
  }
}
  1. 修改node_modules/react-native/React.podspec文件,干掉第48行。
    原来长这样:
  s.subspec 'CSSLayout' do |ss|
    ss.source_files        = "React/CSSLayout/**/*.{c,h}"
    ss.header_mappings_dir = "React"
  end

修改后46行附近大概长这样:

  s.subspec 'CSSLayout' do |ss|
    ss.source_files        = "React/CSSLayout/**/*.{c,h}"
  end
  1. 重新执行npm install
  2. 重新执行pod install

打完收工

相关文章

网友评论

      本文标题:[冒个泡]CocoaPods集成RN到Swift项目报错及解决办

      本文链接:https://www.haomeiwen.com/subject/lnpsettx.html