2015-03-28 2 views
8

Ich bin ein Anfänger und ich versuche, eine App mit Facebook-Integration zu erstellen.Android Studio erkennt keine Facebook-Importe

Ich habe alle Schritte (Importieren von Facebook SDK in Module Structure, Hinzufügen von fehlenden Abhängigkeiten in Gradle-Dateien, Hinzufügen der Abhängigkeiten Modul für meine App-Projekt in Struktur wieder). Alles schien in Ordnung zu sein, ich habe ein einfaches LoginButton in main_activity.xml hinzugefügt und es trat kein Fehler auf.

Da ich versucht habe, alle Facebook-Importe in MainActivity.java zu tun, wurden sie alle rot. Das waren Importe wie:

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

und Nachrichten wie "Symbolsitzung kann nicht aufgelöst werden". Ich habe so viel gegoogelt wie ich konnte, konnte keine Lösung finden, die für mich funktionierte. Am gegenüberliegenden, dies ein Problem zu haben schien nicht:

import com.facebook.login.widget.LoginButton; 

Hier ist meine Android Manifestdatei XML:

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

Und hier ist mein 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

versuchen, einen Build auf der Kommandozeile (außerhalb von AS) mit "--info" wechseln ..../gradlew clean assembly_______ und sehen, was Sie über FB-Importe bekommen. oder versuchen Sie diff FB-Version der SDK-Abhängigkeit –

+0

Build auf der Kommandozeile: : app: processDebugResources FAILED : app: processDebugResources (Thread [Haupt, 5, Haupt]) abgeschlossen. Nahm 1.79 Sekunden FAILURE: Das Erstellen ist mit einer Ausnahme fehlgeschlagen. * Was ist schief gegangen: Ausführung fehlgeschlagen für Task ': app: processDebugResources'. > Fehler: mehr als eine Bibliothek mit Paketnamen ‚com.facebook‘ Sie können vorübergehend diesen Fehler deaktivieren mit android.enforceUniquePackageName = false Dies ist jedoch temporär und wird in 1.0 BUILD FAILED Gesamtzeit erzwungen werden: 38,199 secs – linous

+0

ok .. suche alle jars, ./lib, ./libraries .... finde den dupe für die FB-Abhängigkeit. Sehen Sie sich Ihr Dateisystem im Projekt an. Du hast die FB irgendwie getäuscht –

Antwort

7

Ok, ich habe das Projekt von Anfang an erstellt, das FB SDK erneut importiert. Aber das eigentliche Problem mit den Importen war, dass Facebook SDK 4 einige der Funktionen geändert hat, eine davon ist UiLifecycleHelper zum Beispiel, sie existiert nicht mehr.

Ausführliche Informationen über alle Änderungen sind hier:

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

+1

Aber sie verwenden immer noch diese Klassen (Session, SessionState) in ihrer offiziellen Dokumentation, weshalb ich 2 Stunden verlor, bis ich über diese Frage stolperte. –

1

aktualisieren Facebook Abhängigkeit

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

Need Permission in Manifest Datei

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

Seine Arbeits

Weitere Details: -

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