Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

手把手教你搭建React Native 开发环境 - ios篇 (React Native@0.55.4,Xcode@10) #1

Open
cys85 opened this issue Jun 18, 2018 · 9 comments

Comments

@cys85
Copy link
Owner

cys85 commented Jun 18, 2018

手把手教你搭建React Native 开发环境 - ios篇 (React Native@0.55.4,Xcode@10)

本人一直在做前端工作,对react开发有一定的经验,最近因为项目需要开始逐步研究React Native。
跟着官网的实例一步一步的搭建React Native开发环境发现这个道路是非常非常曲折的(开发构建时各种错误),同时发现网上也没有一个对 React Native@0.55 及 Xcode 10的完整的填坑攻略,凭着一份为社区做贡献的热情,本人将这个过程中所遇到的问题及解决方案总结出来,为更多的在准备入坑或在坑中的开发的人员提供参考。

本机环境

  • 系统:macOS High Sierra 10.13.5
  • Nodejs:10.3.0
  • Xcode: 10
  • react-native-cli: 2.0.1
  • react-native: 0.55.4
  • watchman: 4.9.0
  • npm: 6.1.0
  • yarn: 1.7.0

环境下载及配置

设置淘宝镜像

$ npm config set registry http://registry.npm.taobao.org/

npm:

$ sudo npm install -g react-native-cli

yarn:

$ sudo yarn add global react-native-cli

watchman:

& brew install watchman

初始化项目

$ sudo react-native init projectName

启动

$ sudo react-native run-ios --simulator

填坑开始

填坑前嘱咐两句:

  1. 友情提示: 文件具有读写权限很重要!文件具有读写权限很重要!文件具有读写权限很重要!
  2. 查看隐藏文件的快捷键是 command + shift + .;

启动后会有一波错误来袭,准备填坑

错误:

Print: Entry, ":CFBundleIdentifier", Does Not Exist

见到这个错误先不要着急,向上滚动,寻找详细信息:
如果详细信息中显示

error: Build input file cannot be found: '/Users/cys/Desktop/Work/code/projectName/node_modules/react-native/third-party/double-conversion-1.1.5/src/double-conversion.cc'

不要着急,你只要见到 third-party 是这个文件夹下出的错误 那基本都是中国强(墙)惹的祸:

  1. 首先下载如下信息:
https://github.com/google/glog/archive/v0.3.4.tar.gz 
https://github.com/google/double-conversion/archive/v1.1.5.tar.gz
https://github.com/react-native-community/boost-for-react-native/releases/download/v1.63.0-0/boost_1_63_0.tar.gz
https://github.com/facebook/folly/archive/v2016.09.26.00.tar.gz
  1. 将如上下载的信息拷贝至 ~/.rncache/ 目录

  2. 在将以上目录文件拷贝到项目中 node_modules/react-native/third-party/ 目录,执行解压操作tar -zxf 文件名

  3. 再次执行 启动 操作

经过以上的步骤,你会发现 还是无法启动(NND)。

OK,继续看错误,你会发现错误还是 Print: Entry, ":CFBundleIdentifier", Does Not Exist(什么鬼,怎么还是这错误),咱们来看看错误的详细信息:

/Users/cys/Desktop/Work/code/projectName/node_modules/react-native/third-party/glog-0.3.4/src/base/mutex.h:105:10: fatal error: 'config.h' file not found
#include "config.h"           // to figure out pthreads support
         ^~~~~~~~~~
1 error generated.

这错误怎么破?

  1. 进入项目根目录执行:
$ cd node_modules/react-native/third-party/glog-0.3.4/
  1. 执行
$ sudo ./configure 

来吧,继续执行 启动(记得要在项目跟目录执行启动命令哦) 操作,试试。

耐心等一下,启动编译时间比较长.............

经过耐心等待,你会发现,还TNND的报错:

Print: Entry, ":CFBundleIdentifier", Does Not Exist

还是这个错误.........

别着急,我们继续看详细信息:

error: Build input file cannot be found: '/Users/cys/Desktop/Work/code/projectName/node_modules/react-native/Libraries/WebSocket/libfishhook.a'

这个错误信息又怎么破?

来, 用xcode打开你项目下的ios目录(推荐你打开ios目录前,最好给项目目录下ios文件夹的所有文件赋予 读写 权限,特别是 projectName.xcodeproj 文件,不加你会后悔的!)

如图更改 libfishhook.a

image

image

oK,接下来在 启动一下试试吧

如果你看见了如下信息

** BUILD SUCCEEDED **

恭喜你,成功填坑。

好吧,搭建到此为止了,如果有不明白的,可以留言或给我邮件 kuerbb@aliyun.com

@qinge5043
Copy link

完美填坑,填了一下午

@bingtao001
Copy link

thanks very much

@samuel1112
Copy link

Thank you.

@gebilaoman
Copy link

系统升级到最新版,xcode也是最新,自然而然就可以解决了

@hufans
Copy link

hufans commented Nov 12, 2018

help me a lot

@hufans
Copy link

hufans commented Nov 12, 2018

系统升级到最新版,xcode也是最新,自然而然就可以解决了

我是最新的Mojave,问题存在

@gebilaoman
Copy link

gebilaoman commented Nov 12, 2018

系统升级到最新版,xcode也是最新,自然而然就可以解决了

我是最新的Mojave,问题存在

我的系统属性,没有做代码任何,直接成功解决。我那时候还没有小版本,现在也没有敢升级最新的,同事好像最新的小版本跑不动。
Environment:
OS: macOS 10.14
Node: 8.11.1
Yarn: 1.10.1
npm: 6.4.1
Watchman: 4.9.0
Xcode: Xcode 10.1 Build version 10B61
Android Studio: 3.2 AI-181.5540.7.32.5014246

Packages: (wanted => installed)
react: 16.2.0 => 16.2.0
react-native: 0.55.4 => 0.55.4

@BoyceShi
Copy link

Mark.
共同进步。

@zhanght-02
Copy link

总结的很到位啊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants