【发布时间】:2010-04-23 21:56:54
【问题描述】:
我的应用需要使用仅适用于 Python 和 Ruby 的库。据我了解,只要用户不能执行任意代码,Apple 就允许 Ruby 在 iPhone 上运行(Rhomobile 使用 Ruby)。
如何将 Ruby/Python 与我的应用程序捆绑在一起,从我的 Obj-C 代码中调用一个函数,并以 C 或 Obj-C 格式获取结果(字符串)?
【问题讨论】:
我的应用需要使用仅适用于 Python 和 Ruby 的库。据我了解,只要用户不能执行任意代码,Apple 就允许 Ruby 在 iPhone 上运行(Rhomobile 使用 Ruby)。
如何将 Ruby/Python 与我的应用程序捆绑在一起,从我的 Obj-C 代码中调用一个函数,并以 C 或 Obj-C 格式获取结果(字符串)?
【问题讨论】:
你不能。新的SDK协议prohibits using original languages other than C, C++, or Objective-C,SDK协议一直禁止动态解释代码。这些规则将如何执行存在一些歧义,但为了安全起见,最好在解决问题之前避免使用其他语言。
编辑:此外,据我所知,目前没有在 iPhone 上运行 Python 的技术方法,如 this question。我听说过在 iPhone 应用程序中嵌入 Lua,但不是 Python。你可以做Python with a jailbroken iPhone,但不能通过应用商店。
Ruby 的情况几乎和this question 一样糟糕。 iPhone 没有附带 Ruby 解释器,compilers 离工作还有很长的路要走。 Rhomobile 的工作方式是将解释器和框架与可执行文件打包在一起,我非常怀疑它能否通过新的 SDK 协议。如果你真的想使用 Ruby,Rhomobile 可能是最好的选择(因为实现你自己的解释器可能需要做很多工作,而且同样不太可能被批准)。目前这是一个相当令人沮丧的情况——我们最多希望的是 MacRuby 最终会工作,并且苹果会批准它。不过,这还有很长的路要走。
编辑 2: 我还刚刚发现了 tinypy,它可能适用于 Python。我怀疑它会运行真正的库。
【讨论】:
仅供参考,App Store 上有许多基于 Rhomobile Rhodes 的应用程序,包括 Wikipedia、MyHumana、RhoLogic for SugarCRM、Multilingual、TrackR 等等。许多人都在http://rhomobile.com。我们经常与 Apple 沟通,并采取措施确保持续遵守所有 iOS 服务条款。
严格来说,最终原生应用附带的不是解释器,而是(在除 BlackBerry 之外的所有平台上)Ruby 1.9 字节码执行器。并且故意禁用真正的解释(eval)。
【讨论】: