我正在尝试创建一个使用Facebook SDK的新Android应用程序,我正在使用最新版本的所有东西,所以我使用Android Studio 0.4.0和新的Gradle编译系统以及从下载的SDK的最新版本Facebook的.
我试图按照Facebook开发者页面中的说明操作:https: //developers.facebook.com/docs/getting-started/facebook-sdk-for-android-using-android-studio/3.0/但 没有运气,因为说明不适用于基于Gradle的Android Studio.
我也尝试按照Scott Barta在android工作室中使用facebook sdk的说明但没有运气,当"与Gradle文件同步项目"不起作用的第7步时,我收到此错误:
无法刷新Gradle项目.您正在使用旧的,不受支持的Gradle版本.请使用1.9或更高版本.请在项目的Gradle设置或项目的Gradle包装器中指向支持的Gradle版本(如果适用).
我试图修改build.gradle文件并更改类路径行:
classpath 'com.android.tools.build:gradle:0.6.+'
至:
classpath 'com.android.tools.build:gradle:0.7.+'
并且还将compileSdkVersion,buildToolsVersion,minSdkVersion和targetSdkVersion更改为我项目中的值,但不起作用.
谁能帮我?谢谢!
编辑:我今天更新到Android 0.4.2,但新版本没有运气.
我的gradle-wrapper.properties文件正在使用Gradle 1.9:
#Wed Apr 10 15:27:10 PDT 2013 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=http\://services.gradle.org/distributions/gradle-1.9-all.zip
这是我用来编译Facebook库的build.gradle文件:
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.7.+' } } apply plugin: 'android-library' dependencies { compile 'com.android.support:support-v4:+' } android { compileSdkVersion 19 buildToolsVersion "19.0.1" defaultConfig { minSdkVersion 7 targetSdkVersion 19 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] res.srcDirs = ['res'] } } }
这是我用于我的应用程序的完整build.gradle:
apply plugin: 'android' android { compileSdkVersion 19 buildToolsVersion "19.0.1" defaultConfig { minSdkVersion 7 targetSdkVersion 19 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } dependencies { compile 'com.android.support:appcompat-v7:+' compile project(':libraries:facebook') }
现在,当我点击带有Gradle文件的同步项目时,我收到以下错误:
Gradle 'Testing' project refresh failed: Project with path ':libraries:facebook' could not be found in project ':app'.
我试图改变路径使用:"libraries:facebook","app:libraries:facebook",":app:libraries:facebook"......但我总是遇到同样的错误.
编辑解决方案:
使用Android 0.4.2和最新版本的Facebook SDK非常简单,Facebook SDK包含一个有效的build.gradle文件,只需按照以下步骤操作:
创建一个名为"libs"的文件夹(重要的是,不要使用其他名称!!!如果使用"lib"可能无效),在项目的顶部(重要的是,不要在子文件夹中创建!).
将facebook文件夹从下载的SDK复制到刚刚创建的libs文件夹中.
将此行包含在settings.gradle的顶部:
包括':libs:facebook'
在build.gradle文件的底部,在依赖项组中包含此行:
编译项目(':libs:facebook')
只需单击"使用Gradle文件同步项目",重建项目即可使用!
编辑ANDROID STUDIO> 0.5.2:
好吧,从Android Studio版本0.5.2开始,当创建一个新项目时,会在项目中创建一个"libs"文件夹,所以我认为使用该文件夹更好,所以这些步骤如下:
将facebook文件夹从下载的SDK复制到libs文件夹:YourProjectName/yourProjectName/libs
将此行包含在settings.gradle的顶部:
包括':libs:facebook'
在build.gradle文件的底部,在依赖项组中包含此行:
编译项目(':yourProjectName:libs:facebook')
只需单击"使用Gradle文件同步项目",重建项目即可使用!
要添加到其他答案,请将该行添加
include ':libraries:facebook'
到settings.gradle中,您将收到新错误
Gradle 'Android' project refresh failed: Configuration with name 'default' not found.
但是,这就是我们所说的进步.
EDI:
好的,现在它正在工作,这正是我所做的. - 我从一开始就把FB SDK放在错误的路径上,我创建了一个与我的应用程序处于同一级别的库文件夹,你不应该,它不会工作. - 由于Android Studio 0.4.+文件夹名称应该是libs而不是库
在项目的根目录下创建文件夹libs(找到settings.gradle的地方)
从libs文件夹中的Facebook SDK复制Facebook文件夹
在您的主应用程序包含之前settings.gradle
添加include ':libs:Facebook'
在主应用程序的build.gradle中,在依赖项中添加此行
compile project(':libs:facebook')
确保Android Support V4也是您的依赖项之一,即:
compile 'com.android.support:support-v4:18.0.0'
这里还有我的Facebook库的build.gradle
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.7.1' } } apply plugin: 'android-library' dependencies { compile 'com.android.support:support-v4:+' } android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 15 targetSdkVersion 19 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] res.srcDirs = ['res'] } } }
现在同步gradle,一切都应该正常,我在Android Studio 0.4.2 + Facebook SDK 3.6.0