it-swarm-es.com

usando facebook sdk en el estudio de Android

Estoy siguiendo Facebook SDK para Android usando Android Studio . Cuando ejecuto mi aplicación, recibo la siguiente advertencia.

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

¿Cómo debo resolver esto?

Probé la respuesta de @Scott Barta y recibí el siguiente mensaje de error.

    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

NOTA

Para Android Studio 0.5.5 y versiones posteriores, y con versiones posteriores del SDK de Facebook, este proceso es mucho más simple de lo que se documenta a continuación (que fue escrito para versiones anteriores de ambos). Si está ejecutando el último, todo lo que necesita hacer es esto:

  1. Descargue el SDK de Facebook desde https://developers.facebook.com/docs/Android/
  2. Descomprimir el archivo
  3. En Android Studio 0.5.5 o posterior, seleccione "Importar módulo" en el menú Archivo.
  4. En el asistente, establezca la ruta de origen del módulo para importar como el directorio "facebook" dentro del archivo desempaquetado. (Nota: si elige la carpeta principal completa, se incluirá no solo la biblioteca en sí, sino también todas las aplicaciones de ejemplo, cada una como un módulo separado. Esto puede funcionar pero probablemente no sea lo que desea).
  5. Abra la estructura del proyecto con Ctrl + Shift + Alt + S y luego seleccione la pestaña de dependencias. Haga clic en el botón + y seleccione Dependencia del módulo. En la nueva ventana emergente, seleccione :facebook.
  6. Usted debe ser bueno para ir.

Instrucciones para Android Studio anterior y SDK de Facebook anterior

Esto se aplica a Android Studio 0.5.4 y versiones anteriores, y tiene más sentido para las versiones del SDK de Facebook antes de que Facebook ofrezca los archivos de compilación de Gradle para la distribución. No sé en qué versión del SDK hicieron ese cambio.

Las instrucciones de Facebook en "Importar el SDK en un proyecto de Android Studio" en su https://developers.facebook.com/docs/getting-started/facebook-sdk-for-Android-using-Android-studio/3.0/ page está mal para los proyectos basados ​​en Gradle (es decir, su proyecto se creó con el asistente para nuevos proyectos de Android Studio y/o tiene un archivo build.gradle para su módulo de aplicación). Siga estas instrucciones en su lugar:

  1. Cree una carpeta libraries debajo del directorio principal de su proyecto. Por ejemplo, si su proyecto es HelloWorldProject, crearía una carpeta HelloWorldProject/libraries.

  2. Ahora copie el directorio facebook completo de la instalación del SDK en la carpeta libraries que acaba de crear.

  3. Elimine la carpeta libs en el directorio facebook. Si lo desea, elimine el project.properties, build.xml, .classpath y .project. archivos también. No los necesitas.

  4. Cree un archivo build.gradle en el directorio facebook con el siguiente contenido:

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

    Tenga en cuenta que, dependiendo de cuándo siga estas instrucciones en comparación con cuando está escrito, es posible que deba ajustar la línea classpath 'com.Android.tools.build:gradle:0.6.+' para hacer referencia a una versión más nueva del complemento Gradle. Pronto necesitaremos la versión 0.7 o posterior. Pruébelo, y si recibe un error de que se requiere una versión más nueva del complemento Gradle, esa es la línea que debe editar.

  5. Asegúrate que Biblioteca de soporte de Android en su administrador de SDK está instalado.

  6. Edite su archivo settings.gradle en el directorio principal de su aplicación y agregue esta línea:

    include ':libraries:facebook'
    
  7. Si su proyecto ya está abierto en Android Studio, haga clic en el botón "Sincronizar proyecto con archivos de Gradle" en la barra de herramientas. Una vez hecho esto, el módulo facebook debería aparecer. enter image description here

  8. Abra el cuadro de diálogo Estructura del proyecto. Elija Módulos en la lista de la izquierda, haga clic en el módulo de su aplicación, haga clic en la pestaña Dependencias y haga clic en el botón + para agregar una nueva dependencia. enter image description here
  9. Elija "Módulo de dependencia". Se abrirá un cuadro de diálogo con una lista de módulos para elegir; seleccione ": bibliotecas: facebook". enter image description here
  10. Haga clic en Aceptar en todos los cuadros de diálogo. Android Studio volverá a sincronizar automáticamente su proyecto (haciendo que no sea necesario volver a hacer clic en el botón "Sincronizar proyecto con archivos de Gradle") y seleccionar la nueva dependencia. Usted debe ser bueno para ir.
249
Scott Barta

De hecho, Facebook ha agregado el SDK a los repositorios de Maven Central. Para configurar su proyecto usando la instancia de maven repo, necesitará hacer 2 cosas:

  1. En sus proyectos build.gradle de nivel superior file, agregue los repositorios de Maven Central. El mío se parece a esto:

    repositories {
        jcenter()       // This is the default repo
        mavenCentral()  //  This is the Maven Central repo
    }
    
  2. En el archivo nivel de aplicación build.grade , agregue la dependencia de sdk de Facebook:

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

También puede ajustar la versión específica de Facebook SDK también. Para obtener una lista de las versiones disponibles en el repositorio de Maven haga clic en este enlace.

107
SBerg413

Facebook publica el SDK en maven central:

Solo agrega :

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

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

La solución de Scott Barta funcionó para mí, excepto que tuve que agregarlas a las dependencias de mi proyecto principal, el archivo build.gradle:

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

También vale la pena mencionar, es necesario asegurarse de:

Android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 18
    }

Son iguales en ambos archivos de build.gradle ... Una vez que hice esto, se ejecutó como un encanto.

12
user2129635

Al usar git puedes incorporar el nuevo facebook-Android-sdk con facilidad.

  • Agrega facebook-Android-sdk como submódulo: git submodule add https://github.com/facebook/facebook-Android-sdk.git
  • Agregue sdk como proyecto gradle: edite settings.gradle y agregue línea: include ':facebook-Android-sdk:facebook'
  • Agregue sdk como dependencia al módulo: edite build.gradle y agregue dentro del bloque de dependencias: compile project(':facebook-Android-sdk:facebook')
6
Pepijn

He utilizado facebook sdk 4.10.0 para integrar el inicio de sesión en mi aplicación de Android. El tutorial que he seguido es:

inicio de sesión de facebook estudio de Android

Podrás obtener el nombre, apellido, correo electrónico, género, ID de Facebook y fecha de nacimiento de facebbok.

El tutorial anterior también explica cómo crear una aplicación en la consola de desarrolladores de Facebook a través de un video.

agregue abajo en el archivo build.gradle(Module:app):

repositories {
        mavenCentral()
    }

y

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

ahora agregue a continuación en el archivo 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" />

agrega lo siguiente en el archivo 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>

Y en el último complemento a continuación en el archivo 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

Desplegué el SDK de Android de Facebook en el repositorio de Sonatype.

Puede incluir esta biblioteca como dependencia de Gradle:

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

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

Publicación original aquí .

3
Oleksii K.

Arreglé el

"No se pudo encontrar la propiedad 'Android_BUILD_SDK_VERSION' en el proyecto ': facebook'".

error en el archivo build.gradle, al agregar gradle.properties los valores:

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>

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

2
SebaGra

Las personas que usan Android Studio 0.8.6 podrían hacer esto:

  1. Descargar Facebook-Android-sdk-xxx.Zip y descomprimirlo
  2. Copie SOLAMENTE directorio de facebook debajo del directorio de Facebook-Android-sdk-xxx en su proyecto junto con la aplicación /

    • ImAnApp /
      • | - app /
      • | - construir /
      • | - facebook /
  3. Ahora deberías ver Android Studio mostrando facebook como módulo

  4. Modifica el build.gradle de facebook en esto.
    • archivos provistos ('../ libs/bolts.jar') aprovided files('./libs/bolts.jar')
    • compileSdkVersion Integer.parseInt (project.Android_BUILD_SDK_VERSION) acompileSdkVersion 20u otra versión definida en la aplicación
    • buildToolsVersion project.Android_BUILD_TOOLS_VERSION abuildToolsVersion '20.0.0'
    • minSdkVersion Integer.parseInt (project.Android_BUILD_MIN_SDK_VERSION) aminSdkVersion 14
    • targetSdkVersion Integer.parseInt (project.Android_BUILD_TARGET_SDK_VERSION) atargetSdkVersion 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']
            }
        }
    }

Vuelva a sincronizar su archivo de Gradle y debería funcionar bien!

2
Robert

* Repositorio de Gradle para el SDK de Facebook.

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

Buscar la última versión de facebook sdk

1
Cristiana Chavez

Crea el archivo build.gradle en el proyecto sdk de 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')
    }
}

Luego, agregue include ':libs:facebook' es igual a <project_directory>/libs/facebook (ruta a la biblioteca) en settings.gradle.

1
Vladimir

usar Facebook SDK en Android Studio es bastante simple, solo agregue la siguiente línea en su gradle

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

y asegúrese de haber actualizado el repositorio de soporte de Android; de lo contrario, actualícelo utilizando el gestor de SDK independiente

0
Mehroz Munir