1

我正在关注 android 的 Native Module 文档: https ://facebook.github.io/react-native/docs/native-modules-android.html#docsNav

我的包裹目前看起来像这样

package com.myCompany.asqgooglesignin;

import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ASQGoogleSignInPackage implements ReactPackage {

    @Override
    public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
        return Collections.emptyList();
    }

    @Override
    public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
        List<NativeModule> modules = new ArrayList<>();
        modules.add(new ASQGoogleSignIn(reactContext));
        return modules;
    }
}

我收到以下错误

类必须被声明为抽象或在 ReactPackage 中实现名为 createJSModules 的抽象方法

文档没有提到createJSModules我应该包含它以及这样做的正确方法是什么?

这是使用最新的依赖

implementation 'com.facebook.react:react-native:+'
4

3 回答 3

3

yarn install在我的情况下有所帮助,因为 gradle 正在寻找 react-native 库 aar 文件,并且由于它不存在,所以正在回退到旧版本(0.20.1 - 你可以在附图中看到它)

附加图片

于 2019-12-28T02:45:33.383 回答
1

我认为这个方法在 React Native 0.47 版本中被移除了。你确定你的 React Native 版本在 npm 中是最新的吗?您可以通过react-native -v从项目目录运行来检查您的版本。高于此的任何版本都不应要求实现该方法。如果您不想更改版本,请尝试简单地使用return Collections.emptyList();.

于 2018-04-20T13:56:13.153 回答
1

问题

Gradle 在您提供的存储库中找不到最新版本的 react-native。

原因

由于+用于版本:

implementation 'com.facebook.react:react-native:+'

gradle 将在其已知存储库中搜索可用的最新 react-native 版本。也许是故意的,发布到默认 maven 存储库的最新版本是0.20.1 in 2016。该版本在ReactPackage 接口createJSModules中有一个方法,但在0.47 版本中已删除。

这可能就是+使用 Maven Central 多年的原因,它间接确保开发人员让 NPM 管理他们的 react-native 版本,而不是依赖 Maven Central。

修复

只需更新您的存储库列表以包含您的node_modules目录:

在 build.gradle

repositories {
    mavenLocal()
    // This was missing an needs to be added to your list
    maven {
        // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
        url("$rootDir/../node_modules/react-native/android")
    }
    google()
    jcenter()
    maven { url 'https://www.jitpack.io' }
}

故障排除

如果仍然失败,请确认此目录存在:

<path-to-your-project>/node_modules/react-native/android/com/facebook/react/react-native

如果没有,请确保 react-native 列在您的 project.json 文件中,然后运行rm -rf node_modules && yarn install

于 2020-10-13T17:35:37.280 回答