использование Facebook sdk в Android studio


Я 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
12 100

12 ответов:

Примечание

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

  1. загрузите Facebook SDK из 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 и более ранним версиям, и имеет наибольший смысл для версий Facebook SDK до того, как Facebook предложил файлы сборки Gradle для распространения. Я не знаю, в какой версии SDK они это сделали изменение.

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

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

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

  3. удалить . Если вы любите, удалите project.properties,build.xml,.classpath и .project. и файлы тоже. Тебе это не нужно их.

  4. создать на С следующее содержание:

    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 manager установлен.

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

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

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

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

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

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

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

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

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

просто добавить :

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

dependencies {
    compile 'com.facebook.android:facebook-android-sdk:+'
}

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

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

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

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 18
    }

одинаковы в обеих сборках.файлы gradle...Как только я это сделал, он побежал как заклинание.

при использовании git вы можете легко включить новейший facebook-android-sdk.

  • добавить facebook-android-sdk в качестве подмодуля:git submodule add https://github.com/facebook/facebook-android-sdk.git
  • добавить sdk в качестве проекта gradle: изменить настройки.gradle и добавить строку: include ':facebook-android-sdk:facebook'
  • добавить sdk как зависимость от модуля: редактировать сборку.Gradle и добавить в зависимости блок: compile project(':facebook-android-sdk:facebook')

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

facebook login 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();

    }

}

я развернул 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'
}

оригинальное сообщение здесь.

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

  1. скачать Facebook-android-sdk-xxx.zip & распаковать его
  2. скопировать только facebook dir под Facebook-android-sdk-xxx dir в ваш проект вместе с приложением/

    • ImAnApp/
      • / -- app/
      • / -- build/
      • |-- facebook/
  3. теперь вы должны увидеть Android Studio показ facebook в качестве модуля

  4. изменить построение.град facebook в этом.
    • предоставленные файлы('../библиотеки/болты.jar') до provided files('./libs/bolts.jar')
    • compileSdkVersion целое.parseInt(проект.ANDROID_BUILD_SDK_VERSION) до compileSdkVersion 20 или другая версия, которую вы определили в приложении
    • проект buildToolsVersion.ANDROID_BUILD_TOOLS_VERSION to buildToolsVersion '20.0.0'
    • minSdkVersion Целое число.parseInt(проект.ANDROID_BUILD_MIN_SDK_VERSION) до minSdkVersion 14
    • targetSdkVersion целое.parseInt(проект.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']
            }
        }
    }

Resync ваш gradle файл и он должен просто работать нормально!

я исправил

"не удалось найти свойство '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

создать строить.файл 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.

*Gradle репозиторий для Facebook SDK.

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

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

использование Facebook sdk в android studio довольно просто, просто добавьте следующую строку в свой gradle

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

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