在 android 中引用 javax.script.ScriptEngine 或计算 javascript 表达式
-
12-09-2019 - |
题
开发android应用程序时是否可以引用javax.script.ScriptEngine库?如果没有的话,是否有可能在android中评估javascript表达式?
解决方案
javax.script.ScriptEngine中是不是Android系统默认的一部分,但你可以很容易罐子把你需要的所有库(假设规模是合理的,我不知道),并将它们包括在您的项目。
其他提示
对于 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.
根据该帖子,javax.script.ScriptEngine中是不是在Android SDK中提供。您可以尝试按照如下步骤包括图书馆,但代码可能无法运行,即使它会编译。的
在Windows中使用Android的开发工具包,我执行了以下步骤获得的javax.script库。
- 右键点击该项目,赴属性(项目)。
- 在Java构建路径,我选择Libraries选项卡。
- 选择添加位于标签 的中间偏右的图书馆
- 选择JRE系统库下添加库,然后单击下一步...
- 选择工作区默认JRE(JRE 7)
- 点击完成。
- 单击OK在Java构建路径中存在的项目属性。 醇>
在javax.script然后加载。
如果您想在评估中JS的一些代码的Android
1)到您的gradle依赖性增加(犀牛一>):
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应用还运行(功能等)