iOS解析:尝试运行应用程序时出错
我一直在使用Parse SDK,并遵循quickstep指南。当我尝试运行时,我会出现以下8个错误。你知道为什么吗?这看起来和我没有使用的Parse的Facebook部分有关iOS解析:尝试运行应用程序时出错,ios,parse-platform,Ios,Parse Platform,我一直在使用Parse SDK,并遵循quickstep指南。当我尝试运行时,我会出现以下8个错误。你知道为什么吗?这看起来和我没有使用的Parse的Facebook部分有关 Undefined symbols for architecture armv7: "_FBTokenInformationTokenKey", referenced from: -[PFFacebookTokenCachingStrategy accessToken] in Parse(PFFacebookToke
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)
这是一个链接器错误。。。您没有在项目中包含所需的框架,您正在其中一个包含的头文件中引用该框架 例如,如果您的代码中有一个include:
#import <Parse/Parse.h>
#导入
它可能需要一个支持框架,您必须将其包含在应用程序中。您是否在Xcode中包含了parse.framework
听起来您可能需要添加“Accounts.Framework”和/或“Social.Framework”。这是与Parse iOS 1.1.33版本相关的某种错误,因为多人看到了相同的错误-包括我自己 有几个变通办法- 如果您没有使用需要-ObjC链接器标志的库,则可以从项目中删除-ObjC: 生成设置>其他链接器标志>删除-ObjC 或者,如果您正在使用需要该标志的库,则可以添加Facebook SDK 这两个选项都将消除错误。希望他们能解决这个问题,因为我的应用程序中不需要Facebook SDK 请遵循此处的讨论:
我也有同样的用途,我唯一拥有的第三方是PayPal SDK。移除-ObjC后,一切都很好。(在更改设置之前,请始终备份您的项目)这是对@blueHula回答的补充。 Parse已经将Facebook SDK从其框架中删除,这意味着从某些特定版本(可能是1.1.33)中,集成Parse.framework应该伴随着独立集成FB SDK 请参考此链接
关键点是使用
-force_load$(SRCROOT)/path/libname.a
链接必要的第三方库,而不是使用-all_load
和-ObjC
这里有一个可能比下载、编译和安装FB工具包更简单的解决方法,因为FB工具包有点大且麻烦。请注意,当然,您将无法在Parse中使用任何FB类型的功能,如果您触发任何预期使用这些伪符号的解析代码,您将遇到严重的问题。但是,如果你远离他们,我想你会没事的。所以
NSString*FBTokenInformationExpirationDateKey=@”;
NSString*FBTokenInformationTokenKey=@;
NSString*FBTokenInformationUserFBIDKey=@”;
@接口FBAppCall:NSObject
@结束
@FBAppCall的实现
@结束
@接口请求:NSObject
@结束
@执行请求
@结束
@接口会话:NSObject
@结束
@执行会议
@结束
@接口FBSessionTokenCaching:NSObject
@结束
@FBSessionTokenCaching的实现
@结束
@接口FBSessionTokenCachingStrategy:NSObject
@结束
@实施FBSessionTokenCachingStrategy
@结束
这个问题困扰了我好几天。我用cocoapods来管理所有的SDK
下面是我如何解决这个问题的。转到pod项目并将项目“仅构建架构”设置为否
重建pod项目,然后链接错误消失!帮助这可以帮助正在使用Cocoapod的人。我也有同样的问题。我通过从这里下载以前的版本(1.1.32)解决了这个问题: (在我的例子中,我需要-ObjC标志)
编辑:该版本似乎不适用于64位体系结构。我喜欢DbFrast的答案,但它不再适用,因为它缺少一些新的社会阶层 因此,做同样的事情,但要添加以下内容:
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
我的解决方案肯定会起作用,您可以在其他链接器标志中使用-ObjC
干杯……现在它工作了。。。。。并且不需要删除-ObjC。这可以从位于中的项目文件中删除
/cordova//platforms/ios/.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",
);
有许多框架需要将-ObjC标志设置为其他链接标志,而如果您这样做,则Parse不允许您继续。为了解决这个问题,你可以做以下事情之一。我已经展示了需要-ObjC标志的Google Maps SDK示例,但由于在同一项目中解析,我无法直接使用它: 解决方案1-使用强制加载标志 不要将-ObjC标志设置为其他链接标志,而是使用force_load标志来加载特定的框架或库
-force_load $(SRCROOT)/GoogleMaps.framework/Versions/A/GoogleMaps
解决方案2-使用Facebook SDK
只需添加FacebookSDK作为一个单独的框架,这将允许您使用-ObjC标志。还要确保您已经添加了Accounts.framework
和Social.framework
。如果您添加了Bolt.framework并使用Parse blank项目,则要处理重复符号,请删除Bolt.framwork
。
如果仍然有一些错误,那么删除Accounts和Social framework并再次添加它(如果使用了Parse default blank project,则会出现这种情况) ParseFacebookUtilsV4 和 ParseFacebookUtils
一旦我删除了ParseFacebookUtils并保留了ParseFacebookUtilsV4,它就可以正常工作。安装cocoaPods并将其添加到您的pod文件中:
pod 'Facebook-iOS-SDK'
pod 'Parse'
pod 'ParseFacebookUtils'
2015年,我也犯了同样的错误。不幸的是,上述答案对我都不起作用。但这确实: 目标>构建阶段>链接二进制Wi