React Native在真機運行(IOS)

真機在線運行

  • 打開Xcode,open項目的ios目錄;
若是以前在模擬器調試過,換成真機運行的時候務必關閉模擬器;

須要修改的配置:react

clipboard.png

Bundle Identifier 修改成: com.soho3qios

若是上來就運行的話,會報錯:npm

clipboard.png

改完界面:json

clipboard.png

  • target處選擇Test

clipboard.png

修改以下:react-native

clipboard.png

確認目標設備的系統版本一致:xcode

clipboard.png

一樣也要確認Tests測試用例項目下的配置:測試

clipboard.png

打開Info.plist文件;ui

clipboard.png

值改成YES;spa

打開AppDelegate.m文件;修改jsCodeLocation 的引用位置爲咱們添加進來的jsbundle;
修改成:調試

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"/main.ios" withExtension:@"jsbundle"];

目前爲止配置的基本差很少了,這個時候能夠點運行試試,但極有可能會出現如下錯誤:

clipboard.png

好像是類庫導入的問題;
查看到報錯的文件位置:

clipboard.png

是在測試用例下類庫缺失;

解決辦法:

  1. target選擇測試;
  2. 找到Build Phases,新增資源庫;

clipboard.png

新增:

clipboard.png

解決完上邊問題,再次 CMD + R 運行,若是運行成功,便可在手機上看到模擬器運行時一樣界面;

真機離線運行

離線運行須要打包後把jsbundle添加到項目中;同時,xcode中須要修改下配置;

  • 打開 RCTWebSocketExecutor.m 文件:

clipboard.png

文件中找到localhost,替換爲你的IP;

clipboard.png

  • 新建打包命令:
react-native bundle --entry-file index.js --bundle-output ./ios/bundle/main.ios.jsbundle --platform ios --assets-dest ./ios/bundle --dev false

在ios目錄下新建一個bundle文件夾,用於存放打包完的main.ios.jsbundle 和assets文件;

或者直接在package.json 中添加命令:

"bundle-ios": "react-native bundle --entry-file index.js --bundle-output ./ios/bundle/main.ios.jsbundle --platform ios --assets-dest ./ios/bundle --dev false"

接下來運行打包命令;

npm run bundle-ios

輸出jsbudle後在Xcode中添加進去;

直接拖進去,

clipboard.png

選擇此項

clipboard.png

再次運行,若是順利,便可成功打一個離線包,裝到手機上;

離線包模式下開啓Chrome調試會很慢,甚至load不出來;因此能夠打Release包;
具體設置: Product > Scheme > Edit Scheme
選擇Relesase

clipboard.png

這種版本不會出現紅屏報錯;

相關文章
相關標籤/搜索