Android Studio无法识别Facebook导入

9

我是一名初学者,正在尝试创建一个带有Facebook集成的应用程序。

我已经完成了所有步骤(在模块结构中导入Facebook SDK,在gradle文件中添加缺失的依赖项,再次在我的应用程序项目的结构中添加依赖模块)。

一切似乎都很顺利,我在main_activity.xml中添加了一个简单的LoginButton,并没有出现错误。

但是当我尝试在MainActivity.java中进行所有必需的Facebook导入时,它们都变成了红色。这些导入包括:

    import com.facebook.Session;
    import com.facebook.SessionState;
    import com.facebook.UiLifecycleHelper;
    import com.facebook.widget.LoginButton;
    import com.facebook.widget.LoginButton.UserInfoChangedCallback;

有时会出现"symbol session cannot be resolved"等消息。我已经尽可能地在谷歌上搜索了,但找不到适合我的解决方案。 相反,这个看起来没有问题:

    import com.facebook.login.widget.LoginButton;

这是我的Android Manifest文件XML:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.user.moviere" >

    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name="com.facebook.LoginActivity"
            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"/>

        <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" />
    </application>

</manifest>

这是我的build.gradle文件

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion '21.1.2'

    defaultConfig {
        applicationId "com.user.moviere"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
repositories {
    mavenCentral()
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    // compile project(':facebook')
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.facebook.android:facebook-android-sdk:4.0.0'
    compile 'com.android.support:support-v4:22.0.0'
   }

尝试在命令行上(AS之外)使用“--info”开关进行构建... ./gradlew clean assemble_______,并查看有关FB导入的结果。或者尝试不同版本的FB SDK依赖项。 - Robert Rowntree
在命令行上构建: :app:processDebugResources 失败 :app:processDebugResources (Thread[main,5,main]) 完成。用时 1.79 秒。失败:构建失败并出现异常。
  • 出了什么问题: 执行任务 ':app:processDebugResources' 失败。
    错误:有多个包名为 'com.facebook' 的库 您可以通过 android.enforceUniquePackageName=false 暂时禁用此错误 然而,这是暂时的,并将在 1.0 中强制执行
构建失败 总时间:38.199 秒
- linous
好的,搜索所有的jar包,./lib,./libraries.... 找到FB依赖项的重复项。查看项目中的文件系统。你不知怎么把FB复制了一遍。 - Robert Rowntree
我就是想不通该如何找到重复项...我能提供更多信息来帮助我吗?对于这些愚蠢的问题,我很抱歉,因为这对我来说太新了。 - linous
3个回答

8

好的,我从头开始创建了这个项目,并重新导入了FB SDK。但是导入方面遇到的真正问题是,Facebook SDK 4已更改了一些功能,例如其中一个是UiLifecycleHelper,它不再存在。

有关所有更改的完整详细信息在此处:

https://developers.facebook.com/docs/android/upgrading-4.x


1
但是他们仍然在官方文档中使用这些类(Session,SessionState),这就是为什么我花了2个小时才发现这个问题,直到我偶然发现了这个问题。 - Aman Grover

2

更新Facebook依赖库

compile 'com.facebook.android:facebook-android-sdk:4.8.0'

需要在清单文件中添加权限

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

    <meta-data
        android:name="com.facebook.sdk.ApplicationName"
        android:value="@string/app_name" />
    <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id" />

    <provider
        android:name="com.facebook.FacebookContentProvider"
        android:authorities="com.facebook.app.FacebookContentProvider1854328631556764"
        android:exported="true" />

它正在运行

更多细节:

https://developers.facebook.com/docs/android/upgrading-4.x


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接