开发Android应用程序时是否可以引用javax.script.ScriptEngine库? 如果没有,那么有可能在android中评估一个javascript表达式吗?
答案 0 :(得分:7)
对于类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。
答案 1 :(得分:4)
javax.script.ScriptEngine不是android的默认部分,但你可以轻松地将你需要的任何库(假设大小合理,我不确定)并将它们包含在你的项目中。
答案 2 :(得分:3)
根据此post,Android SDK中不提供javax.script.ScriptEngine。您可以尝试以下步骤来包含库,但代码可能无法运行,即使它将进行编译。
在Windows中使用Android Development Toolkit,我执行了以下步骤来获取javax.script库。
然后加载了Javax.script。
答案 3 :(得分: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应用程序中运行(函数等)。