问题一:
ios环境下按照官网步骤并且pod已经设置完清华源后启动npm run ios
,报错如下:
** BUILD FAILED **
The following build commands failed:
CompileC /Users/loser/Library/Developer/Xcode/DerivedData/test0205-dasunahpjpavelgmslwgmvjhesxy/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/Flipper.build/Objects-normal/x86_64/FlipperRSocketResponder.o /Users/loser/Documents/projects/test0205/ios/Pods/Flipper/xplat/Flipper/FlipperRSocketResponder.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)
解决方案
网上大部分的答案全都是类似这种:
1. cd /ios
2. run `pod install`
3. cd ..
4. delete _build_ folder
5. run `react-native run-ios`
亲测无效。
正确的解决方案如下:
这是因为iOS项目use_flipper
中的use_flipper。
use_flipper!
因此,我需要使用use_flipper来指示Flipper-Folly
版本为
use_flipper!({ 'Flipper-Folly' => '2.3.0' })
更改之后,它运行完美。
如果安装pod依赖过程中卡在boost-for-react-native
或其他依赖,请在ios/Podfile文件头加入pod 'boost-for-react-native', :git => 'https://gitee.com/mirrors/boost-for-react-native.git’
,下载gitee中的依赖,另外,控制台需要单独配置代理,你的梯子默认是不对控制台生效的
问题二:
解决以上问题后运行,再次报错,如下:
error: Can’t find ‘node’ binary to build React Native bundle If you have non-standard nodejs installation, select your project in Xcode, find ‘Build Phases’ - ‘Bundle React Native code and images’ and change NODE_BINARY to absolute path to your node executable (you can find it by invoking ‘which node’ in the terminal)
因为我是使用了nvm作为node的版本管理工具,所以xCode在使用node时,找不到。
which node
/Users/sharkship/.nvm/versions/node/v12.16.1/bin/node
我们可以使用软连接的方式,将node链接到 /usr/local/bin/node
目录上,xCode即可找到node
ln -s $(which node) /usr/local/bin/node
当然在使用nvm
更换完node版本时,需要使用上述命令进行node的更新。
问题四:
Native应用中的PhaseScriptExecution错误,具体报错信息如下:
error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by opening BoltAssignment.xcworkspace.
Command line invocation:
/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -workspace BoltAssignment.xcworkspace -configuration Debug -scheme BoltAssignment -destination id=3E598855-6D4F-4F36-BEE1-8663A1F71787
nvm is not compatible with the "PREFIX" environment variable: currently set to "/usr/local"
Run `unset PREFIX` to unset it.
nvm is not compatible with the "PREFIX" environment variable: currently set to "/usr/local"
Run `unset PREFIX` to unset it.
Command PhaseScriptExecution failed with a nonzero exit code
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'Flipper-Glog' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.4, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'Flipper-PeerTalk' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'libwebp' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'YogaKit' from project 'Pods')
warning: Capabilities for Signing & Capabilities may not function correctly because its entitlements use a placeholder team ID. To resolve this, select a development team in the BoltAssignment editor. (in target 'BoltAssignment' from project 'BoltAssignment')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'Flipper-DoubleConversion' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'boost-for-react-native' from project 'Pods')
warning: no rule to process file '/Users/harsh_nagalla/dev/BoltAssignment/ios/Pods/Flipper-RSocket/rsocket/README.md' of type 'net.daringfireball.markdown' for architecture 'x86_64' (in target 'Flipper-RSocket' from project 'Pods')
warning: no rule to process file '/Users/harsh_nagalla/dev/BoltAssignment/ios/Pods/Flipper-RSocket/rsocket/benchmarks/CMakeLists.txt' of type 'text' for architecture 'x86_64' (in target 'Flipper-RSocket' from project 'Pods')
warning: no rule to process file '/Users/harsh_nagalla/dev/BoltAssignment/ios/Pods/Flipper-RSocket/rsocket/benchmarks/README.md' of type 'net.daringfireball.markdown' for architecture 'x86_64' (in target 'Flipper-RSocket' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'RNFastImage' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'SDWebImageWebPCoder' from project 'Pods')
** BUILD FAILED **
The following build commands failed:
PhaseScriptExecution [CP-User] Generate Specs /Users/harsh_nagalla/Library/Developer/Xcode/DerivedData/BoltAssignment-cxeqsscopunscndrzxcrfnugkasb/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FBReactNativeSpec.build/Script-1F0D93C9412E4439D9C46216EB143B15.sh
(1 failure)
出现这个问题的场景是我按照官方文档新建了一个项目,没有出现上述的问题,与之前操作不通的是,这次安装pod依赖我是用的pod install --verbose --no-repo-update
。但是yarn ios
尝试运行项目时就出现以上错误(提醒:不要npm与yarn混用)
解决方案:npx react-native run-ios
代替yarn ios
解决了这个问题。
问题五:
Build system information
error: Multiple commands produce '/Users/mac/Library/Developer/Xcode/DerivedData/ReactNativeProject-erfowopvthnfaidafpmlevtdurad/Build/Products/Debug-iphonesimulator/ReactNativeProject.app/Entypo.ttf':
1) Target 'ReactNativeProject' (project 'ReactNativeProject') has copy command from '/Users/mac/study-demo/ReactNativeProject/node_modules/react-native-vector-icons/Fonts/Entypo.ttf' to '/Users/mac/Library/Developer/Xcode/DerivedData/ReactNativeProject-erfowopvthnfaidafpmlevtdurad/Build/Products/Debug-iphonesimulator/ReactNativeProject.app/Entypo.ttf'
2) That command depends on command in Target 'ReactNativeProject' (project 'ReactNativeProject'): script phase “[CP] Copy Pods Resources”
balabala一堆看到好几个.ttf
的字眼,推测就是我自己引用的icon依赖(react-native-vector-icons
)可能有问题,此项目我自定义安装的依赖有如下:
@react-native-community/masked-view
@react-navigation/bottom-tabs
@react-navigation/native
@react-navigation/stack
react-native-gesture-handler
react-native-reanimated
react-native-safe-area-context
react-native-screens
react-native-swiper
react-native-vector-icons
于是:react-native unlink react-native-vector-icons
,重新运行项目后正常,但是这样的话icon库肯定就是用不了了,后面需要另外找方案。