如何在Expo / React-Native应用中添加自定义节点模块?

时间:2019-06-10 11:33:51

标签: react-native react-native-android expo

我正在尝试为react-native中的android设备创建一个自定义插件,该插件可以从应用程序界面本身调用用户,而不是使用本机android应用程序,并通过在expo app中进行链接在expo app中实现该插件。 但是,当我在JS代码中导入模块并使用它时,该模块将为空。

这是我的build.gradle文件

buildscript {
    repositories {
        jcenter()
        google()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
    }
}

apply plugin: 'com.android.library'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.1"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    }
    lintOptions {
        abortOnError false
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.facebook.react:react-native:+'
}


这是我的package.json文件

{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "eject": "expo eject"
  },
  "dependencies": {
    "expo": "^33.0.0",
    "react": "16.8.3",
    "react-dom": "^16.8.6",
    "react-native": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
    "react-native-react-native-call-app": "file:../react-native-call-app",
    "react-native-web": "^0.11.4"
  },
  "devDependencies": {
    "babel-preset-expo": "^5.1.1"
  },
  "private": true
}

//呼叫应用程序模块的插件代码 https://github.com/NikhilOO7/react-native-call-app-module

// js代码

import RNReactNativeCallApp from "react-native-react-native-call-app";
onPress = id => {
        console.log(id, RNReactNativeCallApp);
        RNReactNativeCallApp.callPerson(id);
    };

2 个答案:

答案 0 :(得分:0)

仅在弹出后才能添加自定义本机模块。 https://docs.expo.io/versions/latest/expokit/eject/

答案 1 :(得分:0)

如果您不想放任EXPO,但仍然想要添加自定义本机模块的方法,这是一种有趣的方法。

您必须弹出expo工具包,但选择在此处使用expo工具包,在app.json文件中进行一些更改,并在babel.config.js中添加module-resolver插件。

仅需这些更改,即可从同一代码库一起运行expo和弹出的expo应用程序。 在弹出版本中,您可以添加本机模块,而在未弹出版本中,您可以简单地模拟本地功能。

这是您可以遵循的完整博客,它还提供了入门工具包。 https://codersera.com/blog/running-expo-react-native-together/