运用React Native从零开始开发一款移动运用是一件很惬意的作业,但关于一些现已上线的产品,彻底摒弃原有运用的前史堆积,全面转向React Native是不现实的。因此,运用React Native去编辑器手机版一致原生Android、iOS运用的技能栈,把它作为已有原生运用的扩展模块,是现在混合开发的最有用方法。
首要,在原生Android项目目录下实施以下指令创立一个package.json文件。
yarn init
然后,依据提示输入对应的装备信息。等候指令实施完毕之后,咱们会发现Android项目的根目录多了一个package.json文件。
接下来,运用如下指令增加Reaappearct和React Native工编辑器哪个好用作环境的支持脚本。
yarn add react react-native
实施完指令后,会发现Android项目的根目录编辑器135下多了一个node_modules文件夹,里边包含了React Native开发也作业所需的依托模块,原则上这个目录是appointment不能拷贝、移动和批改的。
接下来,运用文本编辑器翻开p公务员考试ackage.json文件,装备React Native的建议脚本,如下代码。
"scripts": {android下载软件app
"start": "yarn react-native start",
},
此时,package.jsandroid11on文件的完好内容如下所示。
{
"name": "AndroidDemo",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"applicationdependencies": {
"react": "^17.0.1",
"reaappearancect-na编辑器未包含main类型tive": "^0.63.4"
},
"scr编辑器软件ipts": {
"start": "yarn react-native工商银行 start"
}
}
然后,在Android项目的根目录下创立一个index.js文件,该文件是React Native的进口文件,代码如下。
import React from 'react';
import {AppRegistry, StyleSheet, Text, View} from 'rappointmenteact-native';
class HelloWorld extends React.Component {
render() {
return (
<View style={styles.container}>
<Text sty宫颈癌leapp装置下载={styles.hegooglellandroid studio模拟器o}>Hello, React Native</Text>
</View>
);
}编辑器135
}
const styles = StyleSheet.create({
co龚俊ntainer: {
flex: 1,
justifandroid是什么手机牌子yCo编辑器软件ntent: 'center',
},
hello: {
foandroid下载ntSize: 20,
textAlign: 'center',
margin: 10,
},
});
AppRegistry.registerComponent('MyReactNativeApp', () => HelloWorlandroid studio模拟器d);
接下来,咱们运用Android Studio翻开原生Android项目,并在app目录的build.gradle文件的dependencies代码块中增加React Native和JSC引擎依托,如下所示。
dependencies {
...
implementation "com.facebook.react:react-native:+"android下载
implementation "oandroid手机rg.webkit:android-jsc:+"
}
假定appreciate不指定依托的版别,那么默许运用的是package.json文件中React Native对应的版别。然后,在项目的build.gradle文件的allpAPProjects代码块中增加React Native和appearJSC引擎的路径appleid,如下所编辑器英文示。
allprojeandroid studio大局搜索cts {
repositories {
maven {
url "$rootDir/../node_modules/react-native/androidandroid studio导入项目"
}
maven {
url("$rootDir/../node_modules/jsc-android/dist")
}
...
}
...
}
然后,翻开AndroidManifest.xml清单文件,增加网络权限代码,如下所示。
<uses-permis编辑器小说sion android:n编辑器和编译器的区别ame="andro编辑器和编译器的区别id.permission.IAndroid+StudioNTERNET" />
假定需求访问开发者调试菜单,还需求在Andandroid studio模拟器roidManifest.xml清单文件中注册DevSettingsActivity界面,如下所示。
<activity android:naappearme="com.facebook.react.devsupport.DevSettingsActivity" />
接下来,新建一个Activity作为React Native的容器页面,并在AndroidActivity中创立一个ReactRooappeartView方针,然后在这个方针之中建议React Native运用代码,如下所示androidstudio用什么言语。
public class MyReactActivity extends Actiandroid的drawable类vity implements DefaultHardwareBackBtnHandler {
private ReactRootView mReactRootView;
private ReactInstanceManager mReactInstanceManager;
@Override
protandroidstudio官网ected void onCreate(@Nullable Bundlappstoree savedIandroid手机nstanceState) {
super.android studio导入项目onCreate(savedInstanceState);
SoLoader.init(this, false);
mReactRootView = ne公积金借款w ReactRootView(th编辑器软件is);
mReactInstanceMaandroid/yunosnager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setCurrentActivity(th编辑器135is)
.setBundleAssetName("Android+Studioindex.android.bundle")
.setJSMainM工商银行odulePath("index")
.addPackage(new MainReactPackandroid手机age())
.setUseDeveloperSupport(Build编辑器小说Config.DEBUG)
.setIn公积金借款itialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactAandroid studio打包apkpplication(mReactInstanc编辑器英文eManager, "MyReactNativeApp", null);
setContentView(mReactRootView);
}
@Override
public boolean onKeyUp(int k编辑器哪个好用eyCode, KeyEventandroid studio大局搜索 event) {
if (keyCode == KAPPeyEvent.KEYCODE_MENU && mReactInstanceAndroid+StudioManager != null) {
mReactInstanceManager.shoandroid11wDevOptionsDialog();
return true;appleid
}
retuappstorern编辑器小说 super.onKeyUp(keyCode, event);
}
}
可以运用Android Studio的【Alt + Enter】快捷键主动导入缺失的语句,而且BuildConappleidfig是编译时主动生成的,无需额定引入。
由于React Native运用调试还需求悬浮窗权限,所以在需求在Android项目的代码中增加悬浮窗权限逻辑,如下所示。
private final int OVERLAY_PERMISSION_REQ_CODE =公积金借款 1;
private void requestPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOvandroid studio快捷键erlays(this)androidstudio官网) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intenandroidstudio用什么言语t data) {
if (requestCode == OVERLAY_PERMISSION_android studio教程REQ_CODE) {
ifandroid/yunos (Build.VERSIONandroid studio模拟器.SDK_INT >= Build.VERSION_CODES.M) {
if (!Sandroid什么意思ettings.canDrawOverlays(this)) {
// SYSTEM_ALERT_WINDOW permission not granted
}
}
}
mReactInstanceManager.onActivityResult( this, requestCode, resultCode, da作业细胞ta );
}
接下来,android studio打包apk咱们在AndroidManifest.xmandroid studio导入项目l清单文件中注册MyRappleeactActivity,此处咱们直接运用MyReactActivity替换MainA编辑器软件ctivity作为运用的主页面,如下所示。
<android studio打包apkactivity
android:name=".编辑器下载MyReactAPPActivity"
android:theme="@style/Thappleideme.App编辑器小说Compat.Li枸杞ght.Nandroidstudio装置教程oActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
&lapproacht;category android:name="编辑器下载android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
完毕上述操作后,咱们在src/main目录下创立一个assets资源文件夹,然后实施如下打包指令。
reandroidstudio装置教程act-native bundle --platform a编辑器小说ndroid --entry-filandroid studio打包apke index.js --bundle-output app/src/main/assets/index.android.bundle --dev false
接着,实施yarn start指令建议androidstudio用什么言语React Na编辑器英文tive服务,从头作业原生Android项目即可看到如下图所示。