【问题标题】:Using the Parse iOS SDK with RubyMotion将 Parse iOS SDK 与 RubyMotion 一起使用
【发布时间】:2012-05-04 15:37:05
【问题描述】:

RubyMotion 提供了这些关于出售第 3 方代码的说明:http://www.rubymotion.com/developer-center/guides/project-management/#_files_dependencies

我正在尝试添加 Parse.com 的 iOS SDK。这些是将其添加到 XCode 项目的说明:https://parse.com/apps/quickstart#ios/existing。但是,我没有使用 XCode,因为我正在使用 RubyMotion。

我在这里记录了我的尝试:https://github.com/adelevie/RubyMotionSamples/commit/603bf4428995bb203cce7e7e8e6989d6e86bda3b

这是我得到的错误:https://gist.github.com/2595284

【问题讨论】:

    标签: ruby xcode parse-platform rubymotion


    【解决方案1】:

    我相信我们实际上在这里处理的是一个静态库,所以我认为您应该指定 :static 而不是 :Xcode 作为第二个选项。

    使用 Rakefile 中的以下代码,应用程序编译:

        app.libs << '/usr/lib/libz.1.1.3.dylib'
        app.frameworks += [
            'AudioToolbox',
            'CFNetwork',
            'SystemConfiguration',
            'MobileCoreServices',
            'Security',
            'QuartzCore']
    
        app.vendor_project('vendor/Parse.framework', :static,
            :products => ['Parse'],
            :headers_dir => 'Heiders')
    

    但是,我在运行 Parse setApplicationId 方法时遇到以下错误:

    (main)>> Objective-C stub for message `setApplicationId:clientKey:' type `v@:@@' not precompiled. Make sure you properly link with the framework or library that defines this message.
    

    【讨论】:

    • 我从来没有得到它。你看过我贴的要点了吗?
    • 是的,我做到了。这是 AppDelegate 中应用程序方法的唯一内容?
    • 该要点在 REPL 中运行并且运行良好。我在 app_delegate.rb 中得到了这个工作:gist.github.com/2597444 出于某种原因,调用 #save 会抛出 Objective-C stub for message save' 类型 c@:' not precompiled. Make sure you properly link with the framework or library that defines this message. 所以解决方案是调用 #saveEventually ,它工作正常。我是 iOS 新手,所以我可能有错误的想法。
    • 我想我已经弄明白了:如果我只是 setApplicationId,但稍后不在应用程序中调用任何方法,我会收到该错误。如果我创建一个虚拟 PFObject,而无需保存它,我就避免了该错误。很奇怪,但它有效。
    • 这对我不起作用。运行 rake 时出现以下错误:体系结构 i386 的未定义符号:“_OBJC_CLASS_$_SKPaymentQueue”,引用自:解析中的 objc-class-ref(PFPurchase.o) 解析中的 objc-class-ref(PFPaymentTransactionObserver.o)“_OBJC_CLASS_$ _SKPayment”,引用自:Parse(PFPurchase.o) 中的 objc-class-ref “_OBJC_CLASS_$_SKProductsRequest”,引用自:Parse(PFPurchase.o) 中的 objc-class-ref ld:未找到架构 i386 的符号clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
    【解决方案2】:

    链接的文档说:“要在 RubyMotion 项目中提供第 3 方库,源代码必须在文件系统的某个位置可用。”所以我不认为将 .framework 文件放在那里会起作用。

    您可以尝试从 parse.com/docs 下载名为“Blank Xcode w/ SDK”的 ParseStartProject。如果您提供该项目文件夹,RubyMotion 将能够找到它正在寻找的 xcode 项目。当然,您需要从 xcode 项目中删除 .m 和 .h 文件,因为您只希望项目包含 Parse.framework。

    我还没有真正尝试过这个。如果您能正常工作,请告诉我们。

    【讨论】:

    【解决方案3】:

    好的,这是从 RubyMotion 组的答案中复制的。它似乎修复了存根错误消息:

    现在,为了完成这项工作,我修改了 /Library/RubyMotion/lib/motion/project/vendor.rb 并将第 38 行的 Dir.glob 更改为:

    source_files = (opts.delete(:source_files) or Dir.glob('*. 
    {c,m,cpp,cxx,mm,h}')) 
    

    到:

    source_files = (opts.delete(:source_files) or Dir.glob('**/*. 
    {c,m,cpp,cxx,mm,h}'))
    

    http://groups.google.com/group/rubymotion/msg/0efa74214523d0f5

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多