en utilisant facebook sdk en studio Android

Je suis Facebook SDK 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 comstackd. 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’ai reçu 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:_DebugComstack'. > Could not find any version that matches com.android.support:support-v4:+. Required by: MyApplication2.libraries:facebook:unspecified 

REMARQUE

Pour Android Studio 0.5.5 et versions ultérieures, et avec les versions ultérieures du SDK Facebook, ce processus est beaucoup plus simple que ce qui est documenté ci-dessous (qui a été écrit pour les versions antérieures des deux). Si vous utilisez la dernière version, il vous suffit de faire ceci:

  1. Téléchargez le kit de développement Facebook depuis https://developers.facebook.com/docs/android/
  2. Décompressez l’archive
  3. Dans Android Studio 0.5.5 ou ultérieur, choisissez “Import Module” dans le menu File.
  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 l’intégralité du dossier parent, non seulement la bibliothèque elle-même, mais également toutes les applications exemples, chacune étant un module distinct. Cela peut fonctionner mais n’est probablement pas ce que vous voulez).
  5. Ouvrez la structure du projet par Ctrl + Shift + Alt + S puis sélectionnez l’onglet des dépendances. Cliquez sur le bouton + et sélectionnez Dépendance du module. Dans la nouvelle fenêtre, sélectionnez :facebook.
  6. Vous devriez être bon pour y aller.

Instructions pour les anciens Android Studio et anciens SDK Facebook

Cela s’applique à Android Studio 0.5.4 et versions antérieures, et convient parfaitement aux versions du SDK Facebook avant que Facebook ne propose les fichiers de compilation Gradle pour la dissortingbution. Je ne sais pas dans quelle version du SDK ils ont fait ce changement.

Les instructions de Facebook sous “Importer le SDK dans un projet Android Studio” sur la page https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android-using-android-studio/3.0/ sont erronées pour les projets basés sur Gradle (c’est-à-dire que votre projet a été créé à l’aide de l’assistant Nouveau projet d’Android Studio et / ou contient un fichier build.gradle pour votre module d’application). Suivez ces instructions à la place:

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

  2. Maintenant, copiez l’intégralité du répertoire facebook depuis l’installation du SDK dans le dossier de libraries vous venez de créer.

  3. Supprimez le dossier libs dans le répertoire facebook . Si vous le souhaitez, supprimez les .classpath project.properties , build.xml , .classpath et .project . fichiers aussi. Vous n’en avez pas besoin

  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 { comstack 'com.android.support:support-v4:+' } android { comstackSdkVersion 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 référencer une version plus récente du plug-in Gradle. . Nous aurons bientôt besoin de la version 0.7 ou ultérieure. Essayez-le et si vous rencontrez une erreur en indiquant qu’une version plus récente du plug-in Gradle est requirejse, vous devez modifier cette ligne.

  5. Assurez-vous que la bibliothèque de support Android de votre gestionnaire SDK est installée.

  6. Modifiez 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 les fichiers Gradle” dans la barre d’outils. Une fois cela fait, le module facebook devrait apparaître. entrer la description de l'image ici

  8. Ouvrez la boîte de dialog Structure du projet. Choisissez Modules dans la liste de gauche, cliquez sur le module de votre application, cliquez sur l’onglet Dépendances et cliquez sur le bouton + pour append une nouvelle dépendance. entrer la description de l'image ici
  9. Choisissez «dépendance de module». Il affichera un dialog avec une liste de modules à choisir; sélectionnez «: libraries: facebook». entrer la description de l'image ici
  10. Cliquez sur OK dans toutes les boîtes de dialog. Android Studio resynchronise automatiquement votre projet (ce qui rend inutile de cliquer à nouveau sur le bouton “Synchroniser le projet avec les fichiers Gradle”) et de sélectionner la nouvelle dépendance. Vous devriez être bon pour y aller.

Facebook a en effet ajouté le SDK aux référentiels Maven Central. Pour configurer votre projet à l’aide de l’instance de repo maven, vous devez faire 2 choses:

  1. Dans le fichier build.gradle de niveau supérieur de vos projets, 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 build.grade au niveau de l’ application , ajoutez la dépendance Facebook sdk:

     dependencies { comstack '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 Facebook. Pour une liste des versions disponibles dans le référentiel maven, cliquez sur ce lien.

Facebook publie le SDK sur maven central:

Ajoutez simplement :

 repositories { jcenter() // IntelliJ main repo. } dependencies { comstack 'com.facebook.android:facebook-android-sdk:+' } 

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

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

Il convient également de mentionner que vous devez vous assurer que:

 android { comstackSdkVersion 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.

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

  • Ajouter facebook-android-sdk comme sous-module: le sous-module git submodule add https://github.com/facebook/facebook-android-sdk.git
  • Ajouter sdk comme projet de gradation: éditer les parameters.gradle et append une ligne: include ':facebook-android-sdk:facebook'
  • Ajoutez sdk comme dépendance au module: éditez le build.gradle et ajoutez-le dans le bloc dependencies: comstack project(':facebook-android-sdk:facebook')

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

facebook login android studio

Vous pourrez obtenir le prénom, le nom, l’adresse e-mail, le sexe, l’identifiant facebook et la date de naissance de facebbok.

Le tutoriel ci-dessus explique également comment créer une application dans la console de développement facebook via la vidéo.

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

 repositories { mavenCentral() } 

et

  comstack 'com.facebook.android:facebook-android-sdk:4.10.0' 

Maintenant, ajoutez ci-dessous dans le fichier AndroidManifest.xml:

    

ajoutez les éléments suivants dans le fichier activity_main.xml:

     

Et en dernier ajout 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 callback = new FacebookCallback() { @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.toSsortingng()); // Application code try { Log.d("tttttt",object.getSsortingng("id")); Ssortingng birthday=""; if(object.has("birthday")){ birthday = object.getSsortingng("birthday"); // 01/31/1980 format } Ssortingng fnm = object.getSsortingng("first_name"); Ssortingng lnm = object.getSsortingng("last_name"); Ssortingng mail = object.getSsortingng("email"); Ssortingng gender = object.getSsortingng("gender"); Ssortingng fid = object.getSsortingng("id"); tvdetails.setText(fnm+" "+lnm+" \n"+mail+" \n"+gender+" \n"+fid+" \n"+birthday); } catch (JSONException e) { e.printStackTrace(); } } }); Bundle parameters = new Bundle(); parameters.putSsortingng("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(); } } 

J’ai déployé Facebook Android SDK sur le référentiel Sonatype.

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

 repositories { maven { url 'https://oss.sonatype.org/content/groups/public' } } dependencies { comstack 'com.shamanland:facebook-android-sdk:3.15.0-SNAPSHOT' } 

Message original ici .

Les personnes utilisant Android Studio 0.8.6 pourraient le faire:

  1. Téléchargez Facebook-android-sdk-xxx.zip et décompressez-le
  2. Copiez UNIQUEMENT le répertoire facebook sous le répertoire Facebook-android-sdk-xxx dans votre projet avec l’application /

    • ImAnApp /
      • | – app /
      • | – construire /
      • | – facebook /
  3. Maintenant, vous devriez voir Android Studio montrant facebook comme module

  4. Modifiez le build.gradle de facebook en cela.
    • fourni des fichiers (‘../ libs / bolts.jar’) aux provided files('./libs/bolts.jar')
    • comstackSdkVersion Integer.parseInt (project.ANDROID_BUILD_SDK_VERSION) pour comstackSdkVersion 20 ou toute autre version que vous avez définie dans l’application
    • buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION à 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 { comstack 'com.android.support:support-v4:19.1.+' provided files('./libs/bolts.jar') } android { comstackSdkVersion 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 graduation et cela devrait fonctionner correctement!

J’ai réparé le

“Impossible de trouver la propriété ‘ANDROID_BUILD_SDK_VERSION’ sur le projet ‘: facebook’.”

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

 ANDROID_BUILD_TARGET_SDK_VERSION=21
ANDROID_BUILD_MIN_SDK_VERSION=15
ANDROID_BUILD_TOOLS_VERSION=21.1.2
ANDROID_BUILD_SDK_VERSION=21

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

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

 apply plugin: 'android-library' dependencies { comstack 'com.android.support:support-v4:18.0.+' } android { comstackSdkVersion 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/ // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... // This moves them out of them default location under src//... 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') } } 

Puis ajoutez include ':libs:facebook' est égal à /libs/facebook (chemin de la bibliothèque) dans settings.gradle .

* Gradle Repository pour le SDK Facebook.

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

Rechercher la dernière version facebook sdk

en utilisant facebook sdk dans le studio Android est assez simple, il suffit d’append la ligne suivante dans votre gradle

  comstack '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 de sdk manger autonome