android 端集成react native

react native 开发环境搭建这里就不多讲了,开发环境搭建直接看这里
下面来看看android端搭建react-native开发环境:

  • 在项目的根目录中运行,在应用中添加react-native 环境代码:
npm init  
npm install --save react react-native

npm init创建了一个空的node模块(其实就是创建了一个package.json描述文件),
npm install则创建了node_modules目录并把react和react-native下载到了其中。

  • 在你的app中 build.gradle(Module级别) 文件中添加 React Native 依赖:
dependencies {
     ...
     compile "com.facebook.react:react-native:+" // From node_modules.
 }
  • 在项目的 build.gradle (Project级别)文件中为 React Native 添加一个 maven 依赖的入口,必须写在 "allprojects" 代码块中:
allprojects {
    repositories {
        ...
        maven {
            // All of React Native (JS, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
    }
    ...
}

确保依赖路径的正确!以免在 Android Studio 运行Gradle同步构建时抛出 “Failed to resolve: com.facebook.react:react-native:0.x.x" 异常。

  • 在 AndroidManifest.xml 清单文件中声明网络权限以及调试用的DevSettingsActivity声明:
<uses-permission android:name="android.permission.INTERNET" />
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />

其实到这里,开发环境已经完成了。

  • 接下来想要通过原生代码调用 React Native ,我们需要创建一个Activity 对象并让它继承ReactActivity:
public class CollectionSearchRNActivity extends ReactActivity {
    public static final String MAIN_COMPONENTNAME = "collectionSearch"; //这是本Activity映射到RN中的别名

    @Override
    protected String getMainComponentName() { //必须重写该函数
        return MAIN_COMPONENTNAME;
    }
}

当然必要的的在 AndroidManifest.xml 清单文件中作相关的声明:

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

然后在你的react-native端,要注册CollectionSearchRNActivity,用别名字符串注册:

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

AppRegistry.registerComponent()第一个参数的'collectionSearch',表示react-native 内部的组件,这个名字随便你自己编码的时候取,没有硬性要求,第二个参数是个函数,ES6的写法,返回值collectionSearch表示上面之间在android本地创建的一个Activity 的别名collectionSearch,必须同步对应。

  • ** 最后你就可以去创建一个名为collectionSearch的组件了,这里就不多说了,创建完后,就可以运行。**

额外福利,当你运行的程序是,如果环境都搭建好了,运行时跑错说啥服务没跑起来,让你检查这检查那一大堆的,你可以控制台在项目跟目录下运行 :react-native start,启动服务支持。要是还是断开连接,你可以尝试控制台下运行:adb reverse tcp:8081 tcp:8081,然后问题就可以解决了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容