本文需要了解基本Android开发知识
环境
- JDK
- Node
- Watchman 可选
Windows问题比较多,不推荐安装
- Android SDK
配置环境
配置
- 项目结构,创建相应文件
├── android
├── index.js
├── node_modules
├── package.json
- 编辑
package.json
文件添加:
1 | { |
也可以使用命令创建官方的HelloWorld项目,然后拷贝相关配置文件,如下:
1
2 npm install -g create-react-native-app
create-react-native-app AwesomeProject
- 安装nodejs库,在根目录中执行命令:
1 | npm install |
- 编辑
index.js
文件添加:
1 | import React, { Component } from 'react'; |
- 在
android目录
中创建app工程项目,然后在项目中集成React Native
[可选] 在
settings.gradle
文件中添加:1
rootProject.name = '[项目名]'
在
gradle.properties
文件中添加:1
android.useDeprecatedNdk=true
在根目录
build.gradle
文件中添加:1
2
3
4
5
6
7allprojects {
repositories {
maven {
url "$rootDir/../node_modules/react-native/android"
}
}
}在app目录
build.gradle
文件中添加:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19apply from: "../../node_modules/react-native/react.gradle"
android {
defaultConfig {
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
splits {
abi {
reset()
enable false
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86"
}
}
}
dependencies {
compile "com.facebook.react:react-native:+"
}在app项目中创建
MApplication.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25public class MApplication extends Application implements ReactApplication{
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this){
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(new MainReactPackage());
}
protected String getJSMainModuleName() {
return "index";
}
};
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
}在app项目中创建
MainActivity.java
1
2
3
4
5
6
7
8public class MainActivity extends ReactActivity {
protected String getMainComponentName() {
return "ReactTest";//与index.js中registerComponent对应
}
}修改app项目中
AndroidManifest.xml
文件1
2
3
4
5
6
7
8
9
10
11<application
android:name=".MApplication">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
运行
- 通过命令行直接运行
开发服务
和app:
1 | react-native run-android |
如果使用Windows系统请使用方法1,方法2会在运行app时出现异常:
java.io.IOException: Could not delete path
- 通过命令运行
开发服务
,然后手动运行app
1 | npm start |
开发服务
正常启动后如下,使用中不能关闭(如果安装Watchman,开发服务
会在后台运行可以关闭当前窗口):
1 | \> [email protected] start x:\xxxx\React |
提示
- 默认在根目录中执行以上命令
- 出现手机或虚拟机无法连接电脑时可使用
adb reverse tcp:8081 tcp:8081
- debug模式默认使用8081端口,如果本地以被占用,通过
react-native start --port 9988
修改端口。 - 注意需要权限:
<uses-permission android:name="android.permission.INTERNET" />
- 参考: