it-roy-ru.com

использование Facebook SDK в студии Android

Я подписан на Facebook SDK для Android использую Android Studio . Когда я запускаю свое приложение, я получаю следующее предупреждение.

Gradle: module 'facebook' won't be compiled. Unfortunately you can't have non-Gradle Java module and Android-Gradle module in one project.

Как мне решить это?

Я попытался ответить @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
103
Uma

НОТА

Для Android Studio 0.5.5 и более поздних версий, а также для более поздних версий SDK Facebook этот процесс намного проще, чем описанный ниже (который был написан для более ранних версий обоих). Если вы используете последнюю версию, все, что вам нужно сделать, это:

  1. Загрузите SDK Facebook из https://developers.facebook.com/docs/Android/
  2. Распакуйте архив
  3. В Android Studio 0.5.5 или более поздней версии выберите "Модуль импорта" в меню "Файл".
  4. В мастере задайте исходный путь модуля для импорта в виде каталога "facebook" внутри распакованного архива. (Примечание. Если вы выберете всю родительскую папку, в нее войдет не только сама библиотека, но и все примеры приложений, каждое в виде отдельного модуля. Это может работать, но, вероятно, не то, что вам нужно).
  5. Откройте структуру проекта с помощью Ctrl + Shift + Alt + S, а затем выберите вкладку зависимостей. Нажмите кнопку + и выберите Зависимость модуля. В появившемся окне выберите :facebook.
  6. Тебе должно быть хорошо идти.

Инструкции для старых Android Studio и старых Facebook SDK

Это относится к Android Studio 0.5.4 и более ранним версиям и имеет смысл для версий SDK Facebook, прежде чем Facebook предложит файлы сборки Gradle для распространения. Я не знаю, в какой версии SDK они сделали это изменение.

Инструкции Facebook в разделе "Импорт SDK в Android Studio Project" на их https://developers.facebook.com/docs/getting-started/facebook-sdk-for-Android-using -Android-studio/3.0 / страница не подходит для проектов на базе Gradle (т. Е. Ваш проект был создан с использованием Android мастера создания проектов Studio и/или содержит файл build.gradle для вашего модуля приложения). Вместо этого следуйте этим инструкциям:

  1. Создайте папку libraries под основным каталогом вашего проекта. Например, если ваш проект HelloWorldProject, вы должны создать папку HelloWorldProject/libraries.

  2. Теперь скопируйте весь каталог facebook из установки SDK в папку libraries, которую вы только что создали.

  3. Удалите папку libs в каталоге facebook. Если хотите, удалите project.properties, build.xml, .classpath и .project. файлы также. Вы не нуждаетесь в них.

  4. Создайте файл build.gradle в каталоге facebook со следующим содержимым:

    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']
            }
        }
    }
    

    Обратите внимание, что в зависимости от того, когда вы следуете этим инструкциям по сравнению с тем, когда это написано, вам может понадобиться настроить строку classpath 'com.Android.tools.build:gradle:0.6.+', чтобы она ссылалась на более новую версию плагина Gradle. Скоро нам потребуется версия 0.7 или новее. Попробуйте, и если вы получите сообщение об ошибке, что требуется более новая версия плагина Gradle, это строка, которую вы должны отредактировать.

  5. Убедитесь, что Библиотека поддержки Android в вашем SDK установлен менеджер.

  6. Отредактируйте файл settings.gradle в главном каталоге вашего приложения и добавьте следующую строку:

    include ':libraries:facebook'
    
  7. Если ваш проект уже открыт в Android Studio, нажмите кнопку "Синхронизировать проект с файлами Gradle" на панели инструментов. После этого должен появиться модуль facebookenter image description here

  8. Откройте диалоговое окно "Структура проекта". Выберите "Модули" из списка слева, щелкните модуль вашего приложения, перейдите на вкладку "Зависимости" и нажмите кнопку "+", чтобы добавить новую зависимость. enter image description here
  9. Выберите "Зависимость модуля". Откроется диалоговое окно со списком модулей на выбор; выберите ": библиотеки: Facebook". enter image description here
  10. Нажмите OK во всех диалоговых окнах. Android Studio автоматически ресинхронизирует ваш проект (без необходимости снова нажимать эту кнопку "Синхронизировать проект с файлами Gradle") и выбирает новую зависимость. Тебе должно быть хорошо идти.
250
Scott Barta

