android 端集成react native

react native 開(kāi)發(fā)環(huán)境搭建這里就不多講了,開(kāi)發(fā)環(huán)境搭建直接看這里
下面來(lái)看看android端搭建react-native開(kāi)發(fā)環(huán)境:

  • 在項(xiàng)目的根目錄中運(yùn)行,在應(yīng)用中添加react-native 環(huán)境代碼:
npm init  
npm install --save react react-native

npm init創(chuàng)建了一個(gè)空的node模塊(其實(shí)就是創(chuàng)建了一個(gè)package.json描述文件),
npm install則創(chuàng)建了node_modules目錄并把react和react-native下載到了其中。

  • 在你的app中 build.gradle(Module級(jí)別) 文件中添加 React Native 依賴:
dependencies {
     ...
     compile "com.facebook.react:react-native:+" // From node_modules.
 }
  • 在項(xiàng)目的 build.gradle (Project級(jí)別)文件中為 React Native 添加一個(gè) maven 依賴的入口,必須寫(xiě)在 "allprojects" 代碼塊中:
allprojects {
    repositories {
        ...
        maven {
            // All of React Native (JS, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
    }
    ...
}

確保依賴路徑的正確!以免在 Android Studio 運(yùn)行Gradle同步構(gòu)建時(shí)拋出 “Failed to resolve: com.facebook.react:react-native:0.x.x" 異常。

  • 在 AndroidManifest.xml 清單文件中聲明網(wǎng)絡(luò)權(quán)限以及調(diào)試用的DevSettingsActivity聲明:
<uses-permission android:name="android.permission.INTERNET" />
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />

其實(shí)到這里,開(kāi)發(fā)環(huán)境已經(jīng)完成了。

  • 接下來(lái)想要通過(guò)原生代碼調(diào)用 React Native ,我們需要?jiǎng)?chuàng)建一個(gè)Activity 對(duì)象并讓它繼承ReactActivity:
public class CollectionSearchRNActivity extends ReactActivity {
    public static final String MAIN_COMPONENTNAME = "collectionSearch"; //這是本Activity映射到RN中的別名

    @Override
    protected String getMainComponentName() { //必須重寫(xiě)該函數(shù)
        return MAIN_COMPONENTNAME;
    }
}

當(dāng)然必要的的在 AndroidManifest.xml 清單文件中作相關(guān)的聲明:

 <activity android:name=".CollectionSearchRNActivity" />

然后在你的react-native端,要注冊(cè)CollectionSearchRNActivity,用別名字符串注冊(cè):

import React, { Component } from 'react';
import {
  AppRegistry
} from 'react-native';
AppRegistry.registerComponent('collectionSearch', () => collectionSearch);//館藏檢索

AppRegistry.registerComponent()第一個(gè)參數(shù)的'collectionSearch',表示react-native 內(nèi)部的組件,這個(gè)名字隨便你自己編碼的時(shí)候取,沒(méi)有硬性要求,第二個(gè)參數(shù)是個(gè)函數(shù),ES6的寫(xiě)法,返回值collectionSearch表示上面之間在android本地創(chuàng)建的一個(gè)Activity 的別名collectionSearch,必須同步對(duì)應(yīng)。

  • ** 最后你就可以去創(chuàng)建一個(gè)名為collectionSearch的組件了,這里就不多說(shuō)了,創(chuàng)建完后,就可以運(yùn)行。**

額外福利,當(dāng)你運(yùn)行的程序是,如果環(huán)境都搭建好了,運(yùn)行時(shí)跑錯(cuò)說(shuō)啥服務(wù)沒(méi)跑起來(lái),讓你檢查這檢查那一大堆的,你可以控制臺(tái)在項(xiàng)目跟目錄下運(yùn)行 :react-native start,啟動(dòng)服務(wù)支持。要是還是斷開(kāi)連接,你可以嘗試控制臺(tái)下運(yùn)行:adb reverse tcp:8081 tcp:8081,然后問(wèn)題就可以解決了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容