开发android应用程序时是否可以引用javax.script.ScriptEngine库?如果没有,是否有可能在 android 中评估 javascript 表达式?
4 回答
对于 javax.script.ScriptEngine、javax.script.ScriptEngineFactory 等类,您可以将 jsr223.jar 添加到您的 Android 项目中:只需将 .jar 文件复制到您的 libs 目录,然后从 Properties->Java Build 添加它小路。
这些类将允许您的 JSR 223 兼容引擎进行编译。然后你可以做new SomeScriptEngienFactory().getScriptEngine()
一个引擎。我已经设法用 JNLua 1.0.4 和 Rhino 1.7R2 做到了这一点。
jsr223.jar 文件可以从http://www.java2s.com/Code/Jar/j/Downloadjsr223jar.htm下载,直接链接是http://www.java2s.com/Code/JarDownload/jsr223/jsr223 .jar.zip。
javax.script.ScriptEngine 不是 android 的默认部分,但您可以轻松地创建所需的任何库(假设大小合理,我不确定)并将它们包含在您的项目中。
根据这篇文章,javax.script.ScriptEngine 在 Android SDK 中不可用。您可以尝试以下步骤来包含该库,但代码可能无法运行,即使它会编译。
在 Windows 中使用 Android Development Toolkit,我执行了以下步骤来获取 javax.script 库。
- 右键单击项目,转到属性(Project)。
- 在 Java Build Path 下,我选择了 Libraries 选项卡。
- 选择位于选项卡中间右侧的添加库
- 在添加库下选择 JRE 系统库,然后单击下一步...
- 选择工作区默认 JRE (jre 7)
- 单击完成。
- 单击 Java Build Path 上的 Ok 以存在项目属性。
然后加载 Javax.script。
如果你想在 android 中评估一些 JS 中的代码
1)在你的 gradle 依赖项中添加(rhino):
compile 'org.mozilla:rhino:1.7R4'
2)写一些这样的代码来获得JS评估的结果
Context rhino = Context.enter()
// turn off optimization to work with android
rhino.optimizationLevel = -1
String evaluation = "2+2"
try {
ScriptableProject scope = rhino.initStandardObjects()
String result = rhino.evaluateString(scope, evaluation, "JavaScript", 1, null).toString()
} finally {
Context.exit()
}
3)您可以在 JS 中编写更复杂的脚本以在 android 应用程序中运行(函数等)