以前咱们都是使用的沙盒模式进行开发,简述步骤就是,先安装一个Expo应用程序,而后使用扫一扫功能在Expo内运行咱们的App,偏向传统的前端开发方式。html
同时,React Native 能够采用完整的原生开发模式,将开发好的项目打包编译成一个独立 App
,而后直接安装到手机上运行,偏向传统的 Native
开发方式。前端
[参照文档] reactnative.cn/docs/0.42/g…java
Yarn
是 Facebook
提供的替代 npm
的工具,能够加速 node
模块的下载。React Native
的命令行工具用于执行建立、初始化、更新项目、运行打包服务等任务。node
安装python
npm install -g yarn react-native-cli
# 版本检测
yarn -v
react-native -v
复制代码
镜像配置react
yarn config set registry https://registry.npm.taobao.org --global
yarn config set disturl https://npm.taobao.org/dist --global
# 检测
yarn config get registry
yarn config get disturl
复制代码
须要注意,RN目前只支持python2.x
版本,安装了3.x版本的须要更换。在安装python时,注意安装界面上的 Add Python to path
选项, 勾选上会自动将Python配置到环境变量,不然须要手动配置。android
安装完毕后, 在命令行中键入 python --version
进行测试,显示出版本号即成功ios
C:\Users\Administrator>python --version
Python 2.7.16
复制代码
若是使用 Android
系统开发测试,那么须要安装 Java SE Development Kit (JDK)
,安装后须要手动配置环境变量。打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量 -> 新建。环境变量配置后,须要关闭现有的命令行工具而后从新打开,新的环境变量才会生效。shell
jdk 下载地址: www.oracle.com/technetwork…npm
环境变量配置参考文档: jingyan.baidu.com/article/d45…
# 1. 建立 JAVA_HOME 环境变量,值为 jdk 的安装根路径,默认
# C:\Program Files\Java\jdk1.8.0_212
# 2. 编辑 Path 环境变量,在 Path 中加入
# %JAVA_HOME%\bin
# %JAVA_HOME%\jre\bin
#【注意注意注意】若是是Win10一个一个添加便可
# 3. 建立 CLASSPATH 变量, 值为
# .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
# 4. 配置完毕后保存并退出, 而后运行下面命令进行检测
java -version
javac -version
复制代码
Android Studio
是谷歌推出的 Android
集成开发工具,其包含了运行和测试 React Native
应用所需的 Android SDK
和模拟器。
当成功安装后,出现以下启动界面:
在Android Studio的欢迎界面中选择Configure | SDK Manager。
经过Android Studio安装的SDK路径,须要配置到 ANDROID_HOME
环境变量中。
还能够把Android SDK的tools和platform-tools目录添加到PATH变量中,这样就能够在终端中运行一些Android工具,例如adb devices或android avd等。
adb安装在Android-sdk路径下的platform-tools目录,这个工具是电脑与Android设备进行通讯的通用命令行工具,有几个经常使用命令须要了解,未来打包调试的时候须要保证本机的adb版本须要与模拟器的adb一致,若是不一致能够复制本机的adb.exe而后覆盖掉模拟器中的版本。
// 链接正常的话会显示设备信息或地址信息,如:127.0.0.1:62001 device
adb devices
// 若是没有发现设备,那么须要手动进行链接,夜神模拟器端口62001,MUMU模拟器端口7555
adb connect 127.0.0.1:7555
复制代码
建立项目的时候,保证项目所在目录没有中文与空格,而后运行命令建立项目,建立的过程当中须要联网下载依赖包,须要耐心等待。
# 建立项目,项目名称自由定义
react-native init projectName
复制代码
在项目目录下运行 react-native run-android
命令,默认会启动一个8081
端口的js打包传输服务,它的做用是向移动设备提供项目最新的打包生成的bundle.js文件,每当代码变动时,该服务就会从新打包js并推送给客户端使用。
启动服务
# 切入项目目录
cd projectName
# 启动服务,并指定端口
react-native run-android
复制代码
服务检测
服务启动以后,咱们能够经过浏览器测试js是否能够正常获得,url以下: http://ip:8081/index.bundle?platform=android
react-native run-android
命令便会打包android
项目, 生成apk
文件, 而后自动安装到Android设备并运行。react-native run-android
// 最后看到BUILD SUCCESSFUL提示就表明打包成功
复制代码
接下来设备会自动启动应用,若是显示以下界面就表明一切正常能够开发调试了。
index.js
, 它是项目的入口
文件, 负责注册根组件App.js
, 是默认生成的根组件
, 咱们在 APP 上看到的欢迎界面
就是这个组件实现的App.js
中的文本内容, 而后手机摇一摇 Reload
查看便可看到修改内容export default class App extends Component {
render() {
return (
<View style={styles.container}> <Text style={styles.welcome}> react-native学习 </Text> <Text style={styles.instructions}> react-native学习 </Text> </View>
);
}
}
复制代码
根组件代码解读
// 导包
import React, { Component } from 'react';
import {
Platform,
StyleSheet,
Text,
View
} from 'react-native';
// Platform.select方法会根据运行环境获得配置的内容
const instructions = Platform.select({
ios: 'Press Cmd+R to reload,\n' +
'Cmd+D or shake for dev menu',
android: 'Double tap R on your keyboard to reload,\n' +
'Shake or press menu button for dev menu',
});
// 导出根组件, 组件的定于语法与以前学习的同样
export default class App extends Component {
render() {
return (
// 返回的视图须要使用View组件包裹, 做用至关于Div标签
<View style={styles.container}>
{/* 文本内容使用Text组件包裹, 做用至关于P标签 */}
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit App.js
</Text>
<Text style={styles.instructions}>
{instructions}
</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,
},
});
复制代码
该过程会用到 keytool
密钥和证书管理工具(jdk 提供: C:\Program Files\Java\jdk1.8.0_212\bin\keytool.exe ),在项目的主目录中执行:
# 生成签名key,注意记下你的密钥和存储密码,后面配置文件须要使用
keytool -genkey -v -keystore my-release-key.keystore -alias 本身起的别名 -keyalg RSA -keysize 2048 -validity 10000
# 将keystore文件移动至android/app/文件夹
move my-release-key.keystore android/app/
复制代码
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=本身起的别名
MYAPP_RELEASE_STORE_PASSWORD=存储密码
MYAPP_RELEASE_KEY_PASSWORD=密钥
复制代码
android {
signingConfigs {
release {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
复制代码
# 在android/app/build/outputs/apk/文件夹中生产能够发布的app-release.apk文件
cd android
gradlew assembleRelease
复制代码
Could not get BatchedBridge, make sure your bundle is packaged correctly
android/app/src/main/
目录下有 assets
文件夹, 若是没有, 手动建立一个react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
mkdir "%ANDROID_HOME%\licenses"
echo |set /p="8933bad161af4178b1185d1a37fbf41ea5269c55" > "%ANDROID_HOME%\licenses\android-sdk-license"
mkdir "$ANDROID_HOME/licenses"
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
apk
安装包, 能够在项目中找到,路径为 projecrName/android/app/build/outputs/apk
,这个apk安装包能够手动安装到其它模拟器或真机中进行开发调试。悬浮框
权限,可在设置
=> 受权管理
=> 应用权限管理
中找到对应的 APP , 而后开启
悬浮框权限。USB
直连电脑调试开发, 还能够采用无线
的方式进行调试局域网
, 而后摇一摇唤出调试菜单Dev settings
=> Debuug server host
, 配置本地 IP
地址和端口号 8081
便可错误
提示, 说明配置错了: could not connect to development server
双击installer_r24.3.4-windows.exe
安装androidSDK
进入安装目录,将android-25
、android-23
(react-native依赖)压缩包复制到platforms
文件夹下,右键解压
到当前文件夹
将platform-tools_r23.1.0-windows
压缩包复制到安装目录
,右键解压
到当前文件夹
将 tools 压缩包复制到安装目录
,右键解压
到当前文件夹
在安装目录新建一个build-tools
文件夹,而后将build-tools_r23.0.1-windows.zip(react-native依赖)
、 build-tools_r23.0.2-windows.zip(weex依赖)
和build-tools_r23.0.3-windows.zip
压缩包复制到build-tools
, 而后依次右键解压到当前文件夹,解压后
的文件夹须要修更名字
为对应的版本号23.0.1
、23.0.2
和23.0.3
在安装目录中,新建extras
文件夹,在extras
文件夹下新建android
文件夹 将android_m2repository_r40.zip
与support_r23.2.1.zip
压缩包复制到这个android
文件夹,右键解压到当前文件夹
配置安装环境变量:在系统环境变量中新建ANDROID_HOME
变量,值为SDK安装目录, 而后在Path中新增 ;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;