ios react-native 环境配置
来源:互联网 发布:mac百度网盘破解限速 编辑:程序博客网 时间:2024/06/07 05:35
在这里不讲react-native的开发,只讲有关在ios项目上配置react-native环境的过程
在这里会经常用到终端,请习惯可视化界面操作的同学最好学着用命令行进行操作,我也是这么一步一步过来的。
首先先准备好需要的工具
1、Homebrew,mac的包管理器,用于装node.js与其他一些东西的
官网:https://brew.sh/,进入官网后在终端执行官网提示的命令行,这里给出,不过可能会更新,所以最好照着官网的。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
在终端执行之后,等待安装成功就行了。
2、node.js
需要使用homebrew来安装node.js,react-native需要用到
brew install node
3、react-native-cli
react-native-cli是react-native的命令行工具。用于执行创建、初始化、更新项目、运行打包服务(packager)等任务。
npm install -g react-native-cli
好了,准备好了上面的东西之后,就开始配置react-native了。
在此之前,先说一下可能会入坑的地方,在这里,react-native的版本最好不要用最新的,我试过了用最新的0.48.3,结果搞了一整天了还没搞定,试过了网上几乎所有的方法,还是出现了一些问题,无法正常运行,这里推荐用0.44.0。
这里需要替换一个文件,不然项目会出现一些问题,参考文章:react-native缓存文件boost_1_63_0.tar.gz的替换
一个是新建项目的配置,一个是原生ios项目植入react-native,在这里分开讲
1、新建项目的配置
进入一个目录下,存放rn项目的目录,然后执行创建rn新项目的命令,然后等待完成就行了,hello_rn是随便取的,项目名。
react-native init hello_rn
完整的目录如下
然后开启react-native服务,另开一个终端,然后进入项目根目录,执行命令
react-native start
最后执行命令,启动项目(如果你删除了~/.rncache目录,该命令还可以帮你生成该目录)
react-native run-ios
2、原生ios项目植入react-native
开启终端进入项目根目录,对原生项目进行react-native的初始
react-native init
执行该命令后会让你填入一些信息,这些信息最终会生成package.json文件,可以在根目录进入该文件查看。
执行命令初始化react
npm install react --save
强制更改react版本的命令是
npm install --save react@16.0.0.alpha.6
初始化react-native
npm install react-native --save
强制更改react-native版本的命令是
npm install --save react-native@0.44.0
如果项目有用cocoapods的话,xcode进入项目,找到podfile,增加以下配置
pod 'Yoga', :path => './node_modules/react-native/ReactCommon/yoga'pod 'React', :path => './node_modules/react-native', :subspecs => ['Core','ART','RCTActionSheet','RCTAdSupport','RCTGeolocation','RCTImage','RCTNetwork','RCTPushNotification','RCTSettings','RCTText','RCTVibration','RCTWebSocket','RCTLinkingIOS',]
代码照搬的同时,最好注意一下路径是否跟你的一样,不一致的话,改成你自己项目的路径。
然后在终端执行命令更新pod
pod install
生成自己的index.ios.js文件,终端-项目根目录,执行vi命令,然后直接退出
vi index.ios.js
然后open index.ios.js 文件,粘贴以下代码
/** * Sample React Native App * https://github.com/facebook/react-native * @flow */import React, { Component } from 'react';import { AppRegistry, StyleSheet, Text, View} from 'react-native';class NativeRNApp extends Component { render() { return ( <View style={styles.container}> <Text style={styles.welcome}> Welcome to React Native! </Text> <Text style={styles.instructions}> To get started, edit index.ios.js </Text> <Text style={styles.instructions}> Press Cmd+R to reload,{'\n'} Cmd+D or shake for dev menu </Text> </View> ); }}const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF', }, welcome: { fontSize: 20, textAlign: 'center', margin: 10, }, instructions: { textAlign: 'center', color: '#333333', marginBottom: 5, },});// 项目名要有所对应AppRegistry.registerComponent('NativeRNApp', () => NativeRNApp);
在项目中,新建一个ViewController装载index.ios.js的内容,在这里我新建了ReactViewController,代码如下
//// ReactViewController.h// ego//// Created by xihao on 2017/9/15.// Copyright © 2017年 yidont. All rights reserved.//#import <UIKit/UIKit.h>@interface ReactViewController : UIViewController@end
//// ReactViewController.m// ego//// Created by xihao on 2017/9/15.// Copyright © 2017年 yidont. All rights reserved.//#import "ReactViewController.h"#import <React/RCTRootView.h>@interface ReactViewController ()@end@implementation ReactViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. NSString * strUrl = @"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"; NSURL * jsCodeLocation = [NSURL URLWithString:strUrl]; RCTRootView * rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"NativeRNApp" initialProperties:nil launchOptions:nil]; self.view = rootView; // 也可addSubview,自定义大小位置 // Do any additional setup after loading the view.}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}/*#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller.}*/@end
开启react-native服务,另开终端进入项目根目录执行react-native start
最后执行react-native run-ios
QQ:361561789
Email:voctex@163.com
Github:https://github.com/voctex
- ios react-native 环境配置
- ios React Native 入门环境配置
- iOS开发 React-native开发环境配置
- iOS开发 React-native开发环境配置
- React-Native (iOS)环境的配置
- React Native 配置环境(iOS and Android)
- React Native 环境配置
- React Native环境配置
- React-Native环境配置
- React Native 环境配置
- React Native 环境配置
- React Native环境配置
- react native 环境配置
- React Native 环境配置
- React-Native For IOS 开发之环境配置
- iOS React Native开发 环境配置图文教程
- React Native iOS环境搭建
- React Native -ios环境搭建
- 软件工程导论——介绍自己
- Redis中的StackExchange.redis在C#中的应用
- Android下Shape设置stroke描边部分机型不显示边框线
- 未来,没有什么事是刷脸摆不平的!
- HTTP与HTTPS
- ios react-native 环境配置
- Perl 字符串转换成UNIX时间戳
- 在构建项目的时候如果maven找不到包jconsole,tools两个包
- iOS开发之Runtime常用示例总结
- 基于OpenCV的人脸检测系统
- a+b+c
- ubuntu14.04 安装Kdevelop
- 秋招总结(持续更新)
- Weblogic部署项目三种方式