Pergunta

É possível fazer referência a biblioteca javax.script.ScriptEngine ao desenvolver uma aplicação android? Se não é lá de qualquer maneira possível avaliar uma expressão javascript no android?

Foi útil?

Solução

javax.script.ScriptEngine não é uma parte padrão do Android, mas você poderia facilmente jar-se quaisquer bibliotecas que você precisa (assumindo que o tamanho é razoável, não tenho certeza) e incluí-los em seu projeto.

Outras dicas

Para as classes javax.script.ScriptEngine, javax.script.ScriptEngineFactory e assim por diante, você pode adicionar o jsr223.jar ao seu projeto Android: basta copiar o arquivo .jar para seu diretório libs, e adicioná-lo a partir Properties- > Caminho de construção Java.

Estes classe permitirá que seus motores 223-compatível com JSR para compilar. Você pode então fazer new SomeScriptEngienFactory().getScriptEngine() para obter um motor. Eu consegui fazer isso com JNLua 1.0.4 e Rhino 1.7R2.

O jsr223.jar arquivo pode ser baixado a partir http: //www.java2s .com / Code / Jar / j / Downloadjsr223jar.htm , um link direto é http://www.java2s.com/Code/JarDownload/jsr223/jsr223.jar.zip .

De acordo com esta pós , javax.script.ScriptEngine não está disponível no SDK do Android. Você pode tentar os passos abaixo para incluir a biblioteca, mas o código não pode ser executado, mesmo que ele irá compilar.

Usando o Android Development Toolkit no Windows, eu realizados os seguintes passos para obter biblioteca javax.script.

  1. clicado com o botão direito sobre o projeto, foi para Propriedades (projeto).
  2. Sob o Caminho de Construção Java, eu escolhi guia Bibliotecas.
  3. selecione Adicionar biblioteca localizada na parte central direita da Tab
  4. Escolha um JRE Sistema de Bibliotecas em Adicionar Biblioteca e clique em Avançar ...
  5. Escolha um espaço de trabalho padrão JRE (JRE 7)
  6. Clique em Terminar.
  7. Clique em OK no Caminho de Construção Java de existir propriedades do projeto.

javax.script foi em seguida carregado.

Se você quer avaliar algum código em JS no android

1) para suas dependências Gradle adicionar ( rinoceronte ):

compile 'org.mozilla:rhino:1.7R4'

2) escrever algum código como este para obter o resultado da avaliação 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) Você pode escrever scripts mais complexos em JS para executar no app para Android também (funções etc.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top