码迷,mamicode.com
首页 > 移动开发 > 详细

现有的iOS项目集成ReactNative的记录文档

时间:2015-11-11 15:06:21      阅读:635      评论:0      收藏:0      [点我收藏+]

标签:

原版地址,这里。中文翻译版,这里

这里整理下遇到的问题

1、指定root入参数未生效,表现形式:无法获取index.ios.boundle文件。

解决方法:其中文档命令

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

无法正确的设置 root 地址,跟踪了一下启动调用版本,最终是调用../react-native/packager/packager.js 。故将启动方式更改为

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

(1)保证执行脚本的路径必须在项目的跟路径。

(2)保证根据cd命令进入到react-native的packager路径下。

(3)出现问题后要根据自己项目的结构特点去修改脚本,这是一个开发最基本的能力。


2、pods依赖问题。表现形式:无法再项目使用对应的基本类,在podlib中未正常产生libReact,或者项目出现 RCTRootView not fount。

解决方法:podfile中的正确配置

#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]

3、服务端获取bundle方式:

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

4、根据服务端offLine版本获取bundle方式:

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

5、根据服务端生成bundle方式:

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


其他问题后续慢慢迭代整理。


现有的iOS项目集成ReactNative的记录文档

标签:

原文地址:http://my.oschina.net/HeroQ/blog/528901

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!