Ссылка javax.script.ScriptEngine в android или оценить выражение javascript

Можно ли ссылаться на библиотеку javax.script.ScriptEngine при разработке приложения для Android? Если нет, то возможно ли оценить javascript-выражение в android?

Ответ 1

javax.script.ScriptEngine не является частью Android по умолчанию, но вы можете легко собрать все нужные вам библиотеки (при условии, что размер разумный, я не уверен) и включить их в ваш проект.

Ответ 2

Для классов javax.script.ScriptEngine, javax.script.ScriptEngineFactory и т.д. вы можете добавить jsr223.jar в свой проект Android: просто скопируйте файл .jar в каталог libs и добавьте его из свойства- > Путь сборки 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.

Ответ 3

В соответствии с этим сообщением javax.script.ScriptEngine недоступен в Android SDK. Вы можете попробовать следующие шаги, чтобы включить библиотеку, но код может не работать, даже если он будет компилироваться.

Используя Android Development Toolkit в Windows, я выполнил следующие шаги, чтобы получить библиотеку javax.script.

  • Щелкните правой кнопкой мыши по проекту, перейдите в раздел Свойства (Проект).
  • В разделе "Путь сборки Java" я выбрал вкладку "Библиотеки".
  • Выберите "Добавить библиотеку", расположенную в середине справа от вкладки
  • Выберите JRE System Library в разделе "Добавить библиотеку" и нажмите "Далее"...
  • Выберите рабочее пространство по умолчанию JRE (jre 7)
  • Нажмите "Готово".
  • Нажмите "ОК" на пути построения Java для существования свойств проекта.

Затем загрузился Javax.script.

Ответ 4

Если вы хотите оценить некоторый код в JS в android

1) к вашим зависимостям gradle add (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 (функции и т.д.)