参考在Android中使用javax.script.ScriptEngine或者评估JavaScript表达式。

8

在开发Android应用程序时,是否可以引用javax.script.ScriptEngine库?如果不行,是否有任何方式可以在Android中评估JavaScript表达式?

4个回答

8
对于javax.script.ScriptEngine、javax.script.ScriptEngineFactory等类,您可以将jsr223.jar添加到Android项目中:只需将.jar文件复制到libs目录中,并从Properties->Java Build Path中添加它。
这些类将允许您的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

你能发布一个示例应用程序吗? - Hugo Gresse

5

javax.script.ScriptEngine不是Android的默认部分,但是您可以轻松地将任何需要的库打包成JAR文件(假设大小合理,我不确定),并将它们包含在您的项目中。


4
根据这篇帖子,Android SDK中没有javax.script.ScriptEngine。您可以尝试以下步骤来包含该库,但即使编译通过,代码也可能无法运行。

在Windows中使用Android开发工具包,我执行了以下步骤来获取javax.script库。

  1. 右键单击项目,转到属性(项目)。
  2. 在Java构建路径下,选择“库”选项卡。
  3. 选择位于选项卡中央右侧的“添加库”。
  4. 选择“添加库”下的JRE系统库并单击“下一步...”。
  5. 选择工作区默认JRE(jre 7)。
  6. 单击“完成”。
  7. 单击Java构建路径上的“确定”退出项目属性。

然后加载了javax.script。


3

如果你想在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应用程序中运行(包括函数等)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接