Ответ 1
javax.script.ScriptEngine не является частью Android по умолчанию, но вы можете легко собрать все нужные вам библиотеки (при условии, что размер разумный, я не уверен) и включить их в ваш проект.
Можно ли ссылаться на библиотеку javax.script.ScriptEngine при разработке приложения для Android? Если нет, то возможно ли оценить javascript-выражение в android?
javax.script.ScriptEngine не является частью Android по умолчанию, но вы можете легко собрать все нужные вам библиотеки (при условии, что размер разумный, я не уверен) и включить их в ваш проект.
Для классов 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.
В соответствии с этим сообщением javax.script.ScriptEngine недоступен в Android SDK. Вы можете попробовать следующие шаги, чтобы включить библиотеку, но код может не работать, даже если он будет компилироваться.
Используя Android Development Toolkit в Windows, я выполнил следующие шаги, чтобы получить библиотеку javax.script.
Затем загрузился Javax.script.
Если вы хотите оценить некоторый код в 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 (функции и т.д.)