React native:错误:升级后无法找到符号

时间:2018-03-28 19:27:05

标签: java android facebook reactjs react-native

您好,在导入我的反应原生项目世博会和升级反应之后,我遇到了以下问题。

  

C:\用户\用户\ gramic \机器人\应用\ SRC \主\的java \ COM \店\ MainApplication.java:5:   错误:找不到符号导入com.facebook.react.ReactApplication;                            ^符号:类ReactApplication位置:包com.facebook.react   C:\用户\用户\ gramic \机器人\程序\ SRC \主\ java中的\ com \店\ MainApplication.java:13:   错误:找不到符号导入com.facebook.react.ReactNativeHost;                            ^符号:类ReactNativeHost位置:包com.facebook.react   C:\用户\用户\ gramic \机器人\程序\ SRC \主\ java中的\ com \店\ MainApplication.java:21:   错误:找不到符号公共类MainApplication扩展   应用程序实现ReactApplication {                                                               ^符号:类ReactApplication   C:\用户\用户\ gramic \机器人\程序\ SRC \主\ java中的\ com \店\ MainApplication.java:23:   错误:无法找到符号私有最终的ReactNativeHost   mReactNativeHost = new ReactNativeHost(this){                   ^符号:类ReactNativeHost位置:类MainApplication   C:\用户\用户\ gramic \机器人\程序\ SRC \主\ java中的\ com \店\ MainApplication.java:40:   错误:无法找到符号public ReactNativeHost   getReactNativeHost(){            ^符号:类ReactNativeHost位置:类MainApplication   C:\用户\用户\ gramic \机器人\应用\ SRC \主\的java \ COM \店\ MainActivity.java:5:   错误:MainActivity不是抽象的,不会覆盖抽象   方法getPackages()在ReactActivity公共类MainActivity中   扩展ReactActivity {          ^ C:\ Users \ user \ gramic \ android \ app \ src \ main \ java \ com \ shop \ MainApplication.java:23:   错误:无法找到符号私有最终的ReactNativeHost   mReactNativeHost = new ReactNativeHost(this){                                                          ^符号:类ReactNativeHost位置:类MainApplication   C:\用户\用户\ gramic \机器人\程序\ SRC \主\ java中的\ com \店\ MainApplication.java:39:   error:方法不会覆盖或实现超类型的方法   @Override ^

    package com.shop;

import android.app.Application;

import com.facebook.react.ReactApplication;
import com.oblador.vectoricons.VectorIconsPackage;
import com.corbt.keepawake.KCKeepAwakePackage;
import com.oblador.vectoricons.VectorIconsPackage;
import com.github.yamill.orientation.OrientationPackage;
import com.BV.LinearGradient.LinearGradientPackage;
import com.brentvatne.react.ReactVideoPackage;

import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;

import java.util.Arrays;
import java.util.List;

public class MainApplication extends Application implements ReactApplication {

  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
    @Override
    public boolean getUseDeveloperSupport() {
      return BuildConfig.DEBUG;
    }

    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
            new VectorIconsPackage(),
            new VectorIconsPackage(),
            new KCKeepAwakePackage(),
            new VectorIconsPackage(),
            new OrientationPackage(),
            new LinearGradientPackage(),
            new ReactVideoPackage()

      );
    }
  };

  @Override
  public ReactNativeHost getReactNativeHost() {
    return mReactNativeHost;
  }

  @Override
  public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);
  }
}

6 个答案:

答案 0 :(得分:6)

首先:使用 yarn npm 安装所有依赖项;

第二:使用下面的代码链接iOS和Android本机代码上的本机依赖项;

react-native link

第三:由于您的RN版本与Android的build.gradle版本不同,因此可能会发生此错误。当您创建本机应用程序时,它可能会创建类似android的应用程序:

android/app/build.gradle

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

因此,检查您的node_modules文件夹,查找react-native文件夹,并查找带有数字的文件夹,该数字是react-native的版本。对我来说,它是 0.58.3 ,然后更新 android / app / build.gradle

implementation "com.facebook.react:react-native:0.58.3"

全部。

答案 1 :(得分:5)

将我的本机项目与Expo分离后,我也发生了

我在这里回答:

My answer

为了解决这个问题,我不得不:

    我更改了package.js中的
  1. “ react-native”:“ https://github.com/expo/react-native/archive/sdk-29.0.0.tar.gz”,

    至:

    “ react-native”:“ ^ 0.57.8”,

  2. 删除node_modules文件

  3. 运行npm install
  4. 从android项目中删除“ .gradle”文件夹并同步项目。

答案 2 :(得分:4)

尝试升级React Native时也遇到了这些错误。 我见过人们通过清除gradlew缓存(Android项目文件夹中的./gradlew clean)或删除整个.gradle文件夹(也在Android项目文件夹中)来解决这些问题。

但这对我不起作用。我的问题出在android/build.gradle文件中。我之前不得不为另一个包添加maven存储库,并且这样做了:

maven {
        // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
        url "$rootDir/../node_modules/react-native/android"

        // The following is NOT the right way
        url "https://maven.google.com"
    }

但在Android docs中说每个maven存储库都应该在自己的maven {}块中。

因此,对我有用的解决方案就是这样做:

maven {
        // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
        url "$rootDir/../node_modules/react-native/android"
    }

maven {
        url "https://maven.google.com"
    }

希望它会有所帮助,祝你的反应升级好运! ;)

答案 3 :(得分:1)

我遇到了类似的问题,我发现的所有建议都无济于事,因此我将其删除给存在相同问题的其他人。

对我来说,它原来是一个第三方软件包(pushwoosh-react-native-plugin),它在build.gradle文件中编译/实现了react-native的静态版本。

我设法通过

找到了它
  • 转到我的app / build.gradle
  • 评论了我对依赖项的所有编译/实现
  • 一个接一个地添加它们,直到出现相同的错误

如上所述: 原来是pushwoosh build.gradle文件,它定义了以下依赖项:

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

所以我继续进行,当场将其更改为“ +”

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

“ +”表示: 最新的可用版本,其中每个主要SEMVER组件都与提供的模式匹配

答案 4 :(得分:1)

在我重命名应用程序中的包后,我的问题出现了。我用它来重命名它们:

npm install react-native-rename -g
react-native-rename "MyApp" -b com.mycompany.myapp

我需要手动更新几行:

  • android/app/src/main/java/com/winryde/MainActivity.java
  • android/app/src/main/java/com/winryde/MainApplication.java
  • android/app/src/debug/java/com/winryde/ReactNativeFlipper.java

我刚刚搜索了 com.companyname 并更改为新名称。

答案 5 :(得分:0)

我遇到了同样的问题,我用下面的命令解决了

react-native run-android

我知道PackageList文件将在我们使用上述命令并至少运行一次android应用程序时创建,然后如果我们同步我们的项目,您可以看到错误将消失。 >