Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

React native: error: cannot find symbol after upgrade

Hi after importing my react native project expo and upgrading react, I've been have the following problems.

C:\Users\user\gramic\android\app\src\main\java\com\shop\MainApplication.java:5: error: cannot find symbol import com.facebook.react.ReactApplication; ^ symbol: class ReactApplication location: package com.facebook.react C:\Users\user\gramic\android\app\src\main\java\com\shop\MainApplication.java:13: error: cannot find symbol import com.facebook.react.ReactNativeHost; ^ symbol: class ReactNativeHost location: package com.facebook.react C:\Users\user\gramic\android\app\src\main\java\com\shop\MainApplication.java:21: error: cannot find symbol public class MainApplication extends Application implements ReactApplication { ^ symbol: class ReactApplication C:\Users\user\gramic\android\app\src\main\java\com\shop\MainApplication.java:23: error: cannot find symbol private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { ^ symbol: class ReactNativeHost location: class MainApplication C:\Users\user\gramic\android\app\src\main\java\com\shop\MainApplication.java:40: error: cannot find symbol public ReactNativeHost getReactNativeHost() { ^ symbol: class ReactNativeHost location: class MainApplication C:\Users\user\gramic\android\app\src\main\java\com\shop\MainActivity.java:5: error: MainActivity is not abstract and does not override abstract method getPackages() in ReactActivity public class MainActivity extends ReactActivity { ^ C:\Users\user\gramic\android\app\src\main\java\com\shop\MainApplication.java:23: error: cannot find symbol private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { ^ symbol: class ReactNativeHost location: class MainApplication C:\Users\user\gramic\android\app\src\main\java\com\shop\MainApplication.java:39: error: method does not override or implement a method from a supertype @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);
  }
}
like image 585
Chris Henry Avatar asked Mar 28 '18 19:03

Chris Henry


Video Answer


2 Answers

First: install all dependencies using yarn or npm;

Second: use the code below to link native dependencies on iOS and Android native code;

react-native link

Third: this error can occur because you RN version is different from Android's build.gradle version. When you create a react-native app probably it create android app like:

android/app/build.gradle

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

So, inspect you node_modules folder, look for react-native folder and look for a folder with a number, that numbers are react-native version. For me it's 0.58.3 then update android/app/build.gradle:

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

It's All.

like image 179
Marcus Avatar answered Oct 11 '22 11:10

Marcus


I also had these errors when trying to upgrade React Native. I have seen people resolve those by cleaning gradlew cache (./gradlew clean in Android project folder) or deleting the whole .gradle folder (in Android project folder also).

But that did not work for me. My issue was in the android/build.gradle file. I previously had to add a maven repository for another package and had done it that way:

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

but it is said in the Android docs that every maven repository should be in its own maven {} block.

Thus the solution that worked for me was to do that:

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

Hope it will help, and good luck for your react upgrade! ;)

like image 28
Lorine Avatar answered Oct 11 '22 09:10

Lorine