Buildozer и Python для Android

#python #kivy #buildozer #p4a #python-for-android

#python #kivy #buildozer #p4a #python для Android

Вопрос:

Я создал среду Conda в своей системе Manjaro Linux. Когда я разрабатываю приложение Kivy и запускаю его, оно работает нормально. Затем, когда я собираюсь скомпилировать его в APK для запуска на моем планшете Android, я сталкиваюсь со странной проблемой. Я могу успешно создать APK и установить его на свой планшет. Но… Python-для-Android загружает пакеты, которые я уже установил, при сборке моего APK. Иногда он загружает версии, которые я не использую. и иногда он не может найти пакет, который я уже установил.

Мой вопрос заключается в следующем: Как я могу переопределить (возможно, в моем файле спецификации Buildozer) пакеты загрузки P4A (я думаю, это называется recipes) и ПРОСТО ИСПОЛЬЗОВАТЬ пакеты, которые я уже загрузил и установил в своей среде Conda. (таким образом, мой скомпилированный APK-файл будет в точности идентичен приложению Kivy, которое я запускаю на своем компьютере с Linux.)

Ответ №1:

Я столкнулся со странной проблемой. Я могу успешно создать APK и установить его на свой планшет. Но… Python-для-Android загружает пакеты, которые я уже установил, при сборке моего APK. Иногда он загружает версии, которые я не использую

Это не странная проблема, просто так работает python для Android. Для этого необходимо установить пакеты для среды Android, что не обязательно возможно с использованием того, что у вас есть локально, и даже если бы это было так, это все равно более простой способ работы python для Android.

Мой вопрос заключается в следующем: Как я могу переопределить (возможно, в моем файле спецификации Buildozer) пакеты загрузки P4A (я думаю, это называется recipes) и ПРОСТО ИСПОЛЬЗОВАТЬ пакеты, которые я уже загрузил и установил в своей среде Conda

Вы не можете. В файле buildozer.spec есть опции для указания исходного каталога для данного рецепта, но для этого необходимо указать исходный каталог проекта (т. Е. Для модуля python корневой каталог с setup.py ), а не установленный пакет в другой среде python.

В зависимости от того, как conda кэширует пакеты, вы можете указать на то, что он извлек, но это не будет работать, например, для wheels.

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

Если это ваша цель, вы можете указать версии для вещей, используя requirements=package==version , например requirements=colorama==0.4.4 . Однако для пакетов, установленных с использованием рецептов, могут поддерживаться не все версии, обычно рекомендуется использовать значения по умолчанию. Например, поддерживаются только некоторые младшие версии python3.