web-dev-qa-db-ja.com

React native:error:アップグレード後にシンボルが見つかりません

こんにちは、react native project expoをインポートし、reactをアップグレードした後、次の問題が発生しました。

C:\ Users\user\gramic\Android\app\src\main\Java\com\shop\MainApplication.Java:5:エラー:シンボルインポートが見つかりませんcom.facebook.react.ReactApplication; ^シンボル:クラスReactApplicationの場所:パッケージcom.facebook.react C:\ Users\user\gramic\Android\app\src\main\Java\com\shop\MainApplication.Java:13:エラー:シンボルインポートcomが見つかりませんfacebook.react.ReactNativeHost; ^シンボル:クラスReactNativeHost場所:パッケージcom.facebook.react C:\ Users\user\gramic\Android\app\src\main\Java\com\shop\MainApplication.Java:21:エラー:シンボルpublic class MainApplicationが見つかりませんアプリケーションの拡張ReactApplication {^シンボル:クラスReactApplication C:\ Users\user\gramic\Android\app\src\main\Java\com\shop\MainApplication.Java:23:エラー:シンボルプライベート最終ReactNativeHost mReactNativeHost = newが見つかりませんReactNativeHost(this){^シンボル:クラスReactNativeHost場所:クラスMainApplication C:\ Users\user\gramic\Android\app\src\main\Java\com\shop\MainApplication.Java:40:エラー:シンボルが見つかりませんpublic ReactNativeHost getReactNativeHost(){^シンボル:クラスReactNativeHost場所:クラスMainApplication C:\ Users\user\gramic\Android\app\src\main\Java\com\shop\MainActivity.Java:5:エラー:MainActivityは抽象ではなく、 ReactActivityパブリッククラスMainActivityがReactActivityを拡張する抽象メソッドgetPackages()をオーバーライドしない{^ C:\ Users\user\gramic\Android\app\src\main\Java\com\shop\MainApplication.Java:23:エラー:シンボルプライベートが見つかりません最終的なReactNativeHost mReactNativeHost = new ReactNativeHost(this){^シンボル:クラスReactNativeHost場所:クラスMainApplication C:\Users\user\gramic\Android\app\src\main\Java\com\shop\MainApplication.Java:39:エラー:メソッドは、スーパータイプ@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);
  }
}
5
Chris Henry

最初:yarnまたはnpmを使用してすべての依存関係をインストールします。

2番目:iOSのネイティブ依存関係とAndroidネイティブコード;

react-native link

3番目:RNバージョンがAndroidのbuild.gradleバージョンと異なるため、このエラーが発生する可能性があります。反応ネイティブアプリを作成すると、おそらくAndroid app like:

Android/app/build.gradle

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

したがって、node_modulesフォルダーを調べて、react-nativeフォルダーを探し、番号が付いたフォルダーを探します。その番号は、react-nativeバージョンです。私にとっては、.58.更新Android/app/build.gradle

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

すべてです。

10
Marcus

Expoからリアクションネイティブなプロジェクトを切り離した後も、私は偶然になりました。

私がここで答えたように:

私の答え

私がしなければならなかった問題を解決するために:

  1. package.jsで変更しました:

    「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. '.gradle'フォルダをAndroidプロジェクトから削除し、プロジェクトを同期します。
6
mic123456

React Nativeをアップグレードしようとしたときにも、これらのエラーが発生しました。 gradlewキャッシュ(Androidプロジェクトフォルダー内の_./gradlew clean_)をクリーニングするか、Androidプロジェクトフォルダー内の_.gradle_フォルダー全体を削除することで、それらを解決する人々を見てきました。

しかし、それは私にはうまくいきませんでした。私の問題は_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"
    }
_

それがお役に立てば幸いです、そしてあなたのリアクションアップグレードに幸運を! ;)

4
Lorine

私は同様の問題があり、見つけたアドバイスはすべて役に立たなかったので、同じ問題を抱えている他の人にはこれをやめています。

私にとっては、build.gradleファイルにreact-nativeの静的バージョンをコンパイル/実装したサードパーティのパッケージ(pushwoosh-react-native-plugin)であることが判明しました。

なんとか見つけました

  • 私のアプリ/build.gradleに行く
  • 依存関係に関するすべてのコンパイル/実装をコメントアウトしました
  • 同じエラーが出るまでそれらを一つずつ追加しました

上記のように、次の依存関係が定義されたpushwoosh build.gradleファイルであることが判明しました。

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

そこで私は先に進み、その場で「+」に変更しました

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

「+」は以下を意味します主要なSEMVERコンポーネントのそれぞれが提供されたパターンと一致する最新の利用可能なバージョン

1
SimonEritsch