web-dev-qa-db-ja.com

シンボルReactApplication / ReactNativeHostを解決できません

IOSで完全に動作する反応ネイティブがありますが、Android studioでコンパイルできません。MainApplicationとMainActivityのインポートの問題が原因です。ReactネイティブFBSDKガイドラインに従いました。

MainApplicationで、インポートステートメントに「シンボルを解決できません」と表示されます。

import com.facebook.react.ReactApplication; import com.facebook.react.ReactNativeHost;

そして次のエラー:

エラー:(7、8)エラー:MainActivityは抽象ではなく、ReactActivityの抽象メソッドgetPackages()をオーバーライドしませんエラー:タスク ':app:compileDebugJavaWithJavac'の実行に失敗しました。

コンパイルに失敗しました。詳細については、コンパイラエラー出力を参照してください。

私のMainApplicationは次のようになります。

package com.ExampleApp;

import Android.app.Application;

import com.facebook.react.ReactApplication;
import com.tradle.react.UdpSocketsModule;
import com.peel.react.TcpSocketsModule;
import com.peel.react.rnos.RNOSModule;
import com.masteratul.exceptionhandler.ReactNativeExceptionHandlerPackage;
import com.oblador.vectoricons.VectorIconsPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.Shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import com.facebook.CallbackManager;
import com.facebook.FacebookSdk;
import com.facebook.reactnative.androidsdk.FBSDKPackage;
import com.facebook.appevents.AppEventsLogger;

import Java.util.Arrays;
import Java.util.List;

public class MainApplication extends Application implements ReactApplication {

  private static CallbackManager mCallbackManager = CallbackManager.Factory.create();

  protected static CallbackManager getCallbackManager() {
    return mCallbackManager;
  }

  @Override
  public void onCreate() {
    super.onCreate();
    // Use AppEventsLogger to log custom events.
    AppEventsLogger.activateApp(this);
  }

  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 UdpSocketsModule(),
            new TcpSocketsModule(),
            new RNOSModule(),
            new ReactNativeExceptionHandlerPackage(),
            new VectorIconsPackage(),
            new FBSDKPackage(mCallbackManager)

      );
    }
  };

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

}

そして私のMainActivity:

import Android.content.Intent;
import com.facebook.react.ReactActivity;


public class MainActivity extends ReactActivity {

    /**
     * Returns the name of the main component registered from JavaScript.
     * This is used to schedule rendering of the component.
     */

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        MainApplication.getCallbackManager().onActivityResult(requestCode, resultCode, data);
    }

    @Override
    protected String getMainComponentName() {
        return "ExampleApp";
    }
}
13
mscrrrr

反応ネイティブプロジェクトをExpoから切り離した後も、同じことが起こりました。

MainApplicationで、これらのインポートに対して「エラーはシンボルを解決できません」がありました。

import com.facebook.react.ReactApplication;
import com.facebook.react.ReactNativeHost;

私が使用したpackage.jsonファイルで:

"react-native": "https://github.com/expo/react-native/archive/sdk-29.0.0.tar.gz",

問題は、Androidがそのようなnode_modulesのディレクトリを見つけられないことでした。

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

  1. それを次のように変更します。

    "反応ネイティブ": "^ 0.57.8"、

  2. node_modulesファイルを削除する

  3. npm installを実行します
  4. Androidプロジェクトから.gradleフォルダーを削除し、プロジェクトを同期します。

それが私の問題を解決したものです。私が助けてくれたことを願っています。

6
mic123456

反応ネイティブのアップグレード:

react-native upgrade
0
Victor Burnett