我正在开发一款带有Java桌面伴侣的iPhone应用程序,它可以通过网络同步。我想在两个应用程序中嵌入脚本语言,以便最终用户可以编写添加新行为并与对象模型交互的脚本,以便我可以更快地开发一些功能。
对此有任何建议,或者之前是否有人这样做并获得了分享经验?我想的是像过去曾经使用的tcl这样的东西,但不是tcl本身,因为我不是语言的忠实粉丝。
主要标准是
我最初的预感是我应该使用python,ruby或lua中的一个。我的偏好是红宝石,因为我已经有了一些经验,并且对其他人不太了解。然而,我最主要的未知是哪些最容易与iPhone和Java集成。
编辑2:根据Jason Coco的评论,SDK条款禁止使用嵌入式脚本语言。检查它确实似乎,但我读它只是为了排除动态安装和扩展。我仍然会对这里的答案感兴趣,因为协议似乎并没有排除在应用程序包本身内部预先打包的脚本 - Apple仍然可以审查该代码。
该协议似乎也允许使用苹果“口译员”......这些是什么? Javascript还有什么?在这里使用这些的路线?
答案 0 :(得分:2)
的JavaScript
据我了解iPhone SDK许可证,没有什么可以阻止您在应用程序中使用脚本语言 - 只是您无法安装自己的任何解释器或运行时。您只能使用Apple在SDK中提供解释器的那些脚本语言。
鉴于您希望在iPhone应用程序和Java应用程序中运行相同的脚本,显而易见的选择是JavaScript。您可以在iPhone应用程序中使用Apple的API,以及Java应用程序中的Rhino(http://www.mozilla.org/rhino/)。
你必须要知道,在语法或对象模型这些比较模糊的区域中,两个解释器之间可能会略有不同。
P.S。我假设用户将编写自己的脚本以在自己的设备/桌面上运行。这些将成为应用程序数据的一部分,在Apple的许可下
应该没问题答案 1 :(得分:1)
我见过的唯一允许非目标c / c / c ++应用程序在iPhone上运行的是Unity3d(http://unity3d.com/unity/features/iphone-publishing) - 但是,它通过Mono使用C#并完全静态汇编(http://tirania.org/blog/archive/2008/Nov-05.html)直到本机代码才能执行此操作。因此,当应用程序在手机上时,它不再是C#所以Apple允许它(并且有几个应用程序已经进入App Store - 所以这似乎是可以接受的)。
即使您可以使用Java / Ruby / Lua / Python /其他功能(因此让您的桌面应用程序预编译并上传),我认为您无法实现您正在谈论的想法。设备的本机代码)。据我所知,你不能在你的应用程序包之外执行代码...如果你修改了应用程序包,那么你就无效了Apple所做的代码签名,它允许应用程序首先在你的手机上运行。因此,即使你可以获得手机的可执行代码,我也不确定如果它首先没有附带应用程序就可以运行它。
答案 2 :(得分:1)
我也正在研究这个问题,似乎可以预编译一个Lua脚本(通过使用Lua将其转换为C然后编译C文件)。因为所有代码都可以成为应用程序包的一部分(包括嵌入式Lua解释器),所以 可以作为iPhone应用程序接受。
请参阅此处以获取讨论和示例脚本: http://lua-users.org/lists/lua-l/2008-11/msg00453.html
*请注意,我还没有尝试过这个(还)