Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS解析:尝试运行应用程序时出错_Ios_Parse Platform - Fatal编程技术网

iOS解析:尝试运行应用程序时出错

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

我一直在使用Parse SDK,并遵循quickstep指南。当我尝试运行时,我会出现以下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)

这是一个链接器错误。。。您没有在项目中包含所需的框架,您正在其中一个包含的头文件中引用该框架

例如,如果您的代码中有一个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类型的功能,如果您触发任何预期使用这些伪符号的解析代码,您将遇到严重的问题。但是,如果你远离他们,我想你会没事的。所以


  • 在应用程序中创建名为FBMissingSymbols的对象

  • 删除.h,您将不需要它

  • 把这个放在。m:

  • 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

  • 增加“社会框架”、“账户框架”
  • 添加“FacebookSDK.framework”

  • 干杯……现在它工作了。。。。。并且不需要删除-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