Python-For-Android - это инструмент для приложений Python на Android.
Вы можете создать свое собственное распределение Python, включая модули и зависимости, которые вы хотите, и объединить его в APK или AAB вместе с собственным кодом.
Автоматическая поддержка большинства модулей Python и встроенная поддержка для многих других, включая популярные зависимости, такие как Numpy и SQLalchemy.
Несколько целей архитектуры, для APK, оптимизированных на любом данном устройстве.
AAB: поддержка пакета приложений Android.
sudo apt install python3 && python3-pip
pip3 install python-for-android
Или распакуйте архив:
sudo apt install python3 && python3-pip
sudo python3 setup.py install
Проверьте, что установка работает:
p4a --version
Чтобы создать любые реальные приложения, настройте Android SDK и NDK
p4a apk --requirements=kivy --private /home/username/devel/planewave_frozen/ --package=net.inclem.planewavessdl2 --name="planewavessdl2" --version=0.5 --bootstrap=sdl2
Если вам нужно развернуть приложение в Google Play, требуется Android App Bundle (AAB)
Вы можете создать свое собственное распределение Python, включая модули и зависимости, которые вы хотите, и объединить его в APK или AAB вместе с собственным кодом.
Особенности включают:
Различные приложения поддерживают, включая Kivy, PYSDL2 и WebView с Python WebServer.Автоматическая поддержка большинства модулей Python и встроенная поддержка для многих других, включая популярные зависимости, такие как Numpy и SQLalchemy.
Несколько целей архитектуры, для APK, оптимизированных на любом данном устройстве.
AAB: поддержка пакета приложений Android.
Установка:
sudo apt install python3 && python3-pip
pip3 install python-for-android
Или распакуйте архив:
sudo apt install python3 && python3-pip
sudo python3 setup.py install
Проверьте, что установка работает:
p4a --version
Чтобы создать любые реальные приложения, настройте Android SDK и NDK
У вас нет разрешения на просмотр ссылки, пожалуйста Вход или Регистрация
У вас нет разрешения на просмотр ссылки, пожалуйста Вход или Регистрация
Со всем установленным, постройте APK, например:
p4a apk --requirements=kivy --private /home/username/devel/planewave_frozen/ --package=net.inclem.planewavessdl2 --name="planewavessdl2" --version=0.5 --bootstrap=sdl2
Если вам нужно развернуть приложение в Google Play, требуется Android App Bundle (AAB)
Вам нужно скачать и распаковать Android SDK и NDK в каталог (давайте скажем $Home/Documents/):
Для Android SDK вы можете скачать Просто инструменты командной строки. Когда вы извлекли их, вы увидите только каталог с именем инструментов tools, и вам нужно будет запустить дополнительные команды, чтобы установить необходимые пакеты SDK.
Для Android NDK обратите внимание, что современные релизы будут работать только на 64-разрядной операционной системе.
Минимальная и рекомендованная версия NDK для использования - R23B:
Перейти на страницу загрузки NDK
Пользователи Windows должны создать виртуальную машину с установленной ОС GNU Linux, а затем вы можете следовать описанным инструкциям из вашей виртуальной машины.
Во-первых, установите платформу API для нацеливания.
Рекомендуемый target Уровень API составляет 27, вы можете заменить его другим числом, но имейте в виду, что другие версии API менее хорошо проверены, а более старые устройства все еще поддерживаются до рекомендуемого указанного minimum API/NDK Уровень 21:
$SDK_DIR/tools/bin/sdkmanager "platforms;android-27"
Во-вторых, установите конструкции сборки. Вы можете использовать $SDK_DIR/tools/bin/sdkmanager --list, чтобы увидеть все возможности, но 28.0.2-последняя версия на текущий момент:
$SDK_DIR/tools/bin/sdkmanager "build-tools;28.0.2"
Настройте p4a для использования вашего SDK/NDK
Затем вы можете редактировать ~/.bashrc или другую любимую оболочку, чтобы включить новые переменные среды, необходимые для построения на Android:
У вас есть возможность настроить на любую команду путь к API SDK, NDK и Android с использованием:
p4a apk --private $HOME/code/myapp --package=org.example.myapp --name "My application" --version 0.1 --bootstrap=sdl2 --requirements=python3,kivy
Примечание в --requirements : Вы должны добавить все библиотеки/зависимости, которые необходимо запускать ваше приложение.
Пример: --requirements=python3,kivy,vispy
Для приложения SDL2 Kivy не нужна, но вам нужно добавить любые обертки, которые вы можете использовать (например, pysdl2).
Эта команда p4a apk создает распределение с Python3, Kivy и всем остальным, что вы указали в требованиях.
Он будет упакован с использованием начальной загрузки SDL2 и создаст файл .APK
Примечания к совместимости:
Python 2 больше не поддерживается Python-Android!
p4a apk --private $HOME/code/myapp --package=org.example.myapp --name "My WebView Application" --version 0.1 --bootstrap=webview --requirements=flask --port=5000
Обратите внимание, что, как в Kivy/SDL2, вам необходимо указать все свои дополнительные требования/зависимости.
Вы также можете заменить flask другой веб-структурой.
Замените --port=5000 на порт, на котором ваше приложение будет обслуживать веб-сайт. По умолчанию для flask составляет 5000.
Чтобы построить архив Android (.AAR), содержащий сервис Android, вам нужно имя, версия, идентификатор пакета, явно используйте начальную загрузку service_library и объявить точку входа в службу, а также требования и arch:
p4a aar --private $HOME/code/myapp --package=org.example.myapp --name "My library" --version 0.1 --bootstrap=service_library --requirements=python3 --release --service=myservice:service.py --arch=arm64-v8a --arch=armeabi-v7a
Затем вы можете вызвать сгенерированные точку(и) Java для ваших услуг Python в других framework APK Build.
Начиная с августа 2021 года для новых приложений и с ноября 2021 года для обновлений приложений для существующих приложений, Google Play Console потребует пакета приложений Android, а не для долгосрочного APK.
Необходимая работа для выполнения новых требований:
p4a aab –private $HOME/code/myapp –package=org.example.myapp –name=”My App” –version 0.1 –bootstrap=sdl2 –requirements=python3,kivy –arch=arm64-v8a –arch=armeabi-v7a –release
Эта команда p4a aab создает распределение с Python3, Kivy и всем остальным, что вы указали в требованиях.
Он будет упакован с использованием начальной загрузки SDL2 и производит файл .aab, который содержит двоичные файлы как для Armeabi-V7A, так и для ARM64-V8A ABI.
Предполагается, что приложение для Android должна использоваться для распределения вашего приложения. Если вам нужно проверить его локально, на своем устройстве, вы можете использовать
bundletool <
>
Если что-то пойдет не так, и вы хотите очистить загрузки и релизы, запустите:
p4a clean_all
Если вы просто хотите очистить сборки, чтобы избежать загрузки зависимостей, запустите:
p4a clean_builds && p4a clean_dists
Вы можете увидеть список доступного:
p4a recipes
Если вы внесете свой вклад в p4a и хотите снова проверить, вам необходимо очистить сборку и восстановить свое распределение:
p4a clean_recipe_build RECIPENAME
p4a clean_dists
# Затем восстановите свое распределение
Вы можете написать частные recipes для вашего приложения, просто создать папку p4a-recipes в своем каталоге сборки и поместите в нее recipe (отредактируйте init.py):
mkdir -p p4a-recipes/myrecipe
touch p4a-recipes/myrecipe/init.py
Каждый раз, когда вы начинаете новый проект, Python-For-Android внутренне создаст новое распространение (проект Android Build, включая Python и другие ваши зависимости, скомпилированные для Android), согласно требованиям, которые вы добавили в командной строке.
Вы можете заставить повторное использование существующего распределения, добавив:
p4a apk --dist_name=myproject ...
Это гарантирует, что ваше распределение всегда будет построено в одном каталоге и избегает использования большего количества дискового пространства каждый раз, когда вы корректируете требование.
Вы можете перечислить доступные распределения:
p4a distributions
И очистите их все:
p4a clean_dists
Python для Android проверяет текущий каталог для файла конфигурации с именем .p4a. Если обнаружено, он добавляет все строки в качестве параметров в командную строку.
Например, вы можете добавить параметры, которые всегда будут включены, например:
--dist_name my_example
--android_api 27
--requirements kivy,openssl
Вы можете переопределить источник любого recipes, используя переменную среды $P4A_recipename_DIR
Например, чтобы проверить свой собственный Kivy, который вы можете установить:
export P4A_kivy_DIR=/home/username/kivy
Указанный каталог будет скопирован в Python-Android вместо загрузки из обычного URL-адреса
Для Android SDK вы можете скачать Просто инструменты командной строки. Когда вы извлекли их, вы увидите только каталог с именем инструментов tools, и вам нужно будет запустить дополнительные команды, чтобы установить необходимые пакеты SDK.
Для Android NDK обратите внимание, что современные релизы будут работать только на 64-разрядной операционной системе.
Минимальная и рекомендованная версия NDK для использования - R23B:
Перейти на страницу загрузки NDK
У вас нет разрешения на просмотр ссылки, пожалуйста Вход или Регистрация
Пользователи Windows должны создать виртуальную машину с установленной ОС GNU Linux, а затем вы можете следовать описанным инструкциям из вашей виртуальной машины.
Платформа и инструменты создания
Во-первых, установите платформу API для нацеливания.
Рекомендуемый target Уровень API составляет 27, вы можете заменить его другим числом, но имейте в виду, что другие версии API менее хорошо проверены, а более старые устройства все еще поддерживаются до рекомендуемого указанного minimum API/NDK Уровень 21:
$SDK_DIR/tools/bin/sdkmanager "platforms;android-27"
Во-вторых, установите конструкции сборки. Вы можете использовать $SDK_DIR/tools/bin/sdkmanager --list, чтобы увидеть все возможности, но 28.0.2-последняя версия на текущий момент:
$SDK_DIR/tools/bin/sdkmanager "build-tools;28.0.2"
Настройте p4a для использования вашего SDK/NDK
Затем вы можете редактировать ~/.bashrc или другую любимую оболочку, чтобы включить новые переменные среды, необходимые для построения на Android:
Код:
# Отрегулируйте пути!
export ANDROIDSDK="$HOME/Documents/android-sdk-27"
export ANDROIDNDK="$HOME/Documents/android-ndk-r23b"
export ANDROIDAPI="27" # Target API version of your application
export NDKAPI="21" # Minimum supported API version of your application
export ANDROIDNDKVER="r10e" # Version of the NDK you installed
У вас есть возможность настроить на любую команду путь к API SDK, NDK и Android с использованием:
Код:
--sdk-dir PATH как эквивалент $ANDROIDSDK
--ndk-dir PATH как эквивалент $ANDROIDNDK
--android-api VERSION как эквивалент $ANDROIDAPI
--ndk-api VERSION как эквивалент $NDKAPI
--ndk-version VERSION как эквивалент $ANDROIDNDKVER
Применение:
Создайте приложение Kivy или SDL2, чтобы создать ваше приложение, вам необходимо указать имя, версию, идентификатор пакета, начальную загрузку, которую вы хотите использовать (SDL2 для приложений Kivy или SDL2) и требования requirements:
p4a apk --private $HOME/code/myapp --package=org.example.myapp --name "My application" --version 0.1 --bootstrap=sdl2 --requirements=python3,kivy
Примечание в --requirements : Вы должны добавить все библиотеки/зависимости, которые необходимо запускать ваше приложение.
Пример: --requirements=python3,kivy,vispy
Для приложения SDL2 Kivy не нужна, но вам нужно добавить любые обертки, которые вы можете использовать (например, pysdl2).
Эта команда p4a apk создает распределение с Python3, Kivy и всем остальным, что вы указали в требованиях.
Он будет упакован с использованием начальной загрузки SDL2 и создаст файл .APK
Примечания к совместимости:
Python 2 больше не поддерживается Python-Android!
Создайте приложение WebView, чтобы построить ваше приложение, вам нужно иметь имя, версию, идентификатор пакета и явно использовать начальную загрузку WebView, а также требования:
p4a apk --private $HOME/code/myapp --package=org.example.myapp --name "My WebView Application" --version 0.1 --bootstrap=webview --requirements=flask --port=5000
Обратите внимание, что, как в Kivy/SDL2, вам необходимо указать все свои дополнительные требования/зависимости.
Вы также можете заменить flask другой веб-структурой.
Замените --port=5000 на порт, на котором ваше приложение будет обслуживать веб-сайт. По умолчанию для flask составляет 5000.
Создайте архив библиотеки услуг
Чтобы построить архив Android (.AAR), содержащий сервис Android, вам нужно имя, версия, идентификатор пакета, явно используйте начальную загрузку service_library и объявить точку входа в службу, а также требования и arch:
p4a aar --private $HOME/code/myapp --package=org.example.myapp --name "My library" --version 0.1 --bootstrap=service_library --requirements=python3 --release --service=myservice:service.py --arch=arm64-v8a --arch=armeabi-v7a
Затем вы можете вызвать сгенерированные точку(и) Java для ваших услуг Python в других framework APK Build.
Экспорт пакета приложений Android (AAB) для распределения в Google Play
Начиная с августа 2021 года для новых приложений и с ноября 2021 года для обновлений приложений для существующих приложений, Google Play Console потребует пакета приложений Android, а не для долгосрочного APK.
Необходимая работа для выполнения новых требований:
p4a aab –private $HOME/code/myapp –package=org.example.myapp –name=”My App” –version 0.1 –bootstrap=sdl2 –requirements=python3,kivy –arch=arm64-v8a –arch=armeabi-v7a –release
Эта команда p4a aab создает распределение с Python3, Kivy и всем остальным, что вы указали в требованиях.
Он будет упакован с использованием начальной загрузки SDL2 и производит файл .aab, который содержит двоичные файлы как для Armeabi-V7A, так и для ARM64-V8A ABI.
Предполагается, что приложение для Android должна использоваться для распределения вашего приложения. Если вам нужно проверить его локально, на своем устройстве, вы можете использовать
bundletool <
У вас нет разрешения на просмотр ссылки, пожалуйста Вход или Регистрация
Перестроить:
Если что-то пойдет не так, и вы хотите очистить загрузки и релизы, запустите:
p4a clean_all
Если вы просто хотите очистить сборки, чтобы избежать загрузки зависимостей, запустите:
p4a clean_builds && p4a clean_dists
Вы можете увидеть список доступного:
p4a recipes
Если вы внесете свой вклад в p4a и хотите снова проверить, вам необходимо очистить сборку и восстановить свое распределение:
p4a clean_recipe_build RECIPENAME
p4a clean_dists
# Затем восстановите свое распределение
Вы можете написать частные recipes для вашего приложения, просто создать папку p4a-recipes в своем каталоге сборки и поместите в нее recipe (отредактируйте init.py):
mkdir -p p4a-recipes/myrecipe
touch p4a-recipes/myrecipe/init.py
Управление распределением
Каждый раз, когда вы начинаете новый проект, Python-For-Android внутренне создаст новое распространение (проект Android Build, включая Python и другие ваши зависимости, скомпилированные для Android), согласно требованиям, которые вы добавили в командной строке.
Вы можете заставить повторное использование существующего распределения, добавив:
p4a apk --dist_name=myproject ...
Это гарантирует, что ваше распределение всегда будет построено в одном каталоге и избегает использования большего количества дискового пространства каждый раз, когда вы корректируете требование.
Вы можете перечислить доступные распределения:
p4a distributions
И очистите их все:
p4a clean_dists
Конфигурационный файл
Python для Android проверяет текущий каталог для файла конфигурации с именем .p4a. Если обнаружено, он добавляет все строки в качестве параметров в командную строку.
Например, вы можете добавить параметры, которые всегда будут включены, например:
--dist_name my_example
--android_api 27
--requirements kivy,openssl
Вы можете переопределить источник любого recipes, используя переменную среды $P4A_recipename_DIR
Например, чтобы проверить свой собственный Kivy, который вы можете установить:
export P4A_kivy_DIR=/home/username/kivy
Указанный каталог будет скопирован в Python-Android вместо загрузки из обычного URL-адреса
Эти аргументы могут быть переданы любой команде, чтобы изменить ее поведение, хотя не все команды используют их.
--debug
Распечатайте дополнительную отладочную информацию о сборке, включая все вывод компиляции.
--sdk_dir
Путь папки, где установлен Android SDK. Это может быть альтернативно установлено несколькими другими способами.
--android_api
Уровень API Android для цели; Python-For-Android проверит, установлены ли инструменты платформы для этого уровня.
--ndk_dir
Путь папки, где установлен Android NDK. Это может быть альтернативно установлено несколькими другими способами.
--ndk_version
Версия установленной NDK, важно, потому что внутренние пути папок для создания инструментов зависят от этого. Это можно альтернативно установлено несколькими другими способами, или если ваш NDK DIR содержит release.txt, содержащий версию, которая автоматически проверяется, поэтому вам не нужно вручную устанавливать его.
--debug
Распечатайте дополнительную отладочную информацию о сборке, включая все вывод компиляции.
--sdk_dir
Путь папки, где установлен Android SDK. Это может быть альтернативно установлено несколькими другими способами.
--android_api
Уровень API Android для цели; Python-For-Android проверит, установлены ли инструменты платформы для этого уровня.
--ndk_dir
Путь папки, где установлен Android NDK. Это может быть альтернативно установлено несколькими другими способами.
--ndk_version
Версия установленной NDK, важно, потому что внутренние пути папок для создания инструментов зависят от этого. Это можно альтернативно установлено несколькими другими способами, или если ваш NDK DIR содержит release.txt, содержащий версию, которая автоматически проверяется, поэтому вам не нужно вручную устанавливать его.
p4a поддерживает несколько аргументов, используемых для указания, какое составное распределение Android вы хотите использовать. Вы можете передать любой из этих аргументов любой команде, и, если требуется распределение, они будут использоваться для загрузки, компиляции или download по мере необходимости.
Ни один из этих вариантов не является важным, и в принципе вам нужно предоставить только те, которые вам нужны.
--name NAME
Название распределения. Может быть создано только одно распределение с данным именем.
--requirements LIST,OF,REQUIREMENTS
Recipes, которые ваше распределение должно содержать, в качестве списка с запятой. Это должны быть имена recipes или названия pypi модулей Python.
--force-build BOOL
Должно ли распределение быть составлено с нуля.
--arch
Архитектура для строительства. Вы можете указать несколько архитектур, которые можно построить одновременно.
В качестве примера p4a ... --arch arm64-v8a --arch armeabi-v7a ... создаст распределение как для arm64-V8a, так и для armeabi-V7a.
--bootstrap BOOTSTRAP
Java Bootstrap для использования для вашего приложения. В основном вам не нужно беспокоиться об этом или устанавливать его вручную, так как будет выбрано из ваших -requirements
Текущие варианты - это sdl2 (используется с Kivy и большинством других приложений) или webview.
Ни один из этих вариантов не является важным, и в принципе вам нужно предоставить только те, которые вам нужны.
--name NAME
Название распределения. Может быть создано только одно распределение с данным именем.
--requirements LIST,OF,REQUIREMENTS
Recipes, которые ваше распределение должно содержать, в качестве списка с запятой. Это должны быть имена recipes или названия pypi модулей Python.
--force-build BOOL
Должно ли распределение быть составлено с нуля.
--arch
Архитектура для строительства. Вы можете указать несколько архитектур, которые можно построить одновременно.
В качестве примера p4a ... --arch arm64-v8a --arch armeabi-v7a ... создаст распределение как для arm64-V8a, так и для armeabi-V7a.
--bootstrap BOOTSTRAP
Java Bootstrap для использования для вашего приложения. В основном вам не нужно беспокоиться об этом или устанавливать его вручную, так как будет выбрано из ваших -requirements
Текущие варианты - это sdl2 (используется с Kivy и большинством других приложений) или webview.