last - key hashes android studio
usando facebook sdk en un estudio Android (12)
Estoy siguiendo Facebook SDK para Android usando Android Studio . Cuando ejecuto mi aplicación recibo la advertencia mencionada a continuación.
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 debería resolver esto?
Intenté 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
* Gradle Repository para el SDK de Facebook.
dependencies {
compile ''com.facebook.android:facebook-android-sdk:4.4.0''
}
Arreglé el
"No se pudo encontrar la propiedad ''ANDROID_BUILD_SDK_VERSION'' en el proyecto '': Facebook''."
error en el archivo build.gradle
, agregando en 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://.com/a/21490651/2161698
Crear archivo build.gradle en el proyecto de 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'')
}
}
A continuación, agregue include '':libs:facebook''
igual a <project_directory>/libs/facebook
(ruta a la biblioteca) en settings.gradle
.
Cuando use git, puede incorporar el más nuevo facebook-android-sdk con facilidad.
- Agregue facebook-android-sdk como submódulo:
git submodule add https://github.com/facebook/facebook-android-sdk.git
- Agregue sdk como proyecto de gradle: edite settings.gradle y agregue line:
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'')
Facebook ha agregado el SDK a los repositorios de Maven Central. Para configurar su proyecto utilizando la instancia de maven repo, tendrá que hacer dos cosas:
En el archivo de build.gradle de primer nivel de su proyecto, agregue los repositorios de Maven Central. El mío se ve así:
repositories { jcenter() // This is the default repo mavenCentral() // This is the Maven Central repo }
En el archivo build.grade de nivel de aplicación , 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. Para obtener una lista de las versiones disponibles en el repositorio de maven, haga clic en este enlace.
Facebook publica el SDK en maven central:
Solo agrega :
repositories {
jcenter() // IntelliJ main repo.
}
dependencies {
compile ''com.facebook.android:facebook-android-sdk:+''
}
He usado facebook sdk 4.10.0 para integrar el inicio de sesión en mi aplicación de Android. El tutorial que seguí es:
Podrás obtener el nombre, apellido, correo electrónico, sexo, identificación de Facebook y fecha de nacimiento de facebbok.
El tutorial anterior también explica cómo crear una aplicación en la consola de desarrollador de Facebook a través de video.
agregue a continuación en el 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" />
agregue 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, por último, agregue 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();
}
}
Implementé Facebook Android SDK 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 here .
La solución de Scott Barta funcionó para mí, excepto que tuve que agregar esto a las dependencias de mi proyecto principal build.gradle file:
compile files(''libs/android-support-v4.jar'')
compile project('':libraries:facebook'')
También vale la pena mencionar que debes asegurarte de que:
android {
compileSdkVersion 18
buildToolsVersion "18.1.1"
defaultConfig {
minSdkVersion 7
targetSdkVersion 18
}
Son lo mismo en ambos archivos build.gradle ... Una vez que hice esto funcionó como un encanto.
Las personas que usan Android Studio 0.8.6 pueden hacer esto:
- Descargue Facebook-android-sdk-xxx.zip y descomprímalo
Copie SOLO el directorio de Facebook en el directorio de Facebook-android-sdk-xxx en su proyecto junto con la aplicación /
- ImAnApp /
- | - app /
- | - construir /
- | - facebook /
- ImAnApp /
Ahora debería ver Android Studio mostrando Facebook como módulo
- Modifica build.gradle of facebook en esto.
- archivos proporcionados (''../ libs / bolts.jar'') a los
provided files(''./libs/bolts.jar'')
- compileSdkVersion Integer.parseInt (project.ANDROID_BUILD_SDK_VERSION)
compileSdkVersion 20
u otra versión que haya definido en la aplicación - buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION para
buildToolsVersion ''20.0.0''
- minSdkVersion Integer.parseInt (project.ANDROID_BUILD_MIN_SDK_VERSION) a
minSdkVersion 14
- targetSdkVersion Integer.parseInt (project.ANDROID_BUILD_TARGET_SDK_VERSION) a
targetSdkVersion 20
- archivos proporcionados (''../ libs / bolts.jar'') a los
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'']
}
}
}
Resincroniza tu archivo gradle y debería funcionar bien.
usar facebook sdk en android studio es bastante simple, simplemente 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; si no, actualícelo con el gestor sdk autónomo
NOTA
Para Android Studio 0.5.5 y posterior, y con versiones posteriores del SDK de Facebook, este proceso es mucho más simple que lo que se documenta a continuación (que fue escrito para versiones anteriores de ambos). Si está ejecutando lo último, todo lo que necesita hacer es esto:
- Descargue el SDK de Facebook desde https://developers.facebook.com/docs/android/
- Descomprime el archivo
- En Android Studio 0.5.5 o posterior, elija "Importar módulo" en el menú Archivo.
- En el asistente, configure la ruta de origen del módulo para importar como el directorio "facebook" dentro del archivo descomprimido. (Nota: si elige la carpeta principal completa, traerá no solo la biblioteca, sino también todas las aplicaciones de muestra, cada una como un módulo separado. Esto puede funcionar, pero probablemente no sea lo que usted desea).
- 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 Módulo Dependencia. En la nueva ventana emergente, seleccione:facebook.
- Usted debe ser bueno para ir.
Instrucciones para Android SDK anterior y SDK de Facebook anterior
Esto se aplica a Android Studio 0.5.4 y 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 página https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android-using-android-studio/3.0/ son incorrectas para proyectos basados en Gradle (es decir, su proyecto se creó utilizando el asistente de Nuevo Proyecto de Android Studio y / o tiene un archivo build.gradle
para su módulo de aplicación). Siga estas instrucciones en su lugar:
Crea una carpeta de
libraries
debajo del directorio principal de tu proyecto. Por ejemplo, si su proyecto es HelloWorldProject, debería crear una carpetaHelloWorldProject/libraries
.Ahora copie todo el directorio de
facebook
de la instalación del SDK en la carpeta delibraries
que acaba de crear.Elimine la carpeta
libs
en el directorio defacebook
. Si lo desea, elimineproject.properties
,build.xml
,.classpath
y.project
. archivos también No los necesitas.Cree un archivo
build.gradle
en el directorio defacebook
con los siguientes contenidos: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 esté siguiendo estas instrucciones en comparación con cuándo está escrito, es posible que necesite ajustar la línea
classpath ''com.android.tools.build:gradle:0.6.+''
para hacer referencia a una versión más reciente del complemento Gradle. . Pronto necesitaremos la versión 0.7 o posterior. Pruébelo, y si obtiene el error de que se requiere una versión más nueva del complemento de Gradle, esa es la línea que debe editar.Asegúrese de que esté instalada la Biblioteca de soporte de Android en su administrador de SDK.
Edite su archivo
settings.gradle
en el directorio principal de su aplicación y agregue esta línea:include '':libraries:facebook''
Si su proyecto ya está abierto en Android Studio, haga clic en el botón "Sincronizar proyecto con archivos Gradle" en la barra de herramientas. Una vez hecho, el módulo de
facebook
debería aparecer.- Abra el cuadro de diálogo Estructura del proyecto. Elija Módulos de 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.
- Elija "dependencia del módulo". Aparecerá un diálogo con una lista de módulos para elegir; seleccione ": bibliotecas: facebook".
- Haga clic en Aceptar en todos los cuadros de diálogo. Android Studio resincronizará automáticamente su proyecto (haciendo innecesario hacer clic en ese botón "Sincronizar proyecto con archivos Gradle" nuevamente) y seleccionará la nueva dependencia. Usted debe ser bueno para ir.