&引用;FBSDKPackage“;Android中的React原生Facebook SDK未定义
我正试图让一个快速反应的原生Android应用程序启动。它需要使用Facebook登录,因此我将遵循此指南进行登录 不幸的是,这看起来已经过时了,因为&引用;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
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')
}