我正在尝试为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);
};
答案 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/