使用 PayPal 移动 SDK 的 iOS 构建错误

Posted

技术标签:

【中文标题】使用 PayPal 移动 SDK 的 iOS 构建错误【英文标题】:iOS Build Error Using PayPal Mobile SDK 【发布时间】:2016-07-16 00:30:10 【问题描述】:

我有一个 ios 应用程序,它直接引用 AWS Mobile 框架和使用 CocoaPods 的几个其他库。该项目构建良好,我能够毫无问题地连接到 AWS。

但是,当我将“PayPal-iOS-SDK”添加为附加库以在 PodFile 中引用并运行 pod install 时,我收到了几个构建/链接器错误:

 Undefined symbols for architecture x86_64:
  "_AWSSNSErrorDomain", referenced from:
  ___88-[AWSPushManager interceptApplication:didRegisterForRemoteNotificationsWithDeviceToken:]_block_invoke239 in AWSMobileHubHelper(AWSPushManager.o)
  "_OBJC_CLASS_$_AWSLambdaInvoker", referenced from:
  objc-class-ref in AWSMobileHubHelper(AWSCloudLogic.o)
  "_OBJC_CLASS_$_AWSSNS", referenced from:
  objc-class-ref in AWSMobileHubHelper(AWSPushManager.o)
  "_OBJC_CLASS_$_AWSSNSCreatePlatformEndpointInput", referenced from:
  objc-class-ref in AWSMobileHubHelper(AWSPushManager.o)
  "_OBJC_CLASS_$_AWSSNSGetEndpointAttributesInput", referenced from:
  objc-class-ref in AWSMobileHubHelper(AWSPushManager.o)
  "_OBJC_CLASS_$_AWSSNSSetEndpointAttributesInput", referenced from:
  objc-class-ref in AWSMobileHubHelper(AWSPushManager.o)
  "_OBJC_CLASS_$_AWSSNSSubscribeInput", referenced from:
  objc-class-ref in AWSMobileHubHelper(AWSPushManager.o)
  "_OBJC_CLASS_$_AWSSNSUnsubscribeInput", referenced from:
  objc-class-ref in AWSMobileHubHelper(AWSPushManager.o)
  "_OBJC_CLASS_$_GIDSignIn", referenced from:
  objc-class-ref in AWSMobileHubHelper(AWSGoogleSignInProvider.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果我从 Other Linker Flags 构建设置中删除 -ObjC 标志,我可以构建但无法引用 PayPal 框架,因为它取决于此设置。

我也尝试过使用 -force_load 而不是 -ObjC 但也没有成功构建它。

我考虑通过直接引用而不是使用 CocoaPods 来集成 PayPal,但这种类型的集成仍然需要 -ObjC 标志,这会导致与上述相同的错误。

关于在与 PayPal iOS 开发工具包相同的项目中使用 AWS 移动开发工具包有什么想法吗?

【问题讨论】:

您好,您能分享一下您尝试过的 force_load 设置吗?你设置 force_load 的目标是什么? 我在进行故障排除时一定还做了一些其他更改,这些更改干扰了 force_load 设置。我恢复了所有更改并添加了以下内容:-force_load $(SRCROOT)/Pods/PayPal-iOS-SDK/Core/Frameworks/libPayPalMobile.a 现在它正在构建! 太棒了!很高兴听到你成功了! 感谢您让我再试一次! 【参考方案1】:

删除 -ObjC 其他链接器标志并添加以下其他链接器标志:

-force_load $(SRCROOT)/Pods/PayPal-iOS-SDK/Core/Frameworks/libPayPalMobile.a

【讨论】:

在我们自己的项目链接器标志Pod项目链接器标志?

以上是关于使用 PayPal 移动 SDK 的 iOS 构建错误的主要内容,如果未能解决你的问题,请参考以下文章

在我的iOS应用中添加PayPal Pod后获取UIWebview api弃用消息

iOS Paypal 移动 SDK - 支付证明

PayPal iOS sdk - 从移动设备进行单次付款后,我应该从服务器上的 Ruby sdk 进行哪些调用?

使用 PayPal iOS SDK 支付多个项目

用于 Paypal 令牌的 Paypal iOS SDK

PayPal 移动 SDK,链式支付