Документация Python неофициальный перевод
Содержание страницы

6. Использование Python на AndroidUsing Python on Android

Python на Android отличается от Python на настольных платформах. На настольной платформе, Python обычно устанавливается как системный ресурс, доступный любому пользователю этого компьютера. Пользователи взаимодействуют с Python, запуская исполняемый файл python и вводя команды в интерактивной подсказке, либо запуская скрипт Python.

В Android отсутствует понятие установки как системного ресурса. Единственной единицей распространения программного обеспечения является «приложение». Также нет консоли, где можно было бы запустить исполняемый файл python или взаимодействовать с Python REPL.

В результате единственный способ использовать Python на Android – это встроенный режим: написать нативное приложение для Android, встроить интерпретатор Python с помощью libpython и вызывать код Python через API для встраивания Python. Полный интерпретатор Python, стандартная библиотека и весь ваш код Python затем упаковываются в приложение для его собственного использования.

Стандартная библиотека Python имеет некоторые заметные пропуски и ограничения на Android. Подробнее см. руководство по доступности API.

6.1. Добавление Python в приложение AndroidAdding Python to an Android app

Большинство разработчиков приложений должны использовать один из следующих инструментов, которые значительно упростят процесс:

Если вы уверены, что хотите делать всё это вручную, читайте дальше. Вы можете использовать приложение testbed app в качестве руководства; каждый шаг ниже содержит ссылку на соответствующий файл.

  • Соберите Python, следуя инструкциям в Android/README.md. Это создаст каталог cross-build/HOST/prefix.

  • Добавьте код в файл build.gradle , чтобы скопировать следующие элементы в проект. Всё, кроме вашего собственного кода Python, можно скопировать из prefix/lib:

    • В ваших JNI-библиотеках:

      • libpython*.*.so

      • lib*_python.so (внешние библиотеки, такие как OpenSSL)

    • В ваших ресурсах (assets):

      • python*.* (стандартная библиотека Python)

      • python*.*/site-packages (ваш собственный код Python)

  • Добавьте код в приложение, чтобы извлечь ресурсы (assets) в файловую систему.

  • Добавьте код в приложение, чтобы запустить Python во встроенном режиме. Это должен быть код на C, вызываемый через JNI.

6.2. Сборка пакета Python для AndroidBuilding a Python package for Android

Пакеты Python могут быть собраны для Android в виде колёс (wheels) и опубликованы на PyPI. Рекомендуемый инструмент для этого – cibuildwheel, который автоматизирует все детали настройки среды кросс-компиляции, сборки колеса и тестирования на эмуляторе.