【问题标题】:AFNetworking-2 with Trigger.ioAFNetworking-2 与 Trigger.io
【发布时间】:2014-05-01 16:37:06
【问题描述】:

我正在构建一个 trigger.io 原生模块,并通过手动将头文件和实现文件添加到 ForgeModule 项目中来包含 AFNetworking 2.0 框架。

AFNetworking 2.0 indicates ios 6.0+ 的目标要求。

在 xcode 中,我已将 UniversalForgeModule 的部署目标更改为 6.0

然而,在我的应用程序中包含这个新打包的本机模块后,我在构建它时收到以下错误:

Ld build/Release-iphonesimulator/ForgeInspector.app/Forge normal i386
    cd /var/folders/xw/34h86n3d5p54qpq1wfc8ff600000b1/T/tmp5z_JZJ/ios/app
    setenv IPHONEOS_DEPLOYMENT_TARGET 5.0.1

...

   Undefined symbols for architecture i386:
  _UTTypeCopyPreferredTagWithClass", referenced from:
      -[AFStreamingMultipartFormData appendPartWithFileURL:name:error:] in frisbees.a(AFURLRequestSerialization.o)
  "_UTTypeCreatePreferredIdentifierForTag", referenced from:
      -[AFStreamingMultipartFormData appendPartWithFileURL:name:error:] in frisbees.a(AFURLRequestSerialization.o)
  "_kUTTagClassFilenameExtension", referenced from:
      -[AFStreamingMultipartFormData appendPartWithFileURL:name:error:] in frisbees.a(AFURLRequestSerialization.o)
  "_kUTTagClassMIMEType", referenced from:
      -[AFStreamingMultipartFormData appendPartWithFileURL:name:error:] in frisbees.a(AFURLRequestSerialization.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** BUILD FAILED **


The following build commands failed:
  Ld build/Release-iphonesimulator/ForgeInspector.app/Forge normal i386
(1 failure)

看起来我的构建目标仍然是5.0.1。我该如何改变呢?

完整日志可用here

谢谢!

【问题讨论】:

    标签: trigger.io afnetworking-2


    【解决方案1】:

    AFNetworking 2.0 似乎引用了 Apple 框架:MobileCoreServices.framework。

    要将 Apple 框架包含到您的模块中,您需要通过添加 add_ios_system_framework 构建步骤来 Change build configuration

    步骤:

    1. build_steps.json 文件添加到模块目录中的ios 文件夹中。
    2. 将以下内容添加到文件中:

      [ 
        {
          "do": {
            "add_ios_system_framework": {
                "framework": "MobileCoreServices.framework"
             }
           }
        }
      ]
      
    3. 更新您的检查器项目,以便将新添加的构建步骤应用于您的项目。

    【讨论】:

    • 谢谢克莱夫!不幸的是,当我包含它时,我收到重复的符号错误,我相信这表明它已经存在。我浏览了我的其他模块,但没有找到它。你不觉得这个错误和部署目标ios版本有关吗?
    • 您是否在您的应用中启用了 forge.request 模块? Forge.request 还使用了 AFNetworking,这可能是符号冲突的原因,因为我们仍然没有找到一个好的解决方案来处理仅支持静态链接的 iOS。否则,您能否详细说明重复符号错误?
    • 奇怪的是,我只在包含 MobileCoreServices 时才看到那些重复的符号,而不是在包含 AFNetworking 库时。上面的完整日志在我的初始帖子中。
    • 我做了一个快速的峰值,并成功地将 AFNetworking 合并到 trigger.io 的本机模块中。在运行 ForgeInspector 项目时,我还能够在 iOS 模拟器上成功调用我的 API 方法。除了回答步骤之外,我还必须添加一个额外的构建步骤:add_ios_system_framework 以包含框架 Security.framework,并且必须将 ForgeModule 的 iOS Deployment Target 更新为 iOS 6.0
    猜你喜欢
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 2013-07-13
    • 2014-04-14
    • 2014-03-31
    相关资源
    最近更新 更多