【问题标题】:Cannot resolve symbol ReactApplication/ReactNativeHost无法解析符号 ReactApplication/ReactNativeHost
【发布时间】:2018-08-13 16:45:23
【问题描述】:

我有一个 react native 在 iOS 上完美运行,但由于 MainApplication 和 MainActivity 中的导入问题而无法在 Android Studio 中编译。我遵循了 React Native FBSDK 指南。

在 MainApplication 中,我在导入语句中得到“无法解析符号”:

导入 com.facebook.react.ReactApplication; 导入 com.facebook.react.ReactNativeHost;

还有以下错误:

Error:(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";
    }
}

【问题讨论】:

    标签: android react-native react-native-fbsdk


    【解决方案1】:

    从 Expo 分离我的 react-native 项目后,我也遇到了这种情况。

    在 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. 改成:

      "react-native": "^0.57.8",

    2. 删除node_modules文件

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

    这就是为我解决问题的方法。 希望我能帮上忙。

    【讨论】:

      【解决方案2】:

      我通过将 react-native、react-native-cli、gradle 插件升级到最新版本解决了这个问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-11
        • 1970-01-01
        • 1970-01-01
        • 2021-02-04
        • 2016-12-31
        • 1970-01-01
        相关资源
        最近更新 更多