Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;FBSDKPackage“;Android中的React原生Facebook SDK未定义_Android_React Native - Fatal编程技术网

&引用;FBSDKPackage“;Android中的React原生Facebook SDK未定义

&引用;FBSDKPackage“;Android中的React原生Facebook SDK未定义,android,react-native,Android,React Native,我正试图让一个快速反应的原生Android应用程序启动。它需要使用Facebook登录,因此我将遵循此指南进行登录 不幸的是,这看起来已经过时了,因为ReactActivity.java没有公开getPackages方法。此外,还缺少FBSDKPackage。我使用的是React原生版本0.29 package com.myapplication 导入android.content.Intent 导入com.facebook.CallbackManager; 导入com.facebook.re

我正试图让一个快速反应的原生Android应用程序启动。它需要使用Facebook登录,因此我将遵循此指南进行登录

不幸的是,这看起来已经过时了,因为
ReactActivity.java
没有公开
getPackages
方法。此外,还缺少
FBSDKPackage
。我使用的是React原生版本0.29

package com.myapplication

导入android.content.Intent

导入com.facebook.CallbackManager; 导入com.facebook.react.ReactActivity; 导入com.facebook.react.ReactPackage; 导入com.facebook.react.shell.MainReactPackage

导入java.util.array; 导入java.util.List

公共类MainActivity扩展了ReactActivity{ CallbackManager-mCallbackManager

compile "com.facebook.android:facebook-android-sdk:[4,5)"
/**
*返回从JavaScript注册的主组件的名称。
*这用于计划组件的渲染。
*/
@凌驾
受保护的字符串getMainComponentName(){
返回“MyApplication”;
}
@凌驾
受保护的列表getPackages(){
mCallbackManager=newcallbackmanager.Factory().create();
ReactPackages[]=新的ReactPackage[]{
新建MainReactPackage(),

新的FBSDKPackage(mCallbackManager),//我和你一样面临同样的问题。我在没有FBSDKPackage的情况下成功编译了项目,但我找不到任何解决方案

对于其他部分,如果
rnpm
不起作用(在我的情况下,它不起作用),您首先需要更新build.gradle(模块:app)文件中的依赖项并添加

public class MainApplication extends Application implements ReactApplication { 

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

  protected static CallbackManager getCallbackManager() {
    return mCallbackManager;
  }

  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
    @Override
    protected boolean getUseDeveloperSupport() {
      return BuildConfig.DEBUG;
    }

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

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

  @Override
  public void onCreate() {
      super.onCreate();
      // Initialize the SDK before executing any other operations,
      FacebookSdk.sdkInitialize(getApplicationContext());
      AppEventsLogger.activateApp(this);
  }
}
同步过程完成后,更新MainApplication.java(不是MainActivity),使其具有这些方法

MainApplication.java

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
   MainApplication.getCallbackManager().onActivityResult(requestCode, resultCode, data);
}
import com.facebook.reactnative.androidsdk.FBSDKPackage;

也发现了FBSDKPackage丢失的问题,并通过将此行添加到MainApplication.java的导入部分解决了该问题:

dependencies {
     ...
     implementation project(':react-native-fbsdk')
}
从github上的文档中找到:


由于某些原因,react-native fbsdk(react-native 0.47.1)不会创建模块
编译项目(“:react-native fbsdk”)
所以我不得不克隆这个项目,自己用Android Studio导入它。当然,还要添加
导入com.facebook.reactnative.androidsdk.FBSDKPackage;
在我的情况下,我需要在app/build.gradle中手动编辑,添加
react native fbsdk
作为依赖项


然后再次运行android。

你是否也删除了fbsdkpackage的导入?你解决了吗?请回答我没有。转到另一个项目。这个答案是正确的,我将上面的git模块添加到我的项目中,然后编译它以获得fbsdkpackage。谢谢兄弟。
dependencies {
     ...
     implementation project(':react-native-fbsdk')
}