Использование 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).