Как использовать пакет Javascript, хранящийся в файле в Android Studio? - PullRequest
0 голосов
/ 17 мая 2019

Я разрабатываю приложение в Kotlin на Android Studio . Я не использую WebView . Это нативное приложение с исходными кодами и макетами. Мне нужно использовать большую внешнюю библиотеку JavaScript , которую практически невозможно перевести на Java или Kotlin .

Я нашел способ работы с Java (и, следовательно, в Kotlin , для обеспечения взаимодействия) в Intellij IDEA , описанном на сайте Сценарии в Java .

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class Main {
    public static void main(String[] args) throws Exception {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");
        if (!(engine instanceof Invocable)) {
            System.out.println("Invoking methods is not supported.");
            return;
        }
        Invocable inv = (Invocable) engine;
        String scriptPath = "c:/Backu/calcule.js";

        engine.eval("load('" + scriptPath + "')");

        Object calculator = engine.get("calculator");

        int x = 3;
        int y = 4;
        Object addResult = inv.invokeMethod(calculator, "add", x, y);
        Object subResult = inv.invokeMethod(calculator, "subtract", x, y);
        Object mulResult = inv.invokeMethod(calculator, "multiply", x, y);
        Object divResult = inv.invokeMethod(calculator, "divide", x, y);

        System.out.println(addResult);
        System.out.println(subResult);
        System.out.println(mulResult);
        System.out.println(divResult);
    }
}

Код JavaScript представляет собой набор функций, хранящихся в файле (c:\backu\calcule.js, это просто пример кода):

var calculator = new Object();

calculator.add = function (n1, n2) n1 + n2;
calculator.subtract = function (n1, n2) n1 - n2;
calculator.multiply = function (n1, n2) n1 * n2;
calculator.divide = function (n1, n2) n1 / n2;

Я протестировал его, и он отлично работал, показывая следующий вывод:

7.0
-1.0
12.0
0.75

Однако эти импортированные модули недоступны в Android Studio , и я даже не нашел ссылок на его использование в Android Studio. Что я могу сделать? Это может стать приложением Android, с библиотекой javascript, хранящейся в виде файла в телефоне?

Будет лучше использовать LiquidCore ? Было бы слишком много перегрузок по сравнению с нативными Java библиотеками? Хорошо ли работает Liquid Core ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...