wake-up-neo.com

mit Facebook SDK in Android Studio

Ich verfolge Facebook SDK für Android using Android Studio . Wenn ich meine Anwendung ausführe, erhalte ich die folgende Warnung .

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

Wie soll ich das lösen?

Ich habe die Antwort von @Scott Barta versucht und die folgende Fehlermeldung erhalten.

    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

HINWEIS

Für Android Studio 0.5.5 und höher und mit späteren Versionen des Facebook SDK ist dieser Vorgang viel einfacher als der unten dokumentierte (der für frühere Versionen von beiden geschrieben wurde). Wenn Sie Sie müssen nur Folgendes tun, um die neueste Version auszuführen:

  1. Laden Sie das Facebook SDK von https://developers.facebook.com/docs/Android/ herunter
  2. Entpacke das Archiv
  3. Wählen Sie in Android Studio 0.5.5 oder höher "Modul importieren" aus dem Menü "Datei".
  4. Stellen Sie im Assistenten den Quellpfad des zu importierenden Moduls als "facebook" -Verzeichnis im entpackten Archiv ein. (Hinweis: Wenn Sie den gesamten übergeordneten Ordner auswählen, wird nicht nur die Bibliothek selbst, sondern auch alle Beispielanwendungen als separates Modul eingebunden. Dies funktioniert möglicherweise, ist aber wahrscheinlich nicht das, was Sie möchten.).
  5. Öffnen Sie die Projektstruktur mit Ctrl + Shift + Alt + S Und wählen Sie die Registerkarte Abhängigkeiten. Klicken Sie auf die Schaltfläche + Und wählen Sie Modulabhängigkeit. Wählen Sie im neuen Popup-Fenster :facebook.
  6. Sie sollten gut zu gehen sein.

Anleitung für ältere Android Studio und ältere Facebook SDK

Dies gilt für Android Studio 0.5.4 und früher und ist am sinnvollsten für Versionen des Facebook SDK, bevor Facebook Gradle-Build-Dateien für die Distribution anbot. Ich weiß nicht, in welcher Version von das SDK, das sie geändert haben.

Die Anweisungen von Facebook unter "SDK in ein Android Studio-Projekt importieren" auf deren https://developers.facebook.com/docs/getting-started/facebook-sdk-for- Android-using-Android-studio/3.0 / Seite ist für Gradle-basierte Projekte falsch (dh Ihr Projekt wurde mit Android Studios Assistent für neue Projekte und/oder mit einem build.gradle Für Ihr Anwendungsmodul). Befolgen Sie stattdessen diese Anweisungen:

  1. Erstellen Sie einen libraries -Ordner unter dem Hauptverzeichnis Ihres Projekts. Wenn Ihr Projekt beispielsweise HelloWorldProject ist, würden Sie einen Ordner HelloWorldProject/libraries Erstellen.

  2. Kopieren Sie nun das gesamte Verzeichnis facebook aus der SDK-Installation in den soeben erstellten Ordner libraries.

  3. Löschen Sie den Ordner libs im Verzeichnis facebook. Wenn Sie möchten, löschen Sie project.properties, build.xml, .classpath Und .project. Dateien als auch. Du brauchst sie nicht.

  4. Erstellen Sie eine build.gradle - Datei im Verzeichnis facebook mit folgendem Inhalt:

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

    Beachten Sie, dass Sie je nachdem, wann Sie diese Anweisungen befolgen, möglicherweise die Zeile classpath 'com.Android.tools.build:gradle:0.6.+' Anpassen müssen, um auf eine neuere Version des Gradle-Plugins zu verweisen. In Kürze benötigen wir Version 0.7 oder höher. Probieren Sie es aus, und wenn Sie die Fehlermeldung erhalten, dass eine neuere Version des Gradle-Plugins erforderlich ist, müssen Sie diese Zeile bearbeiten.

  5. Stellen Sie sicher, dass Android Support-Bibliothek in Ihrem SDK-Manager ist installiert.

  6. Bearbeiten Sie die Datei settings.gradle Im Hauptverzeichnis Ihrer Anwendung und fügen Sie folgende Zeile hinzu:

    include ':libraries:facebook'
    
  7. Wenn Ihr Projekt bereits in Android Studio geöffnet ist, klicken Sie in der Symbolleiste auf die Schaltfläche "Projekt mit Gradle-Dateien synchronisieren". Anschließend sollte das Modul facebook angezeigt werden. enter image description here

  8. Öffnen Sie den Dialog Projektstruktur. Wählen Sie "Module" aus der linken Liste aus, klicken Sie auf das Modul Ihrer Anwendung, klicken Sie auf die Registerkarte "Abhängigkeiten" und klicken Sie auf die Schaltfläche "+", um eine neue Abhängigkeit hinzuzufügen. enter image description here
  9. Wählen Sie "Modulabhängigkeit". Es wird ein Dialogfeld mit einer Liste von Modulen angezeigt, aus denen Sie auswählen können. Wählen Sie ": Libraries: Facebook". enter image description here
  10. Klicken Sie in allen Dialogfeldern auf OK. Android Studio synchronisiert Ihr Projekt automatisch neu (es ist nicht erforderlich, erneut auf die Schaltfläche "Projekt mit Gradle-Dateien synchronisieren" zu klicken) und übernimmt die neue Abhängigkeit.
