2012-11-26 7 views
17

Ich stelle fest, dass Facebook SDK 3.0 die LoginActivity-Deklaration in Manifest-Datei haben muss.Entfernen Sie LoginActivity von Manifest - Facebook SDK für Android 3.0

<activity android:name="com.facebook.LoginActivity" 
      android:label="@string/app_name" /> 
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/applicationId" /> 

Wenn es nicht da ist, wird die folgende Ausnahme ausgelöst.

com.facebook.FacebookException: Cannot use SessionLoginBehavior SSO_WITH_FALLBACK when com.facebook.LoginActivity is not declared as an activity in AndroidManifest.xml 

Es scheint eine schlechte Praxis, wenn Facebook SDK auf diese Erklärung angewiesen ist. Ich frage mich, ob es eine Möglichkeit gibt, es aus der Manifest-Datei zu entfernen.

Über die ApplicationId fehlt, kann ich es in Code übergeben, indem Sie einige Funktionen, LoginButton-Konstruktor und Session-Konstruktor ändern.

+0

Gibt es einen Grund für Sie nicht es im Manifest enthalten? –

+0

Da das Client-Projekt es in Manifest deklarieren muss. Es ist eine Abhängigkeit. – Emerald214

+2

True, aber Sie müssen auch Internetberechtigungen im Manifest deklarieren (eine weitere Abhängigkeit), und Sie müssen zuerst das SDK zur App hinzufügen. Gibt es irgendwelche Details, die Sie daran hindern, eine andere Aktivität in das Manifest aufzunehmen? –

Antwort

6

Wenn Sie den offiziellen Buildstapel verwenden, müssen Sie in Ihrem Manifest auf jede Aktivität verweisen, die gestartet werden muss. Dies ist in der Tat kontraintuitiv, da man erwarten würde, dass solche Dinge von eingeschlossenen Bibliotheken geerbt werden.

Ein Prozess, der als "manifest merging" bekannt ist, ist jetzt mit dem Build-Stack Maven und mit dem new build system möglich. Da das neue Build-System noch in Arbeit ist, müssen Sie nur warten, bis es offiziell ausgerollt wird.

+0

Das Zusammenführen von Manifesten funktioniert auch in ADT/Eclipse. Sie müssen diese Zeile nur zur Datei 'project.properties' des Nicht-Bibliotheksprojekts hinzufügen:' manifestmerger.enabled = true' –

2

Da der Fehler bei der Erklärung wie folgt in Ihrem Manifest setzen schlägt:

<activity android:name="com.facebook.LoginActivity" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar" 
      android:label="@string/app_name" /> 
+1

Danke, funktioniert perfekt – sandeepmaaram

+0

@SandeepMaram Glücklich zu helfen – Nabin

+0

Ihre Antwort hat nichts mit der Frage zu tun. – AlvaroSantisteban

Verwandte Themen