【发布时间】:2010-11-30 01:52:55
【问题描述】:
在开发安卓应用时是否可以引用 javax.script.ScriptEngine 库? 如果没有,是否有可能在 android 中评估 javascript 表达式?
【问题讨论】:
标签: javascript android scriptengine
在开发安卓应用时是否可以引用 javax.script.ScriptEngine 库? 如果没有,是否有可能在 android 中评估 javascript 表达式?
【问题讨论】:
标签: javascript android scriptengine
对于 javax.script.ScriptEngine、javax.script.ScriptEngineFactory 等类,您可以将 jsr223.jar 添加到您的 Android 项目:只需将 .jar 文件复制到您的 libs 目录,然后从 Properties- 添加它>Java 构建路径。
这些类将允许您的 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 的默认部分,但您可以轻松地创建所需的任何库(假设大小合理,我不确定)并将它们包含在您的项目中。
【讨论】:
根据post,javax.script.ScriptEngine 在 Android SDK 中不可用。您可以尝试以下步骤来包含该库,但代码可能无法运行,即使它会编译。
在 Windows 中使用 Android Development Toolkit,我执行以下步骤来获取 javax.script 库。
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 应用程序中运行(函数等)
【讨论】: