プロジェクトのFacebookiOSSDKを3.0から3.1に更新しました。プロジェクトはもうコンパイルされません。代わりに、次のリンカーエラーが発生します。
Undefined symbols for architecture i386:
"_ACFacebookAppIdKey", referenced from:
-[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
"_ACFacebookAudienceEveryone", referenced from:
-[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
"_ACFacebookAudienceFriends", referenced from:
-[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
"_ACFacebookAudienceKey", referenced from:
-[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
"_ACFacebookAudienceOnlyMe", referenced from:
-[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
"_ACFacebookPermissionsKey", referenced from:
-[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
"_OBJC_CLASS_$_ASIdentifierManager", referenced from:
objc-class-ref in FacebookSDK(FBSettings.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Facebook docs 明確に言う:
SDKは、iOS6に組み込まれているFacebook機能を使用するために、他の3つのフレームワーク(AdSupport、Accounts、Social)に依存しています。
これらのフレームワークはXcode4.2には存在しません。回避策はありますか?つまり、フレームワークをダウンロードして(どこで?)プロジェクトに手動で追加できますか?コンパイルエラーを取り除くにはそれで十分ですか、それともXcode 4.5にアップグレードする必要がありますか?
これらのフレームワークはiOS6の一部です(iOS5のAccounts
を除いて)。 Xcode 4.5、つまりiOS 6 SDKにアップグレードしないと、これらを使用することはできません。
懸念がある場合は、展開ターゲットをiOS4.3に設定することもできます。
私はあなたの選択肢は次のとおりだと思います:
物事を明確にするために:
XCode 4.5の場合:
FB SDK3.0を使用する場合、アカウントとFacebookSDKフレームワークを追加するだけで済みます。
FB SDK3.1を使用する場合、アカウント、FacebookSDK、ソーシャル、およびAdSupportフレームワークを追加する必要があります。
FB SDK3.2 ++を使用している場合、他に必要なフレームワークと必要でないフレームワークを自分で確認してください。 ;)
それが皆にとってうまくまとめられることを願っています。
SDKは、他の3つのフレームワーク(AdSupport、Accounts、Social)に依存しています。
これらを追加するには、ターゲットの[概要]ペインの[リンクされたフレームワークとライブラリ]セクションに移動して、それらを追加します。
次の手順は、この問題を解決するのに役立つ場合があります
次に、次の変更を加えて http://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/ のコードを試しました(そのまま) Facebook iOS SDK 3.1の場合)
openActiveSessionWithReadPermissions
をopenActiveSessionWithPermissions
に置き換えます[FBSession.activeSession handleDidBecomeActive];
を[FBSession activeSession];
に置き換えますこれは私のために働いた。一度お試しください。
ありがとう、プロ開発者。
ソブリは正しいです。 Xcode 4.5にアップグレードするか、SDK 3.0を使用するか、3.1を使用する場合はgithubからソースをダウンロードし、ビルドファイルを変更して(基本的にiOS 6.0で提供されるフレームワークへの参照を削除します)、SDKを再構築します。これにより、SDK 3.1を使用できるだけでなく、古いXCodeバージョンで実行することもできます。