Facebook действительно добавил SDK в репозитории Maven Central. Чтобы настроить свой проект с использованием экземпляра репозитория Maven, вам нужно сделать 2 вещи:

  1. В своем проекте файл build.gradle верхнего уровня добавьте репозитории Maven Central. Моя выглядит так:

    repositories {
        jcenter()       // This is the default repo
        mavenCentral()  //  This is the Maven Central repo
    }
    
  2. В файле на уровне приложения build.grade добавьте зависимость Facebook sdk:

    dependencies {
    
        compile 'com.facebook.Android:facebook-Android-sdk:4.5.0' // Adjust the version accordingly
        // All your other dependencies.
    }
    

Вы также можете настроить конкретную версию Facebook SDK. Список доступных версий в репозитории maven нажмите на эту ссылку.

107
SBerg413

Facebook публикует SDK на Maven Central:

Просто добавь :

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

dependencies {
    compile 'com.facebook.Android:facebook-Android-sdk:+'
}
17
Romain

Решение Скотта Барты сработало для меня, за исключением того, что мне пришлось добавить их в зависимости от моего основного файла build.gradle проекта:

compile files('libs/Android-support-v4.jar')
compile project(':libraries:facebook')

Также стоит отметить, что вы должны убедиться:

Android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 18
    }

Они одинаковы в обоих файлах build.gradle ... После того, как я сделал это, он запустился как шарм.

12
user2129635

При использовании 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')
6
Pepijn

Я использовал Facebook SDK 4.10.0 для интеграции входа в мое приложение Android. Учебник, которому я следовал:

вход на Facebook Android studio

Вы сможете получить имя, фамилию, адрес электронной почты, пол, идентификатор Facebook и дату рождения от Facebbok.

Выше учебник также объясняет, как создать приложение в консоли разработчика Facebook с помощью видео.

добавить ниже в файл build.gradle(Module:app):

repositories {
        mavenCentral()
    }

а также

 compile 'com.facebook.Android:facebook-Android-sdk:4.10.0'

теперь добавьте ниже в файл AndroidManifest.xml:

 <meta-data Android:name="com.facebook.sdk.ApplicationId" Android:value="your app id from facebook developer console"/>

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

добавьте следующее в файл activity_main.xml:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical"
    tools:context="com.demonuts.fblogin.MainActivity">

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:textColor="#000"
        Android:layout_marginLeft="10dp"
        Android:textAppearance="?android:attr/textAppearanceMedium"
        Android:id="@+id/text"/>

    <com.facebook.login.widget.LoginButton
        Android:id="@+id/btnfb"
        Android:layout_gravity="center_horizontal"
        Android:layout_marginTop="10dp"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content" />

</LinearLayout>

И, наконец, добавьте ниже в файл MainActivity.Java:

import Android.content.Intent;
import Android.content.pm.PackageInfo;
import Android.content.pm.PackageManager;
import Android.content.pm.Signature;
import Android.support.v7.app.AppCompatActivity;
import Android.os.Bundle;
import Android.util.Base64;
import Android.util.Log;
import Android.widget.TextView;

import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.Profile;
import com.facebook.ProfileTracker;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;

import org.json.JSONException;
import org.json.JSONObject;

import Java.security.MessageDigest;
import Java.security.NoSuchAlgorithmException;
import Java.util.Arrays;


public class MainActivity extends AppCompatActivity {

    private TextView tvdetails;
    private CallbackManager callbackManager;
    private AccessTokenTracker accessTokenTracker;
    private ProfileTracker profileTracker;
    private LoginButton loginButton;
    private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            GraphRequest request = GraphRequest.newMeRequest(
                    loginResult.getAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject object, GraphResponse response) {
                            Log.v("LoginActivity", response.toString());

                            // Application code
                            try {
                                Log.d("tttttt",object.getString("id"));
                                String birthday="";
                                if(object.has("birthday")){
                                    birthday = object.getString("birthday"); // 01/31/1980 format
                                }

                                String fnm = object.getString("first_name");
                                String lnm = object.getString("last_name");
                                String mail = object.getString("email");
                                String gender = object.getString("gender");
                                String fid = object.getString("id");
                                tvdetails.setText(fnm+" "+lnm+" \n"+mail+" \n"+gender+" \n"+fid+" \n"+birthday);

                            } catch (JSONException e) {
                                e.printStackTrace();
                            }

                        }
                    });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id, first_name, last_name, email, gender, birthday, location");
            request.setParameters(parameters);
            request.executeAsync();

        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException error) {

        }
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        FacebookSdk.sdkInitialize(this);
        setContentView(R.layout.activity_main);

        tvdetails = (TextView) findViewById(R.id.text);

        loginButton = (LoginButton) findViewById(R.id.btnfb);

        callbackManager = CallbackManager.Factory.create();

        accessTokenTracker= new AccessTokenTracker() {
            @Override
            protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) {

            }
        };

        profileTracker = new ProfileTracker() {
            @Override
            protected void onCurrentProfileChanged(Profile oldProfile, Profile newProfile) {

            }
        };

        accessTokenTracker.startTracking();
        profileTracker.startTracking();
        loginButton.setReadPermissions(Arrays.asList("public_profile", "email", "user_birthday", "user_friends"));
        loginButton.registerCallback(callbackManager, callback);

    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);

    }

    @Override
    public void onStop() {
        super.onStop();
        accessTokenTracker.stopTracking();
        profileTracker.stopTracking();
    }

    @Override
    public void onResume() {
        super.onResume();
        Profile profile = Profile.getCurrentProfile();

    }

}
4
user6017633

Я развернул Facebook Android SDK в хранилище Sonatype.

Вы можете включить эту библиотеку как зависимость Gradle:

repositories {
    maven {
        url 'https://oss.sonatype.org/content/groups/public'
    }
}

dependencies {
    compile 'com.shamanland:facebook-Android-sdk:3.15.0-SNAPSHOT'
}

Оригинальный пост здесь .

3
Oleksii K.

Я исправил

"Не удалось найти свойство 'Android_BUILD_SDK_VERSION' в проекте ': facebook'."

ошибка в файле build.gradle, добавив в gradle.properties значения:

Android_BUILD_TARGET_SDK_VERSION=21<br>
Android_BUILD_MIN_SDK_VERSION=15<br>
Android_BUILD_TOOLS_VERSION=21.1.2<br>
Android_BUILD_SDK_VERSION=21<br>

Источник: https://stackoverflow.com/a/21490651/2161698

2
SebaGra

Люди, использующие Android Studio 0.8.6, могут сделать это:

  1. Загрузите Facebook-Android-sdk-xxx.Zip & Unzip it
  2. Скопируйте ТОЛЬКО в директорию Facebook в директории Facebook-Android-sdk-xxx в ваш проект вместе с app /

    • ImAnApp /
      • | - приложение /
      • | - построить /
      • | - facebook /
  3. Теперь вы должны увидеть Android Studio, показывающую Facebook как модуль

  4. Измените build.gradle facebook в этом.
    • предоставленные файлы ('../ libs/bolts.jar') в provided files('./libs/bolts.jar')
    • compileSdkVersion Integer.parseInt (project.Android_BUILD_SDK_VERSION) в compileSdkVersion 20 или другую версию, которую вы определили в приложении
    • buildToolsVersion project.Android_BUILD_TOOLS_VERSION to buildToolsVersion '20.0.0'
    • minSdkVersion Integer.parseInt (project.Android_BUILD_MIN_SDK_VERSION) в minSdkVersion 14
    • targetSdkVersion Integer.parseInt (project.Android_BUILD_TARGET_SDK_VERSION) в targetSdkVersion 20

    apply plugin: 'Android-library'

    dependencies {
        compile 'com.Android.support:support-v4:19.1.+'
        provided files('./libs/bolts.jar')
    }

    Android {
        compileSdkVersion 20
        buildToolsVersion '20.0.0'

        defaultConfig {
            minSdkVersion 14
            targetSdkVersion 20
        }

        lintOptions {
            abortOnError false
        }

        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                Java.srcDirs = ['src']
                res.srcDirs = ['res']
            }
        }
    }

Повторно синхронизируйте файл Gradle, и он должен работать нормально!

2
Robert

* Хранилище Gradle для Facebook SDK.

dependencies {
    compile 'com.facebook.Android:facebook-Android-sdk:4.4.0'
}

Поиск последней версии Facebook SDK

1
Cristiana Chavez

Создайте файл build.gradle в проекте Facebook SDK:

apply plugin: 'Android-library'

dependencies {
    compile 'com.Android.support:support-v4:18.0.+'
}

Android {
    compileSdkVersion 8
    buildToolsVersion "19.0.0"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            Java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/Java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

Затем добавьте include ':libs:facebook' равно <project_directory>/libs/facebook (путь к библиотеке) в settings.gradle.

1
Vladimir

использование Facebook SDK в Android studio довольно просто, просто добавьте следующую строку в ваш gradle

  compile 'com.facebook.Android:facebook-Android-sdk:[4,5)'

и убедитесь, что вы обновили Android репозиторий поддержки, если нет, то обновите его, используя отдельный sdk manger

0
Mehroz Munir