国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android原生嵌入React Native詳解

2019-12-12 05:10:48
字體:
來源:轉載
供稿:網友

1.首先集成的項目目錄

我使用的是直接按照react-native init Project 的格式來導入的,也就是說,我的Android項目目錄是跟node_modules是在一個目錄下的。

我們init完項目之后,項目初始化完成了,這時候我們可以用命令react-native run-android直接運行項目,至于怎么調試,之前已經說過。

說一下我們怎么開發和運行分開吧,我們開發一般會選擇webstrom,開發后我們會Android和ios的編譯分開。



啟動npm

下面說一下android 嵌入RN環境吧。

編寫Android原生代碼,用來調用RN

package com.reactdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.KeyEvent;import com.facebook.react.LifecycleState;import com.facebook.react.ReactInstanceManager;import com.facebook.react.ReactRootView;import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;import com.facebook.react.shell.MainReactPackage;public class MainActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler { private ReactInstanceManager mReactInstanceManager; private ReactRootView mReactRootView; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  mReactRootView = new ReactRootView(this);  mReactInstanceManager = ReactInstanceManager.builder()    .setApplication(getApplication())    .setBundleAssetName("index.android.bundle")    .setJSMainModuleName("index.android")    .addPackage(new MainReactPackage())    .setUseDeveloperSupport(BuildConfig.DEBUG)    .setInitialLifecycleState(LifecycleState.RESUMED)    .build();  mReactRootView.startReactApplication(mReactInstanceManager, "ReactDemo", null);  setContentView(mReactRootView); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) {  if (keyCode == KeyEvent.KEYCODE_MENU && mReactInstanceManager != null) {   mReactInstanceManager.showDevOptionsDialog();   return true;  }  return super.onKeyUp(keyCode, event); } @Override public void onBackPressed() {  if (mReactInstanceManager != null) {   mReactInstanceManager.onBackPressed();  } else {   super.onBackPressed();  } } @Override public void invokeDefaultOnBackPressed() {  super.onBackPressed(); } @Override protected void onPause() {  super.onPause();  if (mReactInstanceManager != null) {   mReactInstanceManager.onHostPause();  } } @Override protected void onResume() {  super.onResume();  if (mReactInstanceManager != null) {   mReactInstanceManager.onHostResume(this, this);  } }}

注意要加上網絡等一些權限。

創建package.json,添加react native包

使用命令npm init,跟著步驟走就好了,給大家截個圖:


最后你就可以在你的RN項目里面看到一個package.json。


運行Demo

注:可能會出現java.lang.RuntimeException: Could not get BatchedBridge, make sure your bundle is packaged correctly這個錯誤,react-native bundle ―platform android ―dev false ―entry-file index.android.js ―bundle-output ReactDemo/app/src/main/assets/index.android.bundle ―sourcemap-outpu ReactDemo/app/src/main/assets/index.android.map ―assets-dest ReactDemo/app/src/main/res/

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 珠海市| 长子县| 贵南县| 杂多县| 呼玛县| 永胜县| 乡宁县| 岗巴县| 临桂县| 娱乐| 江津市| 莱州市| 湖南省| 泰兴市| 荣昌县| 瑞安市| 阳春市| 柘城县| 咸宁市| 修水县| 额尔古纳市| 缙云县| 宝鸡市| 临朐县| 尼勒克县| 陆河县| 太保市| 佛冈县| 织金县| 博乐市| 勃利县| 望谟县| 巴中市| 本溪市| 涞源县| 革吉县| 板桥市| 石林| 海原县| 梅河口市| 嘉定区|