2012-11-26 8 views
17

Facebook SDK 3.0にManifestファイルのLoginActivity宣言が必要であることがわかりました。ManifestからLoginActivityを削除する - Android 3.0用Facebook SDK

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

これがない場合は、次の例外がスローされます。

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

Facebook SDKがこの宣言に依存しなければならない場合は、悪い習慣のようです。マニフェストファイルからそれを削除する方法があるのだろうかと思います。

については、アプリケーションの欠落については、いくつかの関数LoginButtonコンストラクタとSessionコンストラクタを変更することでコードを渡すことができます。

+0

は、あなたがマニフェストにそれを含まないため、何らかの理由はありますか? –

+0

クライアントプロジェクトはマニフェストで宣言する必要があるためです。それは依存関係です。 – Emerald214

+2

真実ですが、マニフェスト(別の依存関係)でインターネットのパーミッションを宣言する必要があり、最初にSDKをアプリに追加する必要があります。マニフェストに別のアクティビティを含めることを妨げている詳細はありますか? –

答えて

6

公式ビルドスタックを使用する場合は、マニフェスト内のすべてのアクティビティ(開始する必要がある)を参照する必要があります。これは実際には直感的ではありません。なぜなら、そのようなものがインクルードされたライブラリから継承されることを期待するからです。

Mavenビルドスタックとnew build systemでは「マニフェストマージ」と呼ばれるプロセスが可能です。新しいビルドシステムはまだ進行中ですので、公式に公開されるまで待つだけです。エラーがマニフェストに次のように宣言を置くことを提案したよう

+0

マニフェストマージはADT/Eclipseでも機能します。 –

2

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

ありがとう:あなただけの非ライブラリプロジェクトの' project.properties'ファイルに次の行を追加する必要があります。 – sandeepmaaram

+0

@SandeepMaramハッピー作業、 'manifestmerger.enabled = true'を – Nabin

+0

あなたの答えは質問とは何の関係もありません助けるために完璧な – AlvaroSantisteban

関連する問題