Android полностью поддерживает каналы, а также доменные сокеты Unix. Использование exec несколько не рекомендуется, но на данный момент работает.
См. Исходный код любого эмулятора терминала Android с опцией локальной оболочки для примера того, как это сделать. По сути, ваш графический интерфейс заменяет эмулятор терминала, а ваш движок заменяет оболочку.
Если использование exec станет проблемой в будущем, вам нужно будет скомпилировать ваш движок как библиотеку jni, а не как отдельный исполняемый файл. Это не обязательно слишком сложно - просто привяжите его к примеру ndk hello-jni и получите единственную функцию jni, которая вызывает main (). Назовите это из потока Java. Общайтесь с трубами, как раньше, или установите другую схему передачи сообщений, используя jni.
Обратите внимание, что для ответов "использовать службу" также потребуется java-оболочка в службе. На данный момент вы не можете создать чисто нативный сервис, используя какой-либо поддерживаемый / одобренный механизм, если вы не являетесь поставщиком платформы, создающим и регистрирующим системный сервис.
Также имейте в виду, что ваш движок должен быть в состоянии сохранить любое состояние, и в то же время java-сторона должна была бы справиться с этим в течение жизненного цикла активности андроида (по сути, после того, как вы сделали паузу, вы можете быть убиты без дальнейшего уведомления )