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)題就可以解決了。