У меня была похожая проблема, и я, наконец, решил ее, написав небольшой одноэлементный класс на Java, который запускает двоичный файл Python-4-Android из установки SL4A в подпроцесс, созданный с использованием java.lang.ProcessBuilder.Так что я вообще не использую механизмы SL4A (триггеры, upcalls и т. Д.), Просто заимствую Python.
Это кажется более чистым, чем попытка запуска и подключения к процессу Python через SL4A.
Это Python 2.7.1, кросс-компиляция расширений из Mac OS X Snow Leopard.Мои модули Python выполняют только ввод и вывод текста, принимают соединения с сокетами и т. Д. Нет взаимодействия с Android API.Все работает нормально: запись потока Java на вход Python и чтение потока Java для получения вывода Python.Расширения C создаются с использованием инструкций P4A .(Android не мог найти .so dynalibs, пока я не добавил
[build_ext]
inplace=1
в setup.cfg во время сборки. Я думаю, что это потому, что установка «установка» никогда не вызывается на Android. Я просто нажимаю сadb.
Кажется, что все состояния жизненного цикла активности работают, но я пока не могу определить, будет ли подпроцесс автоматически приостановлен, пока основной процесс находится в остановленном состоянии.
Iмогу опубликовать код через пару недель, если это будет интересно. (Просто ухожу в отпуск.)
Мой план упаковки - поместить ZIP-архив кода Python в / assets и разархивировать приложение во времяпервый onCreate. Я еще не реализовал это, но я не ожидаю никаких проблем.