背景
- RN0.31之后的版本,使用CocoaPods集成到Swift项目,编译不通过,报错为
'CSSLayout/CSSLayout.h'file not found
- 原因是CocoaPods强制把所有的头文件(包括CSSLayout.h)放到同一个目录里了,而RN还傻乎乎的试图通过『#import <CSSLayout/CSSLayout.h>』这种方式引CSSLayout.h文件,当然找不到啦
解决方案
方案一:把RN的包退回到0.30去
方案二:
- 在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"
}
}
- 修改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
- 重新执行npm install
- 重新执行pod install
打完收工
网友评论