Использование Facebook SDK в Android Studio 0.4.2
Я пытаюсь создать новое приложение для Android, использующее SDK для Facebook, я использую версии latests для всего, поэтому я использую 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/
без везения, потому что инструкции не предназначены для Android-студии Gradle.
Я также старался следовать инструкциям Скотта Барты в с помощью facebook sdk в студии Android, но не повезло, шаг 7, когда "Sync Project с Gradle Файлы" не работают, я получаю эту ошибку:
Не удалось обновить проект 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 на значения, которые у меня есть в моем проекте, но не работают.
Может ли кто-нибудь мне помочь? Спасибо!
EDIT: я обновил сегодня до 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
Это файл build.gradle, который я использую для компиляции библиотеки Facebook:
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')
}
Теперь, когда я нажимаю на Sync Project с Gradle Files, я получаю следующую ошибку:
Gradle 'Testing' project refresh failed:
Project with path ':libraries:facebook' could not be found in project ':app'.
Я попытался изменить путь, используя: "библиотеки: facebook", "app: libraries: facebook", ": app: libraries: facebook"... но у меня всегда такая же ошибка.
ИЗМЕНИТЬ РЕШЕНИЕ:
С Android 0.4.2 и последней версией SDK для Facebook очень просто, SDK для Facebook включает файл build.gradle, который работает, просто выполните следующие действия:
-
Создайте папку с именем "libs" (важно, не используйте другое имя!!! Если вы используете "lib", возможно, не работает), на top вашего проекта (тоже важно, не создавайте в подпапке!!!).
-
Скопируйте папку facebook из загруженного SDK в только что созданную папку libs.
-
Включите эту строку вверху ваших настроек .gradle:
include ': libs: facebook'
-
Включите эту строку в нижней части файла build.gradle в группе зависимостей:
компилировать проект (': libs: facebook')
Просто нажмите "Синхронизировать проект с Gradle файлами", перестройте проект и он должен работать!
РЕДАКТИРОВАНИЕ АНДРОИДНОЙ СТУДИИ > 0.5.2:
Ну, из Android Studio версии 0.5.2, когда создается новый проект, в вашем проекте создается папка "libs", поэтому я думаю, что лучше использовать эту папку, поэтому это следующие шаги:
-
Скопируйте папку facebook из загруженного SDK в папку libs: YourProjectName/yourProjectName/libs
-
Включите эту строку вверху ваших настроек .gradle:
include ': libs: facebook'
-
Включите эту строку в нижней части файла build.gradle в группе зависимостей:
скомпилировать проект (': yourProjectName: libs: facebook')
Просто нажмите "Синхронизировать проект с Gradle файлами", перестройте проект и он должен работать!
Ответы
Ответ 1
Чтобы добавить к другому ответу, добавьте строку
include ':libraries:facebook'
к вашим настройкам .gradle, и вы получите новую ошибку
Gradle 'Android' project refresh failed: Configuration with name 'default' not found.
Но это то, что мы называем прогрессом.
EDI:
Хорошо, теперь он работает, вот что я сделал.
- С самого начала я поместил FB SDK на неправильном пути, я создавал папку с библиотеками на том же уровне, что и мое приложение, но не должен, это не сработает.
- Начиная с Android Studio 0.4. + Имя папки должно быть libs, а не библиотеки
Создайте папку libs в корне вашего проекта (там же, где вы найдете параметры .gradle)
Скопируйте папку Facebook из SDK Facebook в папку libs
В settings.gradle
добавить include ':libs:Facebook'
перед включением основного приложения
В вашем build.gradle вашего основного приложения добавьте эту строку в свои зависимости
compile project(':libs:facebook')
Убедитесь, что Android Support V4 также является одной из ваших зависимостей, i.e:
compile 'com.android.support:support-v4:18.0.0'
Также здесь находится build.gradle моих Facebook libs
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
Ответ 2
Используйте v0.7. + плагина Gradle, как вы уже сделали, и вы хотите убедиться, что используете v1.9 из Gradle (а не 1.10, что несовместимо). Если в вашем проекте используется оболочка Gradle (это то, что я рекомендую), вы можете проверить версию Gradle, встроенную в параметр distributionUrl
в gradle/wrapper/gradle -wrapper.properties.
Если вы перейдете на Android Studio 0.4.2, он должен проверить версии при открытии проекта и рассказать вам, как исправить проблемы, если они существуют.
ИЗМЕНИТЬ
Чтобы устранить проблему с помощью
Build script error, unsupported Gradle DSL method found: 'include()'!
вам нужно исправить свои зависимости. Чтобы включить другой модуль в качестве зависимости, используйте это:
compile project(':libraries:facebook')
Если вы перейдете через диалоговое окно "Структура проекта" вместо редактирования файлов build.gradle вручную, он может сделать это правильно для вас (хотя он не будет исправлять неверный оператор, который использует include
).