在 android 中引用 javax.script.ScriptEngine 或评估 javascript 表达式

Posted

技术标签:

【中文标题】在 android 中引用 javax.script.ScriptEngine 或评估 javascript 表达式【英文标题】:Reference javax.script.ScriptEngine in android or evaluate a javascript expression 【发布时间】:2010-11-30 01:52:55 【问题描述】:

在开发安卓应用时是否可以引用 javax.script.ScriptEngine 库? 如果没有,是否有可能在 android 中评估 javascript 表达式?

【问题讨论】:

【参考方案1】:

对于 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。

【讨论】:

你能发布一个示例应用吗?【参考方案2】:

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

【讨论】:

【参考方案3】:

根据post,javax.script.ScriptEngine 在 Android SDK 中不可用。您可以尝试以下步骤来包含该库,但代码可能无法运行,即使它会编译。

在 Windows 中使用 Android Development Toolkit,我执行以下步骤来获取 javax.script 库。

    右键单击项目,转到属性(项目)。 在 Java Build Path 下,我选择了 Libraries 选项卡。 选择位于选项卡右中的添加库 在添加库下选择 JRE 系统库,然后单击下一步... 选择工作区默认 JRE (jre 7) 点击完成。 在 Java 构建路径上单击确定以存在项目属性。

Javax.script 然后被加载。

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于在 android 中引用 javax.script.ScriptEngine 或评估 javascript 表达式的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android Studio添加本地aar包引用

Android 解决图片大量下载:软引用必须懂4点

Android中资源的引用

如何在Android中引用原始文件夹中的文件

在 android 中引用 javax.script.ScriptEngine 或评估 javascript 表达式

#yyds干货盘点#Android C++系列:JNI引用管理