首页 > 解决方案 > React Native fb-sdk 找不到符号 CallbackManager

问题描述

React Native 和 fbsdk 版本:

"react": "16.6.3",
"react-native": "0.58.5",
"react-native-fbsdk": "^0.8.0"

我收到以下错误:

> Task :app:compileDebugJavaWithJavac FAILED
C:\Users\xxxx\Desktop\project\android\app\src\main\java\com\project\MainApplication.java:22: error: cannot find symbol
  private static CallBackManager mCallbackManager = CallbackManager.Factory.create();
                 ^
  symbol:   class CallBackManager
  location: class MainApplication
C:\Users\xxxx\Desktop\project\android\app\src\main\java\com\project\MainApplication.java:24: error: cannot find symbol
  protected static CallBackManager getCallbackManager() {
                   ^
  symbol:   class CallBackManager
  location: class MainApplication
2 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

这个问题似乎与这部分代码有关,但我不太清楚出了什么问题。我完全按照他们官方存储库中提供的说明进行操作。

public class MainApplication extends Application implements ReactApplication {

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

  protected static CallBackManager getCallbackManager() {
    return mCallbackManager;
  }

  // ...

  @Override
  protected List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
      new MainReactPackage(),
      new FBSDKPackage(mCallbackManager)
    );
  }

  // ...

}

我还手动将以下导入添加到MainActivity.java

import com.facebook.CallbackManager;
import com.facebook.FacebookSdk;
import com.facebook.reactnative.androidsdk.FBSDKPackage;

将这些行添加到app/build.gradle

implementation project(':react-native-fbsdk')
implementation 'com.facebook.android:facebook-android-sdk:4.34.0'

这些settings.gradle

include ':react-native-fbsdk'
project(':react-native-fbsdk').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fbsdk/android')

标签: react-nativereact-native-fbsdk

解决方案


如果有人碰巧遇到了同样的问题,这与 npm 没有将 fb-sdk 正确链接到项目有关。我尝试使用npm installand npm link,但没有成功,尽管 npm 没有抛出任何错误。但是,使用安装 sdkreact-native解决了该问题:

react-native install react-native-fbsdk
react-native link react-native-fbsdk

如果您在尝试链接时遇到MODULE_NOT_FOUND错误,请在项目根文件夹中打开命令行并运行:

cd android
gradlew clean

此外,虽然他们的官方GitHub 存储库确实包含有关安装过程的说明,但我建议改为关注facebook 开发人员页面,因为它在可读性和细节方面要好得多。


推荐阅读