【问题标题】:Adding facebook SDK to react-native project将 facebook SDK 添加到 react-native 项目
【发布时间】:2016-10-09 17:03:44
【问题描述】:

我正在尝试使用此链接在我的 react-native 项目中添加 facebook sdk - https://developers.facebook.com/docs/react-native/getting-started-android

但是,rnpm 并没有按照链接中的说明自动添加 SDK。 所以,我使用这个链接手动添加了 react-native-fbsdk - https://github.com/facebook/react-native-fbsdk/issues/205

然后,我构建我的项目并生成发布和调试 apk。 但是,现在 android 应用程序在启动时崩溃了。 而且,没有办法找出发生这种情况的原因。

这是代码-

MainActivity.java

package com.netizen_hybrid;


import android.content.Intent;

import com.facebook.react.ReactActivity;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;

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

import java.util.Arrays;
import java.util.List;

public class MainActivity extends ReactActivity {
    CallbackManager mCallbackManager;
    /**
     * Returns the name of the main component registered from JavaScript.
     * This is used to schedule rendering of the component.
     */
    
    @Override
    protected String getMainComponentName() {
        return "Netizen_Hybrid";
    }

    /**
     * Returns whether dev mode should be enabled.
     * This enables e.g. the dev menu.
     */
    @Override
    protected boolean getUseDeveloperSupport() {
        return BuildConfig.DEBUG;
    }

    /**
     * A list of packages used by the app. If the app uses additional views
     * or modules besides the default ones, add more packages here.
     */
    @Override
    protected List<ReactPackage> getPackages() {
        mCallbackManager = new CallbackManager.Factory().create();
        ReactPackage packages[] = new ReactPackage[]{
           new MainReactPackage(),
           new FBSDKPackage(mCallbackManager),
        };
        return Arrays.<ReactPackage>asList(packages);
    }
    
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
       super.onActivityResult(requestCode, resultCode, data);
       mCallbackManager.onActivityResult(requestCode, resultCode, data);
    }
    
}

build.gradle -

dependencies {
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:appcompat-v7:23.0.1"
compile "com.facebook.react:react-native:+"  // From node_modules
compile 'com.facebook.android:facebook-android-sdk:4.+'
compile project(":react-native-fbsdk")

}

settings.gradle -

rootProject.name = 'Netizen_Hybrid'

include ':app'

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

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.netizen_hybrid"
    android:versionCode="1"
    android:versionName="1.0">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="22" />

    <application
      android:allowBackup="true"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:theme="@style/AppTheme"
      android:name="com.netizen_hybrid.MyApplication"
      >
      
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>
      <activity android:name="com.facebook.FacebookActivity"
          android:configChanges=
                 "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
          android:theme="@android:style/Theme.Translucent.NoTitleBar"
          android:label="@string/app_name" />
      <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
      <provider android:authorities="com.facebook.app.FacebookContentProvider142933766117579"
          android:name="com.facebook.FacebookContentProvider"
          android:exported="true" />
    </application>

</manifest>

MyApplication.java -

import android.app.Application;
import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // Initialize the SDK before executing any other operations,
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
    }
}

谁能告诉我哪里做错了? 提前致谢。

【问题讨论】:

    标签: react-native facebook-sdk-4.0 react-native-fbsdk


    【解决方案1】:

    配置对我来说是正确的。但我可能会忽略某事。您可以尝试为 HelloFacebook 示例应用程序https://github.com/facebook/react-native-fbsdk/tree/master/Sample 生成 apk 吗?这可能有助于检查缺少的内容。另外,你也可以把你在GH上的项目(只包含必要的代码)告诉我,我可以帮助调试。

    【讨论】:

      【解决方案2】:

      可能是因为您没有在MyApplication.java 中指定您的包吗?尝试以与MainActivity.java 相同的方式设置它。

      MyApplication.java:

      package com.netizen_hybrid;
      
      ... 
      

      我犯了同样的错误。在尝试启动应用程序之前,我通过运行 adb logcat 发现了问题。日志输出指向我的应用程序类。

      【讨论】:

      • 谢谢。我通过创建一个新项目让它运行起来。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-07
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多