Как динамически компилировать и запускать java-код из строки в приложении на Андроид?
Мне нужно реализовать следующий сценарий: 1. Пользователь вводит очень простой java-код в приложение на Android. Например:
Scanner in = new Scanner(System.in);
System.out.println("Enter number: ");
int a = in.nextInt();
if (a >= 5)
System.out.println("Entered number higher or equals 5");
else
System.out.println("Entered number less than 5");
- Приложение проверяет, работает ли код правильно. Оно тестирует код и сообщает пользователю, являются ли выходные данные такими, как ожидалось.
Я студент и это проект для университета. Так что я являюсь новичком в Java и Android, и у меня также нет никаких жёстких ограничений насчёт производительности и использования памяти приложением. И, кроме того, мне нужно сделать это настолько быстро, насколько это возможно. Так что я ищу ПРОСТЕЙШИЙ способ сделать это. Я видел здесь несколько похожих тем, но решения там оказались слишком сложными для меня, так как там у людей в приоритете была максимальная оптимизация. Мне же нужно просто выполнить задание и сдать его как можно скорее.
Upd: По сути, насколько я понимаю, наиболее просто и логично было бы сделать то, что мне нужно, в 3 этапа:
- Скомпилировать String с кодом, введённым пользователем (и слегка изменённым для моего удобства), в файл .dex.
- При помощи DexClassLoader открыть файл .dex и загрузить класс оттуда в объект Class.
- Вызывать методы этого класса при помощи рефлексии.
Пункты 2 и 3 работают, только что проверил. Остаётся пункт 1. Мне нужно каким-то образом программно скомпилировать файл .dex. Не знаю, как мне это сделать, в интернете решение найти не удаётся. Возможно, мне нужно добавить определённые файлы из jdk и android sdk в моё приложение и как-то их использовать. Но я не уверен, законно ли это вообще, и, если законно, то я не знаю, что конкретно за файлы мне нужны и что мне с ними делать.