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

Android 类必须声明为抽象类,或者在ReactPackage中实现名为createJSModules的抽象方法,android,react-native,react-native-native-module,Android,React Native,React Native Native Module,以下是android本机模块文档: 我的包当前看起来像这样 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.uimanage

以下是android本机模块文档:

我的包当前看起来像这样

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;
    }
}

我认为这个方法在React原生版本0.47中被删除了。您确定您的React本机版本已在npm中更新到最新版本吗?您可以从项目目录运行react native-v来检查您的版本。上述任何版本都不需要实现该方法。如果不想更改版本,请尝试使用return Collections.emptyList;实现该方法

我认为这个方法在React原生版本0.47中被删除了。您确定您的React本机版本已在npm中更新到最新版本吗?您可以从项目目录运行react native-v来检查您的版本。上述任何版本都不需要实现该方法。如果不想更改版本,请尝试使用return Collections.emptyList;实现该方法

Thread install在我的案例中起到了帮助作用,因为gradle正在查找react本机库aar文件,而由于该文件不存在,正在退回到旧版本0.20.1-您可以在附加的图像中看到它

在我的案例中,Thread安装帮助了我,因为gradle正在查找react本机库aar文件,由于它不存在,所以正在退回到旧版本0.20.1-您可以在附件中看到它

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

原因 由于版本中使用了+:

implementation 'com.facebook.react:react-native:+'
gradle将在其已知的存储库中搜索可用的最新react本机版本。也许是有意的,发布到默认maven存储库的最新版本是。该版本在中具有createJSModules方法,但已在中删除

这可能就是为什么使用+使maven central过时多年的原因,它间接地确保开发人员让NPM管理他们的react本机版本,而不是依赖maven central

修复 只需更新您的存储库列表,以包括您的节点\模块目录:

内建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
如果没有,请确保project.json文件中列出了react native,然后运行rm-rf node_modules&&warn安装该问题 Gradle在您提供的存储库中找不到react native的最新版本

原因 由于版本中使用了+:

implementation 'com.facebook.react:react-native:+'
gradle将在其已知的存储库中搜索可用的最新react本机版本。也许是有意的,发布到默认maven存储库的最新版本是。该版本在中具有createJSModules方法,但已在中删除

这可能就是为什么使用+使maven central过时多年的原因,它间接地确保开发人员让NPM管理他们的react本机版本,而不是依赖maven central

修复 只需更新您的存储库列表,以包括您的节点\模块目录:

内建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

如果没有,,然后确保project.json文件中列出了react-native,然后运行rm-rf node_modules&Thread安装

我必须将其包含在我的项目中这是一个模块,它没有使用maven'./node modules/react-native/android bitI必须将其包含在我的项目中这是一个模块,它没有使用maven'./node modules/react-native/android这绝对是问题所在。运行Thread安装或npm安装对我没有帮助,但出于某种原因,Gradle喜欢下载并使用React Native的古老版本。这绝对是个问题。运行Thread安装或npm安装对我没有帮助,但出于某种原因,Gradle喜欢下载并使用React Native的古老版本。