在Android工作室使用facebook sdk

Uma*_*Uma 104 android facebook facebook-android-sdk android-studio android-gradle-plugin

我正在使用Android Studio关注Facebook SDK for Android.当我运行我的应用程序时,我收到了下面提到的警告.

Gradle: module 'facebook' won't be compiled. Unfortunately you can't have non-Gradle Java module and Android-Gradle module in one project.
Run Code Online (Sandbox Code Playgroud)

我该怎么解决这个问题?

我尝试了@Scott Barta的回答,并收到以下错误消息.

    A problem occurred configuring project ':App'.
> Failed to notify project evaluation listener.
   > A problem occurred configuring project ':libraries:facebook'.
      > Failed to notify project evaluation listener.
         > Could not resolve all dependencies for configuration ':libraries:facebook:_DebugCompile'.
            > Could not find any version that matches com.android.support:support-v4:+.
              Required by:
                  MyApplication2.libraries:facebook:unspecified
Run Code Online (Sandbox Code Playgroud)

Sco*_*rta 250

注意

对于Android Studio 0.5.5及更高版本以及更高版本的Facebook SDK,此过程比下面记录的更简单(这是为两者的早期版本编写的).如果您正在运行最新版本,那么您需要做的就是:

  1. https://developers.facebook.com/docs/android/下载Facebook SDK
  2. 解压缩存档
  3. 在Android Studio 0.5.5或更高版本中,从"文件"菜单中选择"导入模块".
  4. 在向导中,将要导入的模块的源路径设置为解压缩归档中的"facebook"目录.(注意:如果您选择整个父文件夹,它不仅会引入库本身,而且还会引入所有示例应用程序,每个应用程序作为一个单独的模块.这可能有效,但可能不是您想要的).
  5. 打开项目结构Ctrl + Shift + Alt + S,然后选择依赖项选项卡.单击+按钮并选择Module Dependency.在弹出的新窗口中选择:facebook.
  6. 你应该好好去.

旧版Android Studio和旧版Facebook SDK的说明

这适用于Android Studio 0.5.4及更早版本,并且在Facebook为分发提供Gradle构建文件之前对Facebook SDK的版本最有意义.我不知道他们在哪个版本的SDK中进行了更改.

Facebook在https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android-using-android-studio/3.0/页面上"将SDK导入Android Studio项目"下的说明是错误的对于基于Gradle的项目(即您的项目是使用Android Studio的New Project向导构建的和/或具有build.gradle应用程序模块的文件).请遵循以下说明:

  1. libraries在项目的主目录下创建一个文件夹.例如,如果您的项目是HelloWorldProject,则应创建一个HelloWorldProject/libraries文件夹.

  2. 现在将facebookSDK安装中的整个目录复制到libraries刚刚创建的文件夹中.

  3. 删除libs目录中的文件夹facebook.如果你喜欢,删除project.properties,build.xml,.classpath,和.project.文件也是如此.你不需要它们.

  4. 使用以下内容build.gradlefacebook目录中创建文件:

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.6.+'
        }
    }
    
    apply plugin: 'android-library'
    
    dependencies {
        compile 'com.android.support:support-v4:+'
    }
    
    android {
        compileSdkVersion 17
        buildToolsVersion "19.0.0"
    
        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 16
        }
    
        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                java.srcDirs = ['src']
                resources.srcDirs = ['src']
                res.srcDirs = ['res']
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,根据您在执行此操作时所遵循的这些说明,您可能需要调整该classpath 'com.android.tools.build:gradle:0.6.+'行以引用较新版本的Gradle插件.很快我们将需要0.7或更高版本.试试看,如果你得到一个错误,那就是需要更新版本的Gradle插件,那就是你必须编辑的那一行.

  5. 确保已安装SDK管理器中的Android支持库.

  6. settings.gradle在应用程序的主目录中编辑您的文件并添加以下行:

    include ':libraries:facebook'
    
    Run Code Online (Sandbox Code Playgroud)
  7. 如果您的项目已在Android Studio中打开,请单击工具栏中的"使用Gradle文件同步项目"按钮.一旦完成,facebook模块应该出现. 在此输入图像描述

  8. 打开"项目结构"对话框.从左侧列表中选择Modules,单击应用程序的模块,单击Dependencies选项卡,然后单击+按钮以添加新的依赖项. 在此输入图像描述
  9. 选择"模块依赖".它将打开一个对话框,其中包含可供选择的模块列表; 选择":libraries:facebook". 在此输入图像描述
  10. 在所有对话框上单击"确定".Android Studio将自动重新同步您的项目(无需再次点击"与Gradle文件同步项目"按钮)并获取新的依赖项.你应该好好去.

  • 很好!这个答案应该是官方Facebook SDK教程的一部分. (7认同)
  • 这对我有用,但是我必须将facebook库等级项目的路径改为绝对路径,即设置文件和我主应用程序的build.grade文件中的`":MyApp:libraries:facebook"` (2认同)
  • 他们为什么不能一次把这件事直截了当? (2认同)

SBe*_*413 108

Facebook确实已将SDK添加到Maven Central存储库中.要使用maven repo的实例配置项目,您需要做两件事:

  1. 在项目顶级build.gradle文件中,添加Maven Central存储库.我看起来像这样:

    repositories {
        jcenter()       // This is the default repo
        mavenCentral()  //  This is the Maven Central repo
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. app-level build.grade文件中,添加Facebook sdk依赖项:

    dependencies {
    
        compile 'com.facebook.android:facebook-android-sdk:4.5.0' // Adjust the version accordingly
        // All your other dependencies.
    }
    
    Run Code Online (Sandbox Code Playgroud)

您还可以调整特定的Facebook SDK版本.有关maven存储库中可用版本的列表,请单击此链接.


Rom*_*ain 17

Facebook在maven central上发布SDK:

只需添加:

repositories {
    jcenter()       // IntelliJ main repo.
}

dependencies {
    compile 'com.facebook.android:facebook-android-sdk:+'
}
Run Code Online (Sandbox Code Playgroud)

  • 这不对,您需要在存储库部分中使用mavenCentral(). (2认同)

小智 12

Scott Barta的解决方案对我有用,除了我必须将这些添加到我的主项目build.gradle文件的依赖项中:

compile files('libs/android-support-v4.jar')
compile project(':libraries:facebook')
Run Code Online (Sandbox Code Playgroud)

另外值得一提的是,您需要确保:

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 18
    }
Run Code Online (Sandbox Code Playgroud)

在build.gradle文件中都是一样的......一旦我这样做,它就像一个魅力.


Pep*_*ijn 6

使用git时,您可以轻松地合并最新的facebook-android-sdk.

  • 添加facebook-android-sdk作为子模块: git submodule add https://github.com/facebook/facebook-android-sdk.git
  • 将sdk添加为gradle项目:编辑settings.gradle并添加行: include ':facebook-android-sdk:facebook'
  • 将sdk添加为模块的依赖项:编辑build.gradle并在依赖项块中添加: compile project(':facebook-android-sdk:facebook')