2015-03-28 11 views
8

Sono un mendicante e sto cercando di creare un'app con integrazione Facebook.Android Studio non riconosce le importazioni di Facebook

Ho eseguito tutti i passaggi (Importazione di Facebook SDK nella Struttura del modulo, aggiunta mancanze di depedenze nei file gradle, aggiunta di nuovo il modulo delle dipendenze per il mio progetto di app in Struttura di nuovo). Tutto sembrava andare bene, ho aggiunto un semplice LoginButton in main_activity.xml) e non sono emersi errori.

Dal momento che ho provato a eseguire tutte le importazioni di facebook necessarie in MainActivity.java, sono diventate tutte rosse. Quelle erano importazioni come:

import com.facebook.Session; 
    import com.facebook.SessionState; 
    import com.facebook.UiLifecycleHelper; 
    import com.facebook.widget.LoginButton; 
    import com.facebook.widget.LoginButton.UserInfoChangedCallback; 

e messaggi come "la sessione di simboli non può essere risolta". Ho cercato su Google il più possibile, non ho trovato una soluzione che funzionasse per me. Al contrario, questo non sembrano avere un problema:

import com.facebook.login.widget.LoginButton; 

Ecco il mio manifesto Android XML File:

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.user.moviere" > 

    <uses-permission android:name="android.permission.INTERNET"/> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name="com.facebook.LoginActivity" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar" 
      android:label="@string/app_name" /> 
     <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> 

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

</manifest> 

Ed ecco la mia build.gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion '21.1.2' 

    defaultConfig { 
     applicationId "com.user.moviere" 
     minSdkVersion 9 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 
repositories { 
    mavenCentral() 
} 
dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    // compile project(':facebook') 
    compile 'com.android.support:appcompat-v7:22.0.0' 
    compile 'com.facebook.android:facebook-android-sdk:4.0.0' 
    compile 'com.android.support:support-v4:22.0.0' 
    } 
+0

provare un accumulo sulla riga di comando (fuori da AS) con "--info" interruttore ..../gradlew clean assemble_______ e guarda cosa ottieni riguardo alle importazioni di FB. oppure prova la versione FB diff della dipendenza sdk –

+0

build su riga di comando: : app: processDebugResources FAILED : app: processDebugResources (Thread [main, 5, main]) completato. Ho preso 1.79 secondi. FAILURE: build fallita con un'eccezione. * Cosa non ha funzionato: Esecuzione non riuscita per l'attività ': app: processDebugResources'. > Errore: più di una libreria con il nome del pacchetto 'com.facebook' È possibile disabilitare temporaneamente questo errore con android.enforceUniquePackageName = false Tuttavia, questo è temporaneo e verrà eseguita in 1,0 generazione non riuscita Tempo totale: 38,199 secondi – linous

+0

ok .. cerca tutti i barattoli, ./lib, ./libraries .... trova il duplicato per la dipendenza FB. guarda il tuo file system nel progetto. Ho ingannato l'FB in qualche modo –

risposta

7

Ok, ho creato il progetto dall'inizio, ho importato di nuovo l'SDK dell'FB. Ma il vero problema con le importazioni era che Facebook SDK 4 ha cambiato alcune delle funzioni, una di queste è UiLifecycleHelper per esempio, non esiste più.

Tutti i dettagli su tutte le modifiche è qui:

https://developers.facebook.com/docs/android/upgrading-4.x

+1

Ma usano ancora queste classi (Session, SessionState) nella loro documentazione ufficiale, ed è per questo che ho perso 2 ore a riguardo fino a quando non sono incappato in questa domanda. –

2

sì nell'attuale aggiornamento del SDK di Facebook hanno rimosso sessione, ora le classi access token, LoginManager e CallbackManager sostituiscono e sostituire la funzionalità nella Sessione classe.

Per maggiori informazioni vai a - https://developers.facebook.com/docs/android/upgrading-4.x

1

Aggiornamento Facebook Dipendenza

compilazione 'com.facebook.android:facebook-android-sdk:4.8.0'

necessaria l'autorizzazione nel file manifest

<uses-permission android:name="android.permission.INTERNET"/> 

<meta-data 
     android:name="com.facebook.sdk.ApplicationName" 
     android:value="@string/app_name" /> 
    <meta-data 
     android:name="com.facebook.sdk.ApplicationId" 
     android:value="@string/facebook_app_id" /> 

    <provider 
     android:name="com.facebook.FacebookContentProvider" 
     android:authorities="com.facebook.app.FacebookContentProvider1854328631556764" 
     android:exported="true" /> 

suo funzionamento

Più dettagli: -

https://developers.facebook.com/docs/android/upgrading-4.x