250
Scott Barta

Facebook hat das SDK tatsächlich zu den Maven Central-Repositories hinzugefügt. Um Ihr Projekt mit der Instanz von Maven Repo zu konfigurieren, müssen Sie zwei Dinge tun:

  1. Fügen Sie in Ihrer Datei projects top-level build.gradle die Maven Central-Repositorys hinzu. Meins sieht so aus:

    repositories {
        jcenter()       // This is the default repo
        mavenCentral()  //  This is the Maven Central repo
    }
    
  2. Fügen Sie in der Datei app-level build.grade die Facebook-SDK-Abhängigkeit hinzu:

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

Sie können auch die spezifische Facebook SDK-Version anpassen. Für eine Liste der verfügbaren Versionen im Maven-Repository klicken Sie auf diesen Link.

107
SBerg413

Facebook veröffentlicht das SDK auf maven central:

Einfach hinzufügen :

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

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

Die Lösung von Scott Barta funktionierte für mich, außer dass ich diese zu den Abhängigkeiten meiner Hauptprojektdatei build.gradle hinzufügen musste:

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

Erwähnenswert ist auch, dass Sie Folgendes sicherstellen müssen:

Android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 18
    }

Sind die gleichen in beiden build.gradle-Dateien ... Sobald ich das getan habe, lief es wie ein Zauber.

12
user2129635

Mit git können Sie mühelos das neueste Facebook-Android-SDK einbinden.

  • Füge facebook-Android-sdk als Submodul hinzu: git submodule add https://github.com/facebook/facebook-Android-sdk.git
  • Füge sdk als gradle Projekt hinzu: bearbeite settings.gradle und füge Zeile hinzu: include ':facebook-Android-sdk:facebook'
  • Füge sdk als Abhängigkeit zum Modul hinzu: bearbeite build.gradle und füge innerhalb des Abhängigkeitsblocks hinzu: compile project(':facebook-Android-sdk:facebook')
6
Pepijn

Ich habe Facebook SDK 4.10.0 verwendet, um Login in mein Android App zu integrieren. Tutorial, das ich befolgt habe, ist:

facebook login Android studio

Sie können Vorname, Nachname, E-Mail, Geschlecht, Facebook-ID und Geburtsdatum von facebbok abrufen.

Das obige Tutorial erklärt auch, wie man eine App in der Facebook-Entwicklerkonsole über ein Video erstellt.

füge unten in die build.gradle(Module:app) Datei ein:

repositories {
        mavenCentral()
    }

und

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

fügen Sie nun in der Datei AndroidManifest.xml Folgendes hinzu:

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

fügen Sie Folgendes in die Datei activity_main.xml ein:

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

Und zuletzt fügen Sie unten in der MainActivity.Java-Datei hinzu:

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

Ich habe Facebook Android SDK im Sonatype-Repository bereitgestellt.

Sie können diese Bibliothek als Gradle-Abhängigkeit einbinden:

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

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

Ursprünglicher Beitrag hier .

3
Oleksii K.

Ich habe das Problem behoben

"Die Eigenschaft" Android_BUILD_SDK_VERSION "wurde im Projekt": facebook "nicht gefunden."

fehler auf dem build.gradle Datei durch Hinzufügen von gradle.properties die Werte:

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>

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

2
SebaGra

Benutzer von Android Studio 0.8.6 könnten dies tun:

  1. Downloaden Sie Facebook-Android-sdk-xxx.Zip & Unzip it
  2. Kopiere NUR facebook dir unter das Facebook-Android-SDK-xxx-Verzeichnis in dein Projekt zusammen mit der App /

    • ImAnApp /
      • | - app /
      • | - bauen /
      • | - facebook /
  3. Jetzt sollte Android Studio Facebook als Modul anzeigen

  4. Ändere das build.gradle von Facebook in dieses.
    • bereitgestellte Dateien ('../ libs/bolt.jar') bis provided files('./libs/bolts.jar')
    • compileSdkVersion Integer.parseInt (project.Android_BUILD_SDK_VERSION) bis compileSdkVersion 20 oder eine andere Version, die Sie in der App definiert haben
    • buildToolsVersion project.Android_BUILD_TOOLS_VERSION to buildToolsVersion '20.0.0'
    • minSdkVersion Integer.parseInt (project.Android_BUILD_MIN_SDK_VERSION) bis minSdkVersion 14
    • targetSdkVersion Integer.parseInt (project.Android_BUILD_TARGET_SDK_VERSION) bis 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']
            }
        }
    }

Synchronisiere deine gradle Datei neu und es sollte einfach funktionieren!

2
Robert

* Gradle Repository für das Facebook SDK.

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

Suche nach der neuesten Version Facebook SDK

1

Erstelle eine build.gradle Datei im Facebook SDK Projekt:

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

Dann füge hinzu include ':libs:facebook' entspricht <project_directory>/libs/facebook (Pfad zur Bibliothek) in settings.gradle.

1
Vladimir

mit Facebook SDK in Android Studio ist ganz einfach, fügen Sie einfach die folgende Zeile in Ihrem gradle

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

und stellen Sie sicher, dass Sie Android support repository aktualisiert haben, wenn nicht, dann aktualisieren Sie es mit Stand Alone SDK Manager

0
Mehroz Munir