Установка Kivy, Buildozer и создание .apk файла является основополагающим шагом разработки приложений для Android с Python. В этой статье мы установим Buildozer для автоматического создания .apk и другие зависимости.
Как установить и настроить Java, читаем тут
Java нам необходима для компиляции нашего .apk
Установка PIP
Для установки pip, нужно скачать и запустить файл get-pip.py
$ cd /tmp/
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ sudo python get-pip.py
Если setuptools еще не установлен, get-pip.py установит его для вас, можно также почитать про процесс установки и тут -> https://pip.pypa.io/en/stable/installing/
Установка VIRTUALENV (виртуального окружения) в систему
$ sudo pip install virtualenv
Обновим следующие пакеты
$ sudo pip install --upgrade pip virtualenv setuptools
Или
$ sudo pip install -U pip virtualenv setuptools
Установка системных зависимостей
$ sudo apt-get install -y python build-essential mercurial git libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev zlib1g-dev
Установка ffmpeg
$ sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
$ sudo apt-get update
$ sudo apt-get install ffmpeg
Установка SDL2
$ sudo apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
Установка PyGame
$ sudo apt-get install -y libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev libsdl1.2-dev
$ sudo apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
Установка PyGame
$ sudo apt-get install -y libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev libsdl1.2-dev
Установка зависимостей для 32bit
$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386
Установка python-dev
$ sudo apt-get install python-dev
Далее переходим в каталог, где мы хотим создать виртуальное окружение.
Создаем виртуальное окружение c опцией --no-site-packages
Создаем виртуальное окружение c опцией --no-site-packages
pyvenv - название нашей папки
$ virtualenv --no-site-packages pyvenv
$ cd pyvenv
Активируем виртуальное окружение
$ source bin/activate
После предыдущей команды появится имя нашей папки в круглых скобках (pyvenv)vlad@vs:/media/vlad/android/pyvenv$
(pyvenv) - это название нашего виртуального окружения и это означает, что оно активировано и все пакеты будут устанавливаться именно сюда.
Для того, что-бы выйти из окружения нужно выполнить
$ deactivate
Установка Numpy
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install -U numpy
Установка Cython
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install --upgrade cython
Установка Kivy
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install kivy
Дополнительно, если что-то не получилось -> Installation in a Virtual Environment
Затем установим Buildozer, который необходим для создания .apk файла
Способ 1
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install buildozer
Способ 2
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install git+https://github.com/kivy/buildozer.git@master
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install git+https://github.com/kivy/buildozer.git@master
Установка Plyer
Plyer еще один модуль для Kivy который предоставляет множество интерфейсов для разных устройств и операционных систем
Plyer еще один модуль для Kivy который предоставляет множество интерфейсов для разных устройств и операционных систем
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install git+https://github.com/kivy/plyer.git@master
Далее установим KivyCatalog
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install -U pygments docutils
Проверяем как установился наш Kivy
Здравствуйте. Делал по вашим рекомендациям строго по шагам и не заметил что папка виртуального окружения создалась в каталоге /tmp. Есть какая либо возможность переместить ее в домашнюю директорию? Или повторить заново все шаги начиная с создания папки виртуального окружения?
ОтветитьУдалитьЗаранее спасибо за ответ.
Для того, чтобы перенести папку, используйте следующую команду:
Удалитьmv -f /tmp/folder_name/ /home/user_name/
Но я не уверен, насчет зависимостей, которые вы установили в виртуальное окружение, будут ли они работать.
Спасибо за ответ. Пришлось устанавливать заново. Мучаюсь уже второй день - apk собирается а на устройстве или эмуляторе не хочет запускаться. Пишет загрузка и программа закрываеться. Не знаете что это может быть?
УдалитьНа днях сделаю третью часть "как установить .apk на эмулятор или телефон. Тут еще много всяких нюансов, которые нужно знать. По этому так сразу не ответишь на ваш вопрос. Нужно во первых знать в какой OS вы работаете, а во вторых сколько бит 32 или 64.
УдалитьРазобралься. Питоновский файл должен обязательно называться main.py.
УдалитьЗдравствуйте,делал всё по шагам пока не споткнулся на установке пакетов libsdl2 зависимости есть говорит. Подскажите пожалуйста, как решить?
ОтветитьУдалитьНичего страшного, значит у вас уже была эта библиотека, следуйте дальше по шагам.
УдалитьК сожалению не установился у меня Kivy, из-за этих зависимостей..
Удалитьhttps://launchpad.net/ubuntu/+source/libsdl2/2.0.2+dfsg1-3ubuntu1.1
Удалитьhttps://launchpad.net/ubuntu/+source/pcre3/1:8.31-2ubuntu2.1
Вкрутил эти два пакета нагло,перезагрузил ПК с запуском Recovery Mode==> dpkg ....
в Терминале проверил python=>import kivy всё вывело 1,9 версию
P.S. Совет: Вместо apt-get,Лучше используйте aptitude он круче..
aptitude делает все за вас, а с apt-get нужно самому понимать, то что вы собираетесь сделать
УдалитьТут есть момент. Я не очень знаю Ubuntu, спасибо Володя что дал ссылку на оф. установку.
ОтветитьУдалитьПри установке Kivy нужно смотреть вресию Cython там табличка есть,например для версии ivy1..9.1 нужен Cython 0.23
значит нужно писать так
pip install Cython==0.23
Тогда и Kivy нормально становится, но в любом случае табличку посмотреть.
Валерий, спассибо, что заметили. Я тоже сначала так делал:
ОтветитьУдалитьpip install Cython==0.23
но потом на практике когда использовал с разными версиями Python и Kivy, то возникали ошибки. В итоге я решил делать вот-так, установка и затем обновление sudo pip install --upgrade cython
Вся загвоздка в том, что Cython устанавливается не в виртуальное окружение, а в сому систему, отсюда и ошибки.