在 iPhone OS 应用程序中使用 Ruby/Python 代码?
Posted
技术标签:
【中文标题】在 iPhone OS 应用程序中使用 Ruby/Python 代码?【英文标题】:Using Ruby/Python code in an iPhone OS app? 【发布时间】:2010-04-23 21:56:54 【问题描述】:我的应用需要使用仅适用于 Python 和 Ruby 的库。据我了解,只要用户不能执行任意代码,Apple 就允许 Ruby 在 iPhone 上运行(Rhomobile 使用 Ruby)。
如何将 Ruby/Python 与我的应用程序捆绑在一起,从我的 Obj-C 代码中调用一个函数,并以 C 或 Obj-C 格式获取结果(字符串)?
【问题讨论】:
【参考方案1】:你不能。新的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。我怀疑它会运行真正的库。
【讨论】:
我愿意在苹果公司冒险;我想他们会让我通过。有谁知道怎么做? 是的,我期待这个评论。我意识到这无论如何都不理想,但确实没有 C/C++/ObjC 替代方案(缺少在服务器上进行处理并将结果发送回,这需要网络连接)。如果将来出现问题,应用程序会优雅地降级,但唯一真正的选择是用 C 重写库,这是一个非常痛苦的选择(至少对于像我这样没有经验的程序员来说),我至少想试试这个先走路线。 根据更新的答案,尝试 rhomobile 或 tinypy,看看是否可行。不过,我怀疑 tinypy 会做你想做的事,或者 rhomobile 会通过应用商店获得。 仅供参考,App Store 上有许多基于 Rhodes 的应用程序,包括 Wikipedia、MyHumana、RhoLogic for SugarCRM、Multilingual、TrackR 等等。许多人都在rhomobile.com。我们经常与 Apple 交谈,并采取措施确保持续遵守所有 ios 服务条款。【参考方案2】:仅供参考,App Store 上有许多基于 Rhomobile Rhodes 的应用程序,包括 Wikipedia、MyHumana、RhoLogic for SugarCRM、Multilingual、TrackR 等等。许多人都在http://rhomobile.com。我们经常与 Apple 沟通,并采取措施确保持续遵守所有 iOS 服务条款。
严格来说,最终原生应用附带的不是解释器,而是(在除 BlackBerry 之外的所有平台上)Ruby 1.9 字节码执行器。并且故意禁用真正的解释(eval)。
【讨论】:
以上是关于在 iPhone OS 应用程序中使用 Ruby/Python 代码?的主要内容,如果未能解决你的问题,请参考以下文章
iPhone 应用程序在 OS 3.1 不在模拟器中的设备上崩溃
如何提交在iPhone OS 3和iPhone SDK 4上运行的应用程序版本?
如何提交在 iPhone OS 3 和 iPhone SDK 4 上运行的应用程序版本?
如何在 OS X 上的 iPhone 4 模拟器中测试我的应用程序?