2009-09-21 12 views

Respuesta

4

javax.script.ScriptEngine no es una parte predeterminada de Android, pero podría fácilmente archivar las bibliotecas que necesite (suponiendo que el tamaño es razonable, no estoy seguro) e incluirlas en su proyecto.

3

Según este post, javax.script.ScriptEngine no está disponible en Android SDK. Puede intentar los pasos a continuación para incluir la biblioteca, pero es posible que el código no se ejecute, aunque se compile.

Utilizando Android Development Toolkit en Windows, realicé los siguientes pasos para obtener la biblioteca javax.script.

  1. Al hacer clic derecho en el proyecto, se dirigió a Propiedades (Proyecto).
  2. En la ruta de compilación de Java, elegí la pestaña Bibliotecas.
  3. Seleccione Agregar biblioteca situada en la parte central derecha de la ficha
  4. Select System Library JRE bajo Agregar Biblioteca y haga clic en Siguiente ...
  5. Seleccionar espacio de trabajo predeterminado JRE (jre 7)
  6. Haga clic en Finalizar.
  7. Haga clic en Aceptar en la ruta de compilación de Java para existir las propiedades del proyecto.

Se cargó Javax.script.

6

Para las clases javax.script.ScriptEngine, javax.script.ScriptEngineFactory y demás, puede agregar el jsr223.jar a su proyecto de Android: simplemente copie el archivo .jar en su directorio libs y añádalo desde Properties -> Ruta de compilación Java.

Esta clase permitirá compilar los motores que cumplen con JSR 223. A continuación, puede hacer new SomeScriptEngienFactory().getScriptEngine() para obtener un motor. He logrado hacer esto con JNLua 1.0.4 y Rhino 1.7R2.

El archivo jsr223.jar se puede descargar desde http://www.java2s.com/Code/Jar/j/Downloadjsr223jar.htm, un enlace directo es http://www.java2s.com/Code/JarDownload/jsr223/jsr223.jar.zip.

+0

¿Puedes publicar una aplicación de muestra? –

1

Si desea evaluar un cierto código de JS en Android

1) a sus dependencias Gradle añadir (rhino):

compile 'org.mozilla:rhino:1.7R4' 

2) escribir un código como este para obtener el resultado de JS evaluación

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) Puede escribir secuencias de comandos más complejas en JS para ejecutar en la aplicación de Android también (diversión ctions, etc.)

Cuestiones relacionadas