web-dev-qa-db-fra.com

en utilisant facebook sdk dans Android studio

Je suis SDK Facebook pour Android en utilisant Android Studio . Lorsque je lance mon application, je reçois l'avertissement mentionné ci-dessous.

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

Comment devrais-je résoudre ce problème?

J'ai essayé la réponse de @Scott Barta et j'obtiens le message d'erreur suivant.

    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
104
Uma

REMARQUE

Pour Android Studio 0.5.5 et versions ultérieures, ainsi que pour les versions ultérieures du SDK de Facebook, ce processus est beaucoup plus simple que ce qui est décrit ci-dessous (écrit pour les versions antérieures des deux). Si vous utilisez la dernière version, il vous suffit de procéder comme suit:

  1. Téléchargez le kit de développement logiciel Facebook à partir de https://developers.facebook.com/docs/Android/
  2. Décompressez l'archive
  3. Dans Android Studio 0.5.5 ou version ultérieure, choisissez "Importer le module" dans le menu Fichier.
  4. Dans l'assistant, définissez le chemin source du module à importer en tant que répertoire "facebook" dans l'archive décompressée. (Remarque: si vous choisissez le dossier parent entier, cela inclura non seulement la bibliothèque elle-même, mais également toutes les applications exemples, chacune sous la forme d'un module distinct. Cela peut fonctionner, mais ce n'est probablement pas ce que vous voulez).
  5. Ouvrez la structure de projet par Ctrl + Shift + Alt + S puis sélectionnez l'onglet dépendances. Cliquez sur le bouton + et sélectionnez l'option Module Dependency. Dans la nouvelle fenêtre, sélectionnez :facebook..
  6. Vous devriez être prêt à partir.

Instructions pour les anciens Android Studio et les anciens SDK Facebook

Ceci s'applique à Android Studio 0.5.4 et versions antérieures, et convient tout particulièrement aux versions du kit de développement logiciel (SDK) de Facebook avant que Facebook n'offre les fichiers de création de Gradle pour la distribution. Je ne sais pas dans quelle version du SDK ils ont apporté ce changement.

Les instructions de Facebook sous "Importer le SDK dans un Android Studio Project" sur leur https://developers.facebook.com/docs/getting-started/facebook-sdk-for-Android-using-Android -studio/3.0 / page ne correspond pas aux projets Gradle (votre projet a donc été créé à l'aide de l'assistant de création de projets de Android Studio et/ou contient un fichier build.gradle pour votre module d'application). Suivez ces instructions à la place:

  1. Créez un dossier libraries sous le répertoire principal de votre projet. Par exemple, si votre projet est HelloWorldProject, vous devez créer un dossier HelloWorldProject/libraries.

  2. Copiez maintenant tout le répertoire facebook de l’installation du SDK dans le dossier libraries que vous venez de créer.

  3. Supprimez le dossier libs du répertoire facebook. Si vous le souhaitez, supprimez project.properties, build.xml, .classpath et .project. fichiers aussi bien. Tu n'as pas besoin d'eux.

  4. Créez un fichier build.gradle dans le répertoire facebook avec le contenu suivant:

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

    Notez que selon le moment où vous suivez ces instructions par rapport à la date d'écriture, vous devrez peut-être ajuster la ligne classpath 'com.Android.tools.build:gradle:0.6.+' pour faire référence à une version plus récente du plug-in Gradle. Bientôt, nous aurons besoin de la version 0.7 ou ultérieure. Essayez-le, et si vous obtenez une erreur indiquant qu'une version plus récente du plug-in Gradle est requise, vous devez modifier cette ligne.

  5. Assurez-vous que le Bibliothèque de support Android dans votre SDK Manager est installé.

  6. Editez votre fichier settings.gradle dans le répertoire principal de votre application et ajoutez cette ligne:

    include ':libraries:facebook'
    
  7. Si votre projet est déjà ouvert dans Android Studio, cliquez sur le bouton "Synchroniser le projet avec des fichiers Gradle" dans la barre d'outils. Une fois que c'est fait, le module facebook devrait apparaître. enter image description here

  8. Ouvrez la boîte de dialogue Structure du projet. Choisissez Modules dans la liste de gauche, cliquez sur le module de votre application, cliquez sur l'onglet Dépendances, puis sur le bouton + pour ajouter une nouvelle dépendance. enter image description here
  9. Choisissez "Dépendance du module". Il ouvrira une boîte de dialogue avec une liste de modules à choisir; sélectionnez “: bibliothèques: facebook”. enter image description here
  10. Cliquez sur OK dans toutes les boîtes de dialogue. Android Studio synchronisera automatiquement votre projet (il sera donc inutile de cliquer à nouveau sur le bouton "Synchroniser le projet avec des fichiers Gradle") et de choisir la nouvelle dépendance. Vous devriez être prêt à partir.
250
Scott Barta

Facebook a en effet ajouté le SDK aux référentiels Maven Central. Pour configurer votre projet à l'aide de l'instance du référentiel maven, vous devez procéder de deux manières:

  1. Dans vos projets fichier de niveau supérieur build.gradle, ajoutez les référentiels Maven Central. Le mien ressemble à ceci:

    repositories {
        jcenter()       // This is the default repo
        mavenCentral()  //  This is the Maven Central repo
    }
    
  2. Dans le fichier app-level build.grade, ajoutez la dépendance de Facebook sdk:

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

Vous pouvez également ajuster la version spécifique du SDK de Facebook. Pour une liste des versions disponibles dans le référentiel Maven cliquez sur ce lien.

107
SBerg413

Facebook publie le SDK sur maven central:

Il suffit d'ajouter :

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

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

La solution de Scott Barta a fonctionné pour moi, sauf que je devais les ajouter aux dépendances de mon fichier principal build.gradle:

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

À noter également, vous devez vous assurer que:

Android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 18
    }

Sont les mêmes dans les deux fichiers build.gradle ... Une fois que j'ai fait cela, il a fonctionné comme un charme.

12
user2129635

Lorsque vous utilisez git, vous pouvez facilement intégrer le plus récent logiciel facebook-Android-sdk.

  • Ajouter facebook-Android-sdk en tant que sous-module: git submodule add https://github.com/facebook/facebook-Android-sdk.git
  • Ajouter sdk en tant que projet de dégradé: modifiez settings.gradle et ajoutez la ligne suivante: include ':facebook-Android-sdk:facebook'
  • Ajoutez sdk en tant que dépendance au module: éditez build.gradle et ajoutez-y un bloc de dépendances: compile project(':facebook-Android-sdk:facebook')
6
Pepijn

J'ai utilisé facebook sdk 4.10.0 pour intégrer la connexion dans mon application Android. Le tutoriel que j'ai suivi est:

identifiant facebook Android studio

Vous pourrez obtenir le nom, prénom, email, sexe, identifiant facebook et date de naissance de facebbok.

Le didacticiel ci-dessus explique également comment créer une application dans la console de développement Facebook par vidéo.

ajoutez ci-dessous dans le fichier build.gradle(Module:app):

repositories {
        mavenCentral()
    }

et

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

ajoutez maintenant ci-dessous dans le fichier 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" />

ajoutez ce qui suit dans le fichier 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>

Et en dernier ajouter ci-dessous dans le fichier 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

J'ai déployé Facebook Android SDK dans le référentiel Sonatype.

Vous pouvez inclure cette bibliothèque en tant que dépendance Gradle:

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

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

Message original ici .

3
Oleksii K.

J'ai réparé le

"Impossible de trouver la propriété 'Android_BUILD_SDK_VERSION' sur le projet ': facebook'."

erreur sur le fichier build.gradle, en ajoutant dans gradle.properties les valeurs:

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>

Source: https://stackoverflow.com/a/21490651/2161698

2
SebaGra

Les personnes utilisant Android Studio 0.8.6 peuvent procéder comme suit:

  1. Téléchargez Facebook-Android-sdk-xxx.Zip & Décompressez-le
  2. Copier niquement Facebook dir sous le répertoire Facebook-Android-sdk-xxx dans votre projet avec app /

    • ImAnApp /
      • | - app /
      • | - construire /
      • | - facebook /
  3. Maintenant, vous devriez voir Android Studio afficher Facebook en tant que module

  4. Modifiez le build.gradle de facebook dans cela.
    • fichiers fournis ('../ libs/bolts.jar') à provided files('./libs/bolts.jar')
    • compileSdkVersion Integer.parseInt (project.Android_BUILD_SDK_VERSION) à compileSdkVersion 20 ou une autre version que vous avez définie dans l'application
    • 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']
            }
        }
    }
_

Resynchronisez votre fichier de notes et cela devrait fonctionner correctement!

2
Robert

* Gradle Repository pour le SDK de Facebook.

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

recherche de la dernière version de facebook sdk

1
Cristiana Chavez

Créer un fichier build.gradle dans le projet sdk facebook:

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

Ajoutez ensuite include ':libs:facebook' est égal à <project_directory>/libs/facebook (chemin de la bibliothèque) dans settings.gradle.

1
Vladimir

utiliser facebook sdk dans Android studio est assez simple, il suffit d’ajouter la ligne suivante à votre titre

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

et assurez-vous que vous avez mis à jour le référentiel de support Android, sinon mettez-le à jour à l'aide du gestionnaire autonome de sdk

0
Mehroz Munir