現有的iOS項目集成ReactNative的記錄文檔

原版地址,這裏。中文翻譯版,這裏
html

這裏整理下遇到的問題node

一、指定root入參數未生效,表現形式:沒法獲取index.ios.boundle文件。react

解決方法:其中文檔命令ios

JS_DIR=`pwd`/ReactComponent; cd Pods/React; npm run start -- --root $JS_DIR

沒法正確的設置 root 地址,跟蹤了一下啓動調用版本,最終是調用../react-native/packager/packager.js 。故將啓動方式更改成git

JS_DIR=`pwd`/ReactComponent; cd ../react-native/packager; node packager.js --root $JS_DIR

(1)保證執行腳本的路徑必須在項目的跟路徑。github

(2)保證根據cd命令進入到react-native的packager路徑下。npm

(3)出現問題後要根據本身項目的結構特色去修改腳本,這是一個開發最基本的能力。react-native


二、pods依賴問題。表現形式:沒法再項目使用對應的基本類,在podlib中未正常產生libReact,或者項目出現 RCTRootView not fount。ruby

解決方法:podfile中的正確配置curl

#React now version :0.11.0-rc
pod 'React', :path => './react-native', :subspecs => [
  'Core',
  'ART',
  'RCTActionSheet',
  'RCTAdSupport',
  'RCTGeolocation',
  'RCTImage',
  'RCTNetwork',
  'RCTPushNotification',
  'RCTSettings',
  'RCTText',
  'RCTVibration',
  'RCTWebSocket',
  'RCTLinkingIOS',
]

#須要的模塊依賴進來即可,這裏是爲了舉例子,列舉全部的模塊

其中須要注意 :path => './react-native'  該路徑對應的是你的podfile的相對路徑,能夠在本地將官網的react-native在pod制定local依賴,通常是在zip包解壓下的../node_modules/react-native (能夠根據官網下載的最新版本,example中找到該文件夾)

其中pod install 過慢的問題解決方法:pod install --verbose --no-repo-update 。

其中沒法正常下載pod install的解決方法(or更新最新的CocoaPods version: 0.39.0  查看方法 pod --version):

gem sources --remove https://rubygems.org/
gem sources -a 
gem sources -l 
#注意 taobao 是 https ;gem若是版本太老能夠更新:sudo gem update --system ;更新pod repo:pod repo update

查看CocoaPods 當前 repo中 react-native的版本 

pod search React 

#目前的最新版本:0.11.0-rc 
#Versions: 0.11.0-rc, 0.10.0, 0.10.0-rc, 0.9.0, 0.9.0-rc, 0.8.0, 0.8.0-rc.2, 0.8.0-rc, 0.7.1, 0.7.0-rc.2, 0.6.0, 0.6.0-rc, 0.5.0, 0.4.4, 0.4.3, 0.4.2,
#  0.4.1, 0.4.0, 0.3.11, 0.3.8, 0.3.4, 0.3.3, 0.3.2, 0.3.1, 0.3.0, 0.2.1, 0.2.0,
#  0.1.0 [master repo]

三、服務端獲取bundle方式:

 NSString *urlString = @" 
 NSURL *jsCodeLocation = [NSURL URLWithString:urlString];
 RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"DemoView" initialProperties:nil launchOptions:nil];

四、根據服務端offLine版本獲取bundle方式:

 NSURL *jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"DemoView" withExtension:@"jsbundle"];
 RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"DemoView" initialProperties:nil launchOptions:nil];

五、根據服務端生成bundle方式:

curl 'http://localhost:8081/demo/DemoView.ios.bundle?platform=ios' -o DemoView.jsbundle


其餘問題後續慢慢迭代整理。

相關文章
相關標籤/搜索