原版地址,这里。中文翻译版,这里。
这里整理下遇到的问题
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
其他问题后续慢慢迭代整理。