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


80

私はParseSDKを使用しており、クイックステップガイドに従いました。実行しようとすると、これらの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)

ターゲットに.mファイルを追加する必要があるようです:stackoverflow.com/a/5300901/620197
Mike D

2
これらの2つのフラグ-ObjCと-all_loadのいずれかが存在する場合、Facebook SDKが存在/インストールされている必要があるように聞こえます...または、本当に必要ない場合はこれらのフラグを削除できますが、restKitにはそれらが必要だと思います。したがって、私はそれらが必要です。parse.com/questions/...
topwik

Bolt.frameworkとfacebook.frameworkを-objcflag.itsで追加するだけでうまくいきます。
Shauket Sheikh 2015

ld:フレームワークが見つかりませんアーキテクチャarmv7のメタルclang:エラー:リンカーコマンドが終了コード1で失敗しました(呼び出しを確認するには-vを使用)
sanjeev sharma 2015

回答:


137

これは、Parse iOS 1.1.33リリースに関連するある種のバグであり、複数の人が同じエラーを確認しています。私も含まれています。

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

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

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

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

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

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

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


-ObjCを削除しても、修正されませんでした。ただし、以下のdbquarrelの応答はそうでした。
シム2014年

2
-all_loadリンカーフラグを削除して修正したので、そのフラグCも含めるように回答を更新できます
。– A'sa Dickens 2014

1
以前に「-all_load」を使用していたその他のリンカーフラグでは、「pod install」から、「その他のリンカーフラグ」を「$(inherited)」に設定することを提案しましたが、問題なく機能しました。
ターボ

FacebookSDKをXcode6.2(iOS 8)に追加する場所と方法を教えてください。私はdevelopers.facebook.com/docs/iosを持っています、Facebook.pkgをインストールた後、FacebookSDK.frameworkファイルが見つからず、他の不要なファイルがあります。
Incpetor 2015

-ObjCリンカースイッチを削除すると問題が発生します。libCordova.aライブラリは、-ObjCが削除された場合にロードされないNSStringのいくつかのカテゴリを指定します。回避策は、リンクされたフレームワークからlibCordova.aを削除し、これを他のリンカーフラグビルド設定に追加することです。-force_load$(BUILT_PRODUCTS_DIR)/libCordova.a
Nijil Nair

102

これは、大きくて面倒な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

6
私の問題を解決しました。おかげで、1
アリSufyan

2
速くて簡単!ありがとう。1
デビッド・ダ・シルバコンチン

1
ありがとう@ dbquarrel、+ 1
iBhavik 2014年

2
これは魔法の解決策です。アプリにFBを統合したくない場合は、それを選択してください。
バーラト2014年

1
最も簡単な解決策:
Muzammil 2014

27

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


3
このスレッドをスクロールしてください。これが正解です。/ \
ラファエルオリベイラ

これが私にとってそれを修正したものです!ParseのWebサイトへの開発者のコ​​メントやここでの他の回答はどれも機能しませんでした...できれば+9000!
WendiKidd 2015年

簡単で完璧。ありがとう!
ラピダス2015

うん…これだ。この古いバストされたライブラリがまだParseSDKに付属しているのはなぜですか?これはそれほど複雑であってはなりません。
thefaj 2015年

23

私は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

3
これを更新していただきありがとうございます!
sridvijay 2014

アプリケーションで「FBMissingSymbols.hを削除する」というオブジェクトを作成し(必要ないため)、上記を入力しますFBMissingSymbols.m
Nate Lee

この新しい.mファイルを#import <Foundation/Foundation.h>一番上に含める必要はありませんか?
AdamT 2015

10

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

ParseFacebookUtilsV4およびParseFacebookUtils

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


これはまさに問題でした。削除すると、9つのエラーがすべてなくなりました。ありがとう
Nick89 2016年

7

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

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

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


これは本当にシンプルで素晴らしい答えです。しかし、私の場合、Facebook.frameworkを追加しなかったのに、エラーなしでアプリがビルドされただけです。しかしとにかく、単純な解決策のために+1。
hp iOS Coder 2015年

私にとっては、「Social.framework」、「Account.framework」を追加するだけでした。おかげで、魅力のように機能します:)
evya 2015

3

「Accounts.Framework」や「Social.Framework」を追加する必要があるようです。


2

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

Facebook sdkを含めずに、parse iossdkを使用してこのリンク参照してください

重要な点は、使用することです-force_load $(SRCROOT)/path/libname.aむしろ使用するよりも、必要なサードパーティのライブラリとリンクする-all_loadと、-ObjC


1

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

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

#import <Parse/Parse.h>

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

Xcodeフレームワーク


1

私も同じように使用し、サードパーティはPayPalSDKだけでした。-ObjCを削除した後、すべてが正常に構築されました。(設定を変更する前に、必ずプロジェクトのバックアップを作成してください)


1

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

ターゲット>ビルドフェーズ>バイナリとライブラリをリンクしてから libstdc ++。6.dylibを追加します

これは私にとって問題を解決しました。


問題の一部を修正しているようです
SKYnine 2015

0

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

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

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

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

解決策2-FacebookSDKを使用する

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


-1

私は何日もこの問題に悩まされていました。私はココアポッドを使用して、3番目のSDKをすべて管理しました。

これが私がこの問題を解決した方法です。ポッドプロジェクトに移動し、「アーキテクチャのみをビルドする」項目を「いいえ」に設定します。

ポッドプロジェクトを再構築すると、リンクエラーがなくなります。これがココアポッドを使用している人を助けることができるのを助けてください。ここに画像の説明を入力してください



-1

これは、<projectname>/cordova/<projectname>/platforms/ios/<projectname>.xcodeproj/project.pbxprojおよびにあるプロジェクトファイルから削除できます。

ファイルを検索してください-ObjC。複数の場所があります。次のようになります。

OTHER_LDFLAGS = (
    "-weak_framework",
    CoreFoundation,
    "-weak_framework",
    UIKit,
    "-weak_framework",
    AVFoundation,
    "-weak_framework",
    CoreMedia,
    "-weak-lSystem",
    "-force_load",
    "\"$(BUILT_PRODUCTS_DIR)/libCordova.a\"",
    "-ObjC",
);

-1

cocoaPodsをインストールし、これをPodfileに追加します。

pod 'Facebook-iOS-SDK'
pod 'Parse'
pod 'ParseFacebookUtils'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.