Обратитесь к javax.script.ScriptEngine в Android или вычислите выражение javascript
-
12-09-2019 - |
Вопрос
Можно ли ссылаться на библиотеку javax.script.ScriptEngine при разработке приложения для Android?Если нет, то возможно ли вообще вычислить выражение javascript в Android?
Решение
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.Вы можете попробовать выполнить приведенные ниже действия по включению библиотеки, но код может не выполняться, даже если он будет скомпилирован.
Используя Android Development Toolkit в Windows, я выполнил следующие шаги, чтобы получить библиотеку javax.script.
- Щелкнул правой кнопкой мыши по проекту, перешел в раздел Свойства (Project).
- В разделе Путь к сборке Java я выбрал вкладку Библиотеки.
- Выберите Добавить библиотеку, расположенную в правом среднем углу вкладки
- Выберите Системную библиотеку 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 (функции и т.д.).