首先需要知道的终端命令(可能会用到,文中可能不提,遇到问题可能用得上,燃烧吧 骚年!)
查看iOS设备:
在终端中输入xcrun simctl list devices
检验设备链接,出现device则链接:
adb devices
真机调试服务转接至谷歌开发:
adb reverse tcp:8081 tcp:8081
查看端口是否被占用:
1、netstat -anp tcp | grep 8081
2、lsof -i:8081
查看配置信息(此处用于查看ip地址):
ifconfig
运行项目:
1.react-native run-ios --simulator "iPhone 8”
2.react-native run-ios --device "XXX"(xxx代表真机设备名字)
注:运行项目的命令在VS和webstorm中使用,如果没有直接安装,直接从xcode运用也是可以的。推荐前两者,可以看到比较多报错信息。
项目环境
"react": "16.3.1",
"react-native": "0.55.4"
注:由于是比较古老的项目,所以才会出现各种问题,如果从头开始做,估计不会出现这么多版本不兼容的问题,反正说多了都是泪,跑个项目跑了两天才跑起来,牛逼(ma mai bi)。
出现问题
问题1
已有项目无法运行
尝试解决:
1.删除依赖,重新npm install(各种依赖问题,并不是解决方法)
2.卡在install third party(估计是心塞住了,始终是无法install成功)
终端看进度 --verbose一直卡在13%,install你妹啊,牛逼(gun),网上大多数的copy高玩(**)工程师都是下面这个解决方法。然而并没卵用
第一步:
终端: cd node_modules/react-native/scripts && ./ios-install-third-party.sh && cd ../../../
第二步:
终端:cd node_modules/react-native/third-party/glog-0.3.4/ && ../../scripts/ios-configure-glog.sh && cd ../../../../
3.最后,发现日志中的某个字眼,boost_1_63_0.tar.gz (问题解决)
恼羞成怒的我,做最后的尝试,不成功我就跟着项目同归于尽。
第一步:
进入文件夹:~/.rncache
第二步:
找到一台你同事的电脑,也进入这个文件夹,把所有文件传到我的电脑,然后直接暴力替换。
第三步:
不用化身复仇者,同归于尽,编译成功,卡在install third party也不出现了,后面一路通畅。
第四步:
但是会报一个CFBundleShortVersionString什么版本号的,修改iOS项目中的info.plist文件中CFBundleShortVersionString
第五步:
项目运行成功的欢呼,敲锣打鼓,谢天谢地,拜关二哥
问题2
模拟器下出现 ----- dyld: Library not loaded: @rpath/******.framework/******
Referenced from: /Users/******/Library/Developer/CoreSimulator/Devices/******/data/Containers/Bundle/Application/******/******.app/demo
Reason: no suitable image found. Did find:
/Users/******/Library/Developer/CoreSimulator/Devices/******/data/Containers/Bundle/Application/******/******.app/Frameworks/******.framework/******: no matching architecture in universal wrapper
解决:将此framework替换成兼容x86的架包
问题3
真机一直卡在Loading dependency graph, done.(ios rn可以运行但是很久才进入项目)
解决:
Xcode 里修改RCTWebSocketExecutor.m文件,然后将其中的"localhost"改为你的电脑的IP地址。两个设备必须连接同一个网络(需要连接同一个局域网)。
问题4(此问题超纲,只是业务问题)
iOS推送无法获取token,估计是开发者中心证书配置有问题
问题5(此问题也超纲,也只是业务问题)
更新百度地图后Variable has incomplete type 'void'
解决:修改build settings 的compile sources as的方式,别看百度地图的鬼文档,别选Objective - C++。
最后