【发布时间】:2011-11-05 23:02:03
【问题描述】:
我有一个 Android 应用程序,用户应该可以使用脚本对其进行扩展。无论如何,这就是计划。用户可以编写脚本,这些脚本保存在闪存上的文件夹中,并从应用程序的菜单中访问。根据应用程序中的某些事件加载和调用脚本。应用程序会将辅助方法和对象公开到脚本的上下文中,以便它可以以受控方式挖掘应用程序中的功能。
因此我的要求是:
- 低磁盘/内存占用
- 快速启动
- Android 兼容
- 合理的解析/错误报告
- 简单、合理的语法最好是流行语言的方言,例如基础、JS、Python 等。
- 语言必须支持数组、关联数组、双精度浮点数、字符串操作。它不需要网络访问或其他任何东西。
- 脚本的干净加载和卸载
- 适应事件驱动模型的东西
- 安全/沙盒模型,可防止脚本执行超出我向它们公开的 API 的操作
- 超时/错误处理,因此我可以终止耗时过长或陷入循环的脚本(因此人们不会因为脚本的错误而降低我的应用程序的排名)。
我看过 Rhino 和 Jython 之类的工具,我觉得它们会给我的目的带来太大的开销。我还怀疑它们可能很难融入我想到的有限安全模型(例如,Rhino 默认公开所有 Java 类,这必须被破解)。
人们会给出什么建议?
【问题讨论】: