Как создать файл apk в python

Обновлено: 04.07.2024

python-for-android – это инструмент для упаковки приложений Python на Android. Вы можете создать свой собственный дистрибутив Python, включая нужные модули и зависимости, и объединить его в APK или AAB вместе со своим собственным кодом.

  • Различные серверные части приложений, включая Kivy, PySDL2 и WebView с веб-сервером Python.
  • Автоматическая поддержка большинства чистых модулей Python и встроенная поддержка многих других, включая популярные зависимости, такие как numpy и sqlalchemy.
  • Несколько целевых архитектур для APK, оптимизированных для любого устройства.
  • AAB: поддержка Android App Bundle.

Для получения документации и поддержки см.:

Следуйте кратким инструкциям, чтобы установить и начать создавать APK и AAB.

Краткие инструкции: установите python-for-android с помощью:

Проверьте, работает ли установка:

Чтобы создавать реальные приложения, настройте Android SDK и NDK, как описано в кратком руководстве. Используйте уровень SDK/NDK API и версию NDK, как описано в кратком руководстве, другие уровни API могут не работать.

Установив все, создайте APK с SDL2, например:

Если вам нужно развернуть свое приложение в Google Play, с 1 августа 2021 года требуется Android App Bundle (aab):

Полные инструкции и варианты параметров см. в документации.

Если вам нужна помощь, вы можете обратиться за помощью в наш список рассылки:

Мы любим запросы на вытягивание и обсуждение новых идей. Ознакомьтесь с руководством по участию в проекте Kivy и не стесняйтесь улучшать Python для Android.

Дополнительную информацию о модели разработки и выпуска python для Android см. в нашей документации, но не беспокойтесь о деталях. Вам просто нужно сделать запрос на вытягивание, мы позаботимся обо всем остальном.

Следующий список рассылки и канал IRC используются исключительно для обсуждения разработки среды Kivy и связанных с ней проектов:

python-for-android выпускается в соответствии с условиями лицензии MIT. Пожалуйста, обратитесь к файлу LICENSE.

В последнем квартале 2018 года рецепты Python были изменены. Новый рецепт для python3 (3.7.1) имел новую систему сборки, которая была применена к древнему рецепту python, что позволило нам увеличить номер версии python2 до 2.7.15. Это изменение объединило процесс сборки для обоих рецептов Python и, вероятно, решило различные проблемы, обнаруженные за эти годы. Для этих унифицированных рецептов Python требуется минимальный целевой уровень API 21, Android 5.0 – Lollipop. Если вам нужно построить таргетинг на уровень API ниже 21, вам следует использовать более старую версию python-for-android (

Этот проект существует благодаря всем, кто вносит свой вклад. [Внести].

Спасибо всем нашим сторонникам! 🙏 [Стать спонсором]

Поддержите этот проект, став его спонсором. Ваш логотип будет отображаться здесь со ссылкой на ваш сайт. [Стать спонсором]

В августе 2020 года я начал серию блогов среднего размера под названием "Создание приложения для Android на Python", в которой объяснял использование Kivy и Kivymd. Эти библиотеки позволяют создавать кроссплатформенные приложения с использованием Python. В этой серии я описал, как приложения для Android настраиваются в Python, его ограничения и различные ключевые элементы, из которых создается приложение для Android. В конце серии (3-я часть) я упомянул, что конвертирую приложение в APK и развертываю его на облачной платформе. Вот статья о том же! Здесь я расскажу о трех способах, которыми это преобразование может быть выполнено. Если вы не следили за этой серией или не знаете об этой библиотеке, я настоятельно рекомендую вам ознакомиться с первой частью серии:

Создание приложений для Android с помощью Python: часть 1

Пошаговое руководство по созданию приложений для Android с помощью Python

Приложения Python, созданные с помощью Kivy, нельзя напрямую перенести на телефоны Android, поскольку эти устройства поддерживают только APK (пакет приложений Android), и нам необходимо правильно их упаковать. Этот процесс преобразования возможен только в системе Linux (на данный момент), поскольку основные компоненты этого преобразования, buildozer и python-for-android в настоящее время поддерживаются только в системах на базе Linux. Это усложняет задачу начинающим разработчикам, которые обычно используют Windows-машину для всех целей кодирования. Другие проблемы включают неудачные преобразования приложения, сбой приложения при запуске или невозможность подключения к Интернету. Хотя некоторые проблемы требуют особого внимания с вашей стороны, я предоставлю вам 3 различных способа успешного преобразования приложения Python в APK.

Прежде чем двигаться дальше, давайте посмотрим на процесс конверсии:

  1. Убедитесь, что файл точки входа приложения имеет имя main.py
  2. Установка зависимостей.
  3. Инициализировать buildozer
  4. Изменить файл спецификации
  5. Начать процесс

Мы подробно рассмотрим шаги 1, 2 и 4 в следующих разделах, поскольку они не требуют каких-либо явных изменений, но необходимо понять, как правильно настроить спецификации buildozer.

Спецификационный файл buildozer автоматически создается при инициализации buildozer. Файл содержит всю конфигурацию, и приложение построено только на ее основе. В этом файле нужно изменить несколько строк, прежде чем переходить к следующим шагам (всего в файле 339 строк):

Дайте вашему приложению подходящее название, имя пакета, которое может быть просто строчным, составную версию названия, домен пакета, который может начинаться с com или org, затем перечислите требования вашего приложения и, наконец, раскомментируйте разрешения в Интернете. line, если ваше приложение требует этого. Небольшой совет: используйте определенные модули kivy и kivymd, чтобы избежать ошибок, связанных со сбоем приложения.

Первый очень очевидный способ — настроить виртуальную машину, развернуть дистрибутив Linux и установить все зависимости. Этот способ немного сложен, потому что:

  1. Не у всех из нас есть высокопроизводительные машины, поддерживающие виртуализацию. Для запуска виртуальной машины необходимо выделить не менее 4 ГБ ОЗУ для правильной работы этой виртуальной системы.
  2. Процесс настройки системы, который включает в себя установку Linux, настройку зависимостей, передачу данных из хост-системы на виртуальную машину, занимает много времени.

Вы можете настроить виртуальную коробку и установить в ней любой дистрибутив Linux. Разработчики kivy упростили установку всех зависимостей за один раз, запустив скрипт bash, который устанавливает python и другие требования для сборки приложения. В терминале

После завершения установки скрипта перейдите в каталог приложения и запустите:

Это создаст спецификационный файл buildozer, содержащий все конфигурации, которые вы можете изменить. После того, как вы закончите редактирование этого файла, запустите:

В первый раз выполнение этой команды займет больше времени, чем обычно (14–19 минут), и после этого у вас будет папка bin в каталоге приложения с APK. Перенесите приложение на любое устройство Android и проверьте, работает ли оно!

Если вы выберете этот способ, у вас будет настроенная виртуальная машина, которую можно использовать для преобразования других приложений в APK за меньшее время. Вы также можете запустить эти установки в WSL (подсистема Windows Linux) в Windows 10, если вы не хотите выбирать установку виртуальной коробки.

Для преобразования требуется среда Linux, которую Google предоставляет бесплатно! Если вы занимаетесь наукой о данных или глубоким обучением, вы должны знать об этой платформе. Он предоставляет вам виртуальную машину с 75 ГБ пространства, 12 ГБ ОЗУ и мощностью графического процессора около 12 ГБ! Вы можете использовать эту платформу для обучения модели, проверки журналов или запуска кода Python.

Поскольку это система на базе Linux, теперь требуется только установить зависимости и инициировать процесс. Вы можете напрямую использовать мой блокнот Colab, где вам просто нужно запустить все ячейки, вот и все!

Перед запуском ячеек обязательно загрузите код своего приложения в блокнот colab, а после выполнения команды инициализации бульдозера обязательно отредактируйте сгенерированный файл спецификаций и ничего больше!

Это самый простой и удобный способ создавать приложения без реальной системы! Но можем ли мы пойти еще проще? Посмотрим

Ах, он также предоставляет систему Linux, но только во время выполнения процесса. Вы мало знаете об этом? После того, как вы закончите с этой статьей, обязательно ознакомьтесь с этой статьей!

Вы можете создать пакет для Android с помощью проекта python-for-android. На этой странице объясняется, как загрузить и использовать его непосредственно на своем компьютере (см. Упаковка приложения в APK или AAB) или использовать инструмент Buildozer для автоматизации всего процесса. Вы также можете посмотреть Упаковка вашего приложения для Kivy Launcher, чтобы запускать программы Kivy без их компиляции.

Новым пользователям мы рекомендуем использовать Buildozer как самый простой способ создать полноценный APK или AAB. Вы также можете запустить приложение Kivy без этапа компиляции с помощью приложения Kivy Launcher.

Приложения Kivy можно выпускать на рынке Android, например в магазине Play, с несколькими дополнительными шагами для создания полностью подписанного AAB (Android App Bundle).

Проект Kivy включает в себя инструменты для доступа к Android API для выполнения вибрации, доступа к датчикам, отправки текстовых сообщений и т. д. Они, наряду с информацией об отладке на устройстве, задокументированы на главной странице Android .

Билдозер¶

Buildozer – это инструмент, который автоматизирует весь процесс сборки. Он загружает и настраивает все необходимые компоненты для Python для Android, включая Android SDK и NDK, а затем создает APK-файл, который можно автоматически отправить на устройство.

В настоящее время Buildozer работает только в Linux и macOS (вы все еще можете использовать его в Windows через WSL) и может значительно упростить сборку apk.

Это установит buildozer в вашей системе. После этого перейдите в каталог вашего проекта и запустите:

При этом создается файл buildozer.spec, управляющий вашей конфигурацией сборки.Вы должны отредактировать его соответствующим образом, указав имя своего приложения и т. д. Вы можете установить переменные для управления большинством или всеми параметрами, передаваемыми в python-for-android.

Наконец, подключите устройство Android и запустите:

для создания, отправки и автоматического запуска APK-файла на вашем устройстве.

Упаковка с помощью python-for-android¶

Вы также можете создавать пакеты напрямую с помощью python-for-android, что дает вам больше контроля, но требует ручной загрузки частей цепочки инструментов Android.

Упаковка вашего приложения для Kivy Launcher¶

Панель запуска Kivy – это приложение для Android, которое запускает любые примеры Kivy, хранящиеся на SD-карте. Чтобы установить программу запуска Kivy, необходимо:

Зайдите в Google Play Store и найдите Kivy Launcher на сайте kivy org

Нажмите "Установить"

Выберите свой телефон… Готово!

После установки программы запуска Kivy вы можете поместить свои приложения Kivy в каталог Kivy во внешнем каталоге хранения (часто доступный в /sdcard даже на устройствах, где эта память является внутренней), например,

должен быть каталогом, содержащим:

Файл android.txt должен содержать:

Эти параметры являются лишь базовой конфигурацией. Если вы создаете собственный APK-файл с помощью описанных выше инструментов, вы можете выбрать множество других настроек.

Установка примеров¶

В Kivy есть много примеров, и с них можно начать пробовать программу запуска Kivy. Вы можете запустить их, как показано ниже:

Запустите программу запуска и выберите одну из демонстраций Pictures, Showcase, Touchtracer, Cymunk или других...

Выпуск на рынок¶

Если вы создали свой собственный APK-файл с помощью Buildozer или Python-для-Android, вы можете создать выпускную версию, которая может быть выпущена в магазине Play или на других рынках Android.

Ориентация на Android¶

Kivy предназначен для одинаковой работы на разных платформах и, как следствие, принимает некоторые четкие дизайнерские решения. Он включает в себя собственный набор виджетов и по умолчанию создает APK или AAB со всеми необходимыми основными зависимостями и библиотеками.

Можно настроить таргетинг на определенные функции Android как напрямую, так и (в некоторой степени) кросс-платформенным способом. Дополнительную информацию см. в разделе «Использование Android API» документации Kivy для Android.

Python Kivy Framework

Если вы разработчик Python и думаете о том, чтобы приступить к разработке мобильных приложений, вам лучше всего подойдет среда Kivy. С Kivy вы можете разрабатывать независимые от платформы приложения, которые компилируются для iOS, Android, Windows, macOS и Linux. В этой статье мы рассмотрим Android именно потому, что он используется чаще всего.

Мы создадим простое приложение-генератор случайных чисел, которое вы сможете установить на свой телефон и протестировать, когда закончите. Чтобы следовать этой статье, вы должны быть знакомы с Python. Начнем!

Начало работы с Kivy

Во-первых, вам понадобится новый каталог для вашего приложения. Убедитесь, что на вашем компьютере установлен Python, и откройте новый файл Python. Вам нужно будет установить модуль Kivy со своего терминала, используя любую из приведенных ниже команд. Чтобы избежать конфликтов пакетов, убедитесь, что вы устанавливаете Kivy в виртуальной среде:

После того как вы установили Kivy, вы должны увидеть на своем терминале сообщение об успешном завершении, похожее на скриншоты ниже:

Kivy Installation Terminal
Успешный терминал установки Kivy

Затем перейдите в папку проекта. В файле main.py нам нужно импортировать модуль Kivy и указать, какую версию мы хотим. Вы можете использовать Kivy v2.0.0, но если у вас смартфон старше Android 8.0, я рекомендую использовать Kivy v1.9.0. Вы можете поэкспериментировать с разными версиями во время сборки, чтобы увидеть различия в функциях и производительности.

Добавьте номер версии сразу после строки import kivy следующим образом:

Теперь мы создадим класс, который в основном будет определять наше приложение; Я назову свой RandomNumber. Этот класс унаследует класс приложения от Kivy. Поэтому вам нужно импортировать приложение, добавив из kivy.app import App :

В класс RandomNumber вам нужно добавить функцию build , которая принимает параметр self. Чтобы на самом деле вернуть пользовательский интерфейс, мы будем использовать функцию сборки. На данный момент я вернул его как простую метку. Для этого вам нужно импортировать Label, используя строку из kivy.uix.label import Label :

Скелет нашего приложения готов!Прежде чем двигаться дальше, вы должны создать экземпляр класса RandomNumber и запустить его в своем терминале или IDE, чтобы увидеть интерфейс:

Когда вы запускаете экземпляр класса с текстом Генератор случайных чисел , вы должны увидеть простой интерфейс или окно, похожее на скриншот ниже:

Мы сделали специальное демо для .
Нет, правда. Нажмите здесь, чтобы проверить это .

Запустить генератор случайных чисел экземпляра класса

Вы не сможете запустить текст на Android, пока не закончите сборку целиком.

Аутсорсинг интерфейса

Далее нам понадобится способ аутсорсинга интерфейса. Во-первых, мы создадим файл Kivy в нашем каталоге, в котором будет храниться большая часть нашей работы по дизайну. Вы захотите назвать этот файл тем же именем, что и ваш класс, используя строчные буквы и расширение .kv. Kivy автоматически свяжет имя класса и имя файла, но может не работать на Android, если они полностью совпадают.

В этом файле .kv вам нужно указать макет приложения, включая такие элементы, как метка, кнопки, формы и т. д. Чтобы не усложнять демонстрацию, я добавлю метку для заголовка Random Number , метка, которая будет служить заполнителем для сгенерированного случайного числа _ , и кнопка "Создать", которая вызывает функцию генерации.

Мой файл .kv выглядит так, как показано ниже, но вы можете изменить значения в соответствии с вашими требованиями:

В файле main.py вам больше не нужен оператор импорта Label, поскольку файл Kivy позаботится о вашем пользовательском интерфейсе. Однако вам необходимо импортировать boxlayout , который вы будете использовать в файле Kivy.

В основной файл вам нужно добавить оператор импорта и отредактировать файл main.py, указав return BoxLayout() в методе сборки:

Если вы запустите приведенную выше команду, вы должны увидеть простой интерфейс с заголовком случайного числа, заполнителем _ и нажимаемой кнопкой создания:

Визуализировано приложение со случайными числами

Обратите внимание, что вам не нужно ничего импортировать, чтобы файл Kivy заработал. По сути, когда вы запускаете приложение, оно возвращает boxlayout, ища файл внутри файла Kivy с тем же именем, что и ваш класс. Имейте в виду, что это простой интерфейс, и вы можете сделать свое приложение настолько надежным, насколько захотите. Обязательно ознакомьтесь с документацией по языку Kv.

Сгенерировать функцию случайных чисел

Теперь, когда наше приложение почти готово, нам понадобится простая функция для генерации случайных чисел, когда пользователь нажимает кнопку генерации, а затем для отображения этого случайного числа в интерфейсе приложения. Для этого нам нужно кое-что изменить в наших файлах.

Сначала мы импортируем модуль, который будем использовать для генерации случайных чисел с помощью import random . Затем мы создадим функцию или метод, который вызывает сгенерированное число. Для этой демонстрации я буду использовать диапазон от 0 до 2000. Сгенерировать случайное число просто с помощью команды random.randint(0, 2000). Мы добавим это в наш код через минуту.

Далее мы создадим еще один класс, который будет нашей собственной версией макета блока. Наш класс должен будет наследовать класс box layout, в котором находится метод для генерации случайных чисел и отображения их в интерфейсе:

В этом классе мы создадим метод generate, который будет не только генерировать случайные числа, но и манипулировать меткой, управляющей тем, что отображается как случайное число в файле Kivy.

Чтобы использовать этот метод, нам сначала нужно внести изменения в файл .kv . Поскольку класс MyRoot унаследовал макет блока, вы можете сделать MyRoot элементом верхнего уровня в вашем файле .kv:

Обратите внимание, что вы по-прежнему сохраняете все спецификации пользовательского интерфейса с отступом в макете блока. После этого вам нужно добавить идентификатор к метке, которая будет содержать сгенерированные числа, что упростит манипулирование при вызове функции генерации. Вам нужно указать связь между идентификатором в этом файле и другим в основном коде вверху, непосредственно перед строкой BoxLayout:

Строка random_label: random_label в основном означает, что метка с идентификатором random_label будет сопоставлена ​​с random_label в файле main.py, а это означает, что любое действие, которое манипулирует random_label, будет сопоставлено с меткой с указанным именем.

Теперь мы можем создать метод для генерации случайного числа в основном файле:

Класс MyRoot должен выглядеть так, как показано ниже:

Поздравляем! Теперь вы закончили с основным файлом приложения. Осталось только убедиться, что вы вызываете эту функцию при нажатии кнопки генерации. Вам нужно только добавить строку on_press: root.generate_number() в часть выбора кнопки вашего файла .kv:

Теперь вы можете запустить приложение.

< /p>

Компиляция нашего приложения на Android

Прежде чем скомпилировать наше приложение для Android, у меня есть плохие новости для пользователей Windows. Вам понадобится Linux или macOS для компиляции вашего приложения для Android. Однако вам не нужно иметь отдельный дистрибутив Linux, вместо этого вы можете использовать виртуальную машину.

Чтобы скомпилировать и создать полноценное приложение Android .apk, мы будем использовать инструмент под названием Buildozer. Давайте установим Buildozer через наш терминал, используя одну из команд ниже:

Теперь мы установим некоторые из необходимых зависимостей Buildozer. Я работаю в Linux Ergo, поэтому буду использовать специфичные для Linux команды. Вы должны выполнять эти команды одну за другой:

После выполнения определенных команд запустите buildozer init . Вы должны увидеть результат, аналогичный показанному на снимке экрана ниже:

Buildozer Init Output

Приведенная выше команда создает файл .spec Buildozer, который можно использовать для создания спецификаций вашего приложения, включая имя приложения, значок и т. д. Файл .spec должен выглядеть как блок кода ниже:

Если вы хотите указать такие вещи, как значок, требования, экран загрузки и т. д., отредактируйте этот файл. После внесения всех необходимых изменений в приложение запустите buildozer -v android debug из каталога приложения, чтобы собрать и скомпилировать приложение. Это может занять некоторое время, особенно если у вас медленная машина.

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

Журналы терминала построены успешно

В вашем каталоге bin также должна быть APK-версия вашего приложения. Это исполняемый файл приложения, которое вы установите и запустите на своем телефоне:

Android APK Bin Directory

Заключение

Поздравляем! Если вы следовали этому руководству шаг за шагом, у вас должно быть простое приложение генератора случайных чисел на вашем телефоне. Поэкспериментируйте с ним и настройте некоторые значения, а затем перестройте. Запуск перестроения займет не так много времени, как первая сборка.

Как видите, создать мобильное приложение с помощью Python довольно просто, если вы знакомы с платформой или модулем, с которым работаете. Несмотря на это, логика выполняется одинаково.

Познакомьтесь с модулем Kivy и его виджетами. Никогда нельзя знать все сразу. Вам нужно только найти проект и замочить ноги как можно раньше. Удачного кодирования.

LogRocket: полная видимость ваших веб-приложений

Баннер бесплатной пробной версии LogRocket Dashboard

LogRocket — это решение для мониторинга внешних приложений, позволяющее воспроизводить проблемы так, как если бы они возникли в вашем собственном браузере. Вместо того, чтобы гадать, почему возникают ошибки, или запрашивать у пользователей скриншоты и дампы журналов, LogRocket позволяет вам воспроизвести сеанс, чтобы быстро понять, что пошло не так. Он отлично работает с любым приложением, независимо от платформы, и имеет плагины для регистрации дополнительного контекста из Redux, Vuex и @ngrx/store.

Помимо регистрации действий и состояния Redux, LogRocket записывает журналы консоли, ошибки JavaScript, трассировки стека, сетевые запросы/ответы с заголовками и телами, метаданные браузера и пользовательские журналы. Он также использует DOM для записи HTML и CSS на странице, воссоздавая идеальные до пикселя видеоролики даже для самых сложных одностраничных и мобильных приложений.

Поделиться:

Samuel Martins Подписаться Я разработчик полного стека и люблю делиться с людьми знаниями, накопленными за многие годы. Различные технологии, с которыми я столкнулся на своем пути, позволяют мне одинаково относиться как к новичкам, так и к пожилым людям. Я пишу обо всем, что связано с технологиями.

Читайте также: