web-dev-qa-db-ja.com

iOSの解析:アプリを実行しようとしたときのエラー

Parse SDKを使用してきましたが、クイックステップガイドに従いました。実行しようとすると、これらの8つのエラーが表示されます。理由についてのアイデアはありますか?私が使用していないParseのFacebook部分と関係があるように見えます。

 Undefined symbols for architecture armv7:
"_FBTokenInformationTokenKey", referenced from:
  -[PFFacebookTokenCachingStrategy accessToken] in Parse(PFFacebookTokenCachingStrategy.o)
  -[PFFacebookTokenCachingStrategy setAccessToken:] in Parse(PFFacebookTokenCachingStrategy.o)
 "_FBTokenInformationExpirationDateKey", referenced from:
  -[PFFacebookTokenCachingStrategy cacheTokenInformation:] in     Parse(PFFacebookTokenCachingStrategy.o)
  -[PFFacebookTokenCachingStrategy expirationDate] in Parse(PFFacebookTokenCachingStrategy.o)
  -[PFFacebookTokenCachingStrategy setExpirationDate:] in Parse(PFFacebookTokenCachingStrategy.o)
 "_OBJC_METACLASS_$_FBSessionTokenCachingStrategy", referenced from:
  _OBJC_METACLASS_$_PFFacebookTokenCachingStrategy in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_CLASS_$_FBSessionTokenCachingStrategy", referenced from:
  _OBJC_CLASS_$_PFFacebookTokenCachingStrategy in Parse(PFFacebookTokenCachingStrategy.o)
"_FBTokenInformationUserFBIDKey", referenced from:
  -[PFFacebookTokenCachingStrategy facebookId] in Parse(PFFacebookTokenCachingStrategy.o)
  -[PFFacebookTokenCachingStrategy setFacebookId:] in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_CLASS_$_FBRequest", referenced from:
  objc-class-ref in Parse(PFFacebookAuthenticationProvider.o)
"_OBJC_CLASS_$_FBSession", referenced from:
  objc-class-ref in Parse(PFFacebookAuthenticationProvider.o)
 ld: symbol(s) not found for architecture armv7
 clang: error: linker command failed with exit code 1 (use -v to see invocation)
80

これは、Parse iOS 1.1.33リリースに関連する何らかのバグです。これは、複数の人が同じエラーを確認しているためです。

回避策がいくつかあります-

-ObjCリンカーフラグを必要とするライブラリを使用していない場合は、プロジェクトから-ObjCを削除できます。

ビルド設定>その他のリンカーフラグ> remove -ObjC

または、そのフラグを必要とするライブラリを使用している場合は、Facebook SDKを追加できます。

どちらのオプションもエラーを排除します。私のアプリにFacebook SDKが必要ないので、うまくいけば彼らはこれを修正します。

ここでの議論に従ってください:

https://parse.com/questions/cocoapods-incompatibility

137
blueHula

FBキットをダウンロード、コンパイル、およびインストールするよりも簡単な回避策は、大きくて扱いにくいものです。もちろん、ParseでFBタイプの機能を使用することはできず、これらのダミーシンボルの使用を想定しているParseコードのいずれかをトリガーすると、重大な問題が発生することに注意してください。しかし、あなたが彼らから離れていれば、あなたは大丈夫だと思います。そう...

  1. FBMissingSymbolsというオブジェクトをアプリケーションに作成します

  2. 不要な.hを削除します

  3. これを.mに入れます。

NSString *FBTokenInformationExpirationDateKey = @"";
NSString *FBTokenInformationTokenKey = @"";
NSString *FBTokenInformationUserFBIDKey = @"";
@interface FBAppCall:NSObject
@end
@implementation FBAppCall
@end
@interface FBRequest:NSObject
@end
@implementation FBRequest
@end
@interface FBSession:NSObject
@end
@implementation FBSession
@end
@interface FBSessionTokenCaching:NSObject
@end
@implementation FBSessionTokenCaching
@end
@interface FBSessionTokenCachingStrategy:NSObject
@end
@implementation FBSessionTokenCachingStrategy
@end
102
dbquarrel

古いParseFacebookUtils.frameworkを削除し、新しいParseFacebookUtilsV4.frameworkを保持して機能させる必要があります。

27

私はdbquarrelの答えが大好きでしたが、新しいソーシャルクラスが不足しているため、もう機能しません。

同じことをしますが、代わりにこれを追加します:

NSString *FBTokenInformationExpirationDateKey = @"";
NSString *FBTokenInformationTokenKey = @"";
NSString *FBTokenInformationUserFBIDKey = @"";
NSString *SLServiceTypeTwitter = @"";
NSString *ACAccountTypeIdentifierTwitter = @"";
@interface FBAppCall:NSObject
@end
@implementation FBAppCall
@end
@interface FBRequest:NSObject
@end
@implementation FBRequest
@end
@interface FBSession:NSObject
@end
@implementation FBSession
@end
@interface FBSessionTokenCaching:NSObject
@end
@implementation FBSessionTokenCaching
@end
@interface FBSessionTokenCachingStrategy:NSObject
@end
@implementation FBSessionTokenCachingStrategy
@end
@interface ACAccountStore:NSObject
@end
@implementation ACAccountStore
@end
@interface SLRequest:NSObject
@end
@implementation SLRequest
@end
@interface SLComposeViewController:NSObject
@end
@implementation SLComposeViewController
@end
23
Nate Lee

「ParseFacebookUtils」フレームワークの2つのバージョンが追加されていないことを確認してください:

ParseFacebookUtilsV4およびParseFacebookUtils

ParseFacebookUtilsを削除してParseFacebookUtilsV4を保持すると、正常に機能しました。

10
ewakened

私のソリューションは間違いなく機能し、他のリンカーフラグで-ObjCを使用できます。

  1. 「Social.framework」、「Account.framework」を追加します
  2. 「FacebookSDK.framework」を追加

乾杯....今では動作します..... -ObjCを削除する必要はありません。

7
Biranchi

「Accounts.Framework」や「Social.Framework」を追加する必要があるかもしれません。

3
Pete

@blueHulaによる回答を補完します。 ParseはフレームワークからFacebook SDKを削除しました。つまり、特定のバージョン(1.1.33など)からparse.frameworkを統合するには、FB SDKを個別に統合する必要があります。

このリンクを参照してください facebook sdkを含めずにios iOS解析を使用

重要な点は、_-all_load_および_-ObjC_を使用するのではなく、-force_load $(SRCROOT)/path/libname.aを使用して必要なサードパーティライブラリとリンクすることです。

2
BabyPanda

2015年で、同じエラーが発生しました。残念ながら、上記の答えはどれもうまくいきませんでした。しかし、これは:

ターゲット>ビルドフェーズ>ライブラリとバイナリをリンクその後libstdc ++。6.dylibを追加

これで問題は解決しました。

1
Alan Scarpa

私は同じ使い方をしており、唯一のサードパーティはPaypal SDKでした。 -ObjCを削除すると、すべてが正常に構築されました。 (設定を変更する前に常にプロジェクトのバックアップを作成します)

1
Marcio Arantes

これはリンカエラーです...含まれているヘッダーファイルの1つで参照しているプロジェクトに、必要なフレームワークが含まれていません。

したがって、たとえば、コードにインクルードがある場合:

#import <Parse/Parse.h>

おそらくサポートフレームワークが必要であり、アプリに含める必要があります。 Xcodeからparse.frameworkを含めましたか?

Xcode Frameworks

1
ryebread

-ObjCフラグをその他のリンクフラグとして設定する必要があるフレームワークは多数ありますが、Parseでは、そうする場合は続行できません。これに対処するには、次のいずれかを実行できます。 -ObjCフラグを必要とするGoogle Maps SDKの例を示しましたが、同じプロジェクトの解析のため、直接使用することはできません。

解決策1-force_loadフラグを使用

-ObjCフラグをその他のリンクフラグとして設定する代わりに、force_loadフラグを使用して特定のフレームワークまたはライブラリをロードします。

-force_load $(SRCROOT)/GoogleMaps.framework/Versions/A/GoogleMaps

ソリューション2-Facebook SDKの使用

Facebook SDKを別のフレームワークとして追加するだけです。これにより、-ObjCフラグを使用できます。また、Accounts.frameworkSocial.frameworkを追加したことを確認してください。 Bolt.frameworkを追加し、Parse blank projectを使用している場合、重複シンボルを処理するにはBolt.framworkを削除します。それでもまだエラーが少ない場合は、アカウントとソーシャルフレームワークを削除して、もう一度追加します(デフォルトの空白のプロジェクトの解析を使用した場合がこれに該当します)。

0
Mrug