Android и Python - PullRequest
       47

Android и Python

4 голосов
/ 03 ноября 2011

Могу ли я портировать существующие скрипты Python на Android с помощью SL4A или ASE?Что я конкретно хочу сделать, это создать приложение для Android с обычными элементами пользовательского интерфейса и запустить скрипты Python из самого приложения, получить выходные данные и отобразить их.Это возможно ?

Ответы [ 4 ]

2 голосов
/ 03 ноября 2011

Personnaly Я думаю, что вы неявно просите о трех моментах:

Совместимость Desktop / Mobile

Первое - это совместимость между библиотекой python на телефоне и библиотекой python на вашем компьютере.Если вы не используете стороннюю библиотеку и обязательно включите extra python-библиотеку, предоставленную sl4a, вы, как правило, должны быть в порядке.

Упаковка

Второй пункто том, как упаковать приложение Python для Android.Это легко сделать с помощью обёртки, как описано на сайте sl4a.Фактически они распространяют копию главы книги о SL4A, в которой описывается, как это сделать.Так что это возможно, но имейте в виду, что пользователю потребуется установить python, если он этого еще не сделал (это своего рода предупреждение при запуске приложения)

UI

Третье, что вы должны иметь в виду, это то, что вы не на 100% свободны в отношении виджета / макета, который вы можете использовать с sl4a.А именно, вы не можете делать то, что могли бы делать на Java или Scala.Поэтому вам, возможно, придется подумать об изменении своего пользовательского интерфейса и вместо этого сделать веб-просмотр (который может обмениваться данными с питоном) с каркасом для получения «мобильного внешнего вида»

Надеюсь, это поможет.

0 голосов
/ 03 июня 2012

У меня была похожая проблема, и я, наконец, решил ее, написав небольшой одноэлементный класс на 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. Я еще не реализовал это, но я не ожидаю никаких проблем.

0 голосов
/ 03 ноября 2011

Если веб-интерфейс является нормальным пользовательским интерфейсом, посмотрите это обсуждение http://groups.google.com/group/android-scripting/browse_thread/thread/f86812549d2686e2/f828f916411d7a95. Вы можете использовать Python, WebView, HTML5 и JavaScript

0 голосов
/ 03 ноября 2011

Я думаю, что вы хотите сделать независимый apk-файл, который включает интерпретацию Python и код вашего скрипта.

Я не знаю, можно ли это сделать в Android.Единственное, что я знаю, это запуск вашего скрипта из среды сценариев Android.

...