Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Мобильное приложение на Python c kivy/buildozer — ключ к успеху

Мобильное приложение на Python c kivy/buildozer — ключ к успеху

Владислав Шашков (Сбербанк) @ MoscowPython Meetup 53
"Как известно, на Python можно написать практически что угодно: веб- и настольные приложения, игры, скрипты автоматизации, комплексные системы расчёта, хранимые процедуры СУБД, IoT, ML и многое другое. И чем бы кто ни занимался, рано или поздно возникнет потребность сделать дружелюбный фронт. А значит, реальный опыт создания мобильного приложения на Python будет интересен многим. Тем более что там есть подводные камни — если о них знать, можно сэкономить много времени. Моя история будет интересна не только разработчикам, но и продуктологам. Из собственного опыта берусь утверждать, что новые продуктовые идеи уже не продаются в виде презентаций и кликабельных прототипов, а продаются в виде работающего сервиса. Быстро и эффективно это получается делать на Python".
Видео: http://www.moscowpython.ru/meetup/53/mobile-app-with-kivy/

Moscow Python Meetup
PRO

February 22, 2018
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Мобильное приложение
    на python c kivy
    Шашков Владислав
    https://www.facebook.com/vlad.shashkov
    [email protected]

    View Slide

  2. Хорошая
    новость!
    Python и
    мобильные
    приложения
    дружат!
     https://kivy.org (развивается с 2011г.)
     Графическая библиотека UI кросс-платформенных
    приложений Android и iOS на Python
     Язык разметки KV - «как бы HTML выглядел, если бы
    он был на python»
     KivyMD – набор виджетов в стиле Material Design
     Просто создавать приложения со стандартным,
    нативным дизайном

    View Slide

  3. Возможности
    KivyMD
    Демонстрация набора
    виджетов KivyMD
    На iOS выглядят так же

    View Slide

  4. Плохая
    новость.
    Надо
    победить
    бульдозер!
     Не стоит заморачиваться установкой kivy, python-for-android…
     Стоит победить «готовый» образ с buildozer’ом.

    View Slide

  5. step-by-step
    к первой .apk
    1. Качаем образ buildozer version 2.0, released the 13 May 2017 по ссылкам
    https://kivy.org/#download
    2. В Oracle VM VirtualBox 5.2+ делаем «Импорт конфигурации» из образа.
    Обязательно добавить ОЗУ VM > 3Гб.
    3. Обновляем последовательно:
    1. sudo pip install --upgrade wheel
    2. sudo pip install --upgrade setuptools
    3. sudo pip install --upgrade buildozer
    4. sudo pip install --upgrade python-for-android
    5. Больше ничего сами не обновляем.
    4. Работающее сочетание версий:
    1. wheel: 0.30.0
    2. Setuptools: 36.6.0 (38.4.1)
    3. Buildozer: 0.34
    4. python-for-android: 0.6
    5. Kivy: 1.10.1.dev (или 1.10)
    5. Обновить ОС VM до 17.10 чтобы включить контролер USB.
    6. В корневой папке /build/ создаем папку для приложения “HelloWorld”.
    При первой сборке установятся компоненты, SDK и все такое.

    View Slide

  6. Hello world
    buildozer.spec
    https://github.com/VladShashkov/kivy_HelloWorld

    View Slide

  7. UIX (Widgets
    & Layouts)
     Виджеты (Widgets) - это кнопки, слайдеры,
    списки и т. д. Виджеты получают События.
     Макеты (Layouts) используются для
    позиционирования виджетов на экране.

    View Slide

  8. Hello world
    Разметка
    https://github.com/VladShashkov/kivy_HelloWorld

    View Slide

  9. Hello world
    Код
    https://github.com/VladShashkov/kivy_HelloWorld

    View Slide

  10. Запустим на
    телефоне!

    View Slide

  11. Подготовка
    телефона
    Включить режим
    разработчика на своем
    телефоне.
    Пункт «Для разработчиков»
    активируется в разделе
    НАСТРОЙКИ / О ТЕЛЕФОНЕ
    / НОМЕР СБОРКИ. По
    последнему пункту тапаем 5
    раз. После этого в разделе
    НАСТРОЙКИ появится
    пункт «Для разработчиков»
    Но это неточно)

    View Slide

  12. Подключение
    телефона
    Выбрать подключение телефона к виртуальной
    машине

    View Slide

  13. Подключение
    телефона
    Разрешить отладку
    на телефоне

    View Slide

  14. Сборка
    buildozer android debug

    View Slide

  15. Установка на
    телефон
    adb install bin/HelloWorld-0.1-debug.apk

    View Slide

  16. Отладка
    adb logcat > log.txt

    View Slide

  17. Работа с
    платформой
    Возможности библиотеки plyer:
    Platform Android iOS
    Accelerometer + +
    Barometer + +
    Audio recording +
    Battery + +
    Brightness + +
    Call + +
    Camera (taking picture) + +
    Compass + +
    Email (open mail client) + +
    Flash + +
    GPS + +
    Gravity + +
    IR Blaster +
    Notifications +
    Platform Android iOS
    Text to speech + +
    Vibrator + +
    Sms (send messages) + +
    Unique ID + +
    Gyroscope + +
    IR Blaster +
    Light +
    Orientation +
    Proximity +
    Humidity +
    Spatial Orientation + +
    Storage Path + +
    Temperature +

    View Slide

  18. Сканирование
    штрих-кодов
    С использованием jnius
    работа с java-классами
    https://github.com/VladShashkov/kivy_zbar

    View Slide

  19. Garden –
    сторонние
    аддоны для
    Kivy
    # (list) Application requirements
    requirements = kivy==master, openssl,
    futures, requests
    # (list) Garden requirements
    garden_requirements = mapview
    # (list) Permissions
    android.permissions = INTERNET
    Например: mapview
    Подключение в buildozer.spec

    View Slide

  20. Release
    1. Собираем с параметром release
     buildozer android release
    2. Готовим ключи
     export P4A_RELEASE_KEYSTORE_PASSWD=***
     export P4A_RELEASE_KEYALIAS_PASSWD=***
     keytool -genkey -v -keystore
    ./keystores/YOURNAME.keystore -alias pmkey -keyalg RSA -
    keysize 2048 -validity 10000
     export P4A_RELEASE_KEYALIAS=pmkey
     export
    P4A_RELEASE_KEYSTORE=~/keystores/YOURNAME.keystore
    3. Подписание apk
     kjarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1
    -keystore ./keystores/YOURNAME.keystore bin/YOURAPP-
    1.0.1-release-unsigned.apk pmkey ***
     ~/.buildozer/android/platform/android-sdk-20/build-
    tools/27.0.1/zipalign -v 4 ./bin/YOURAPP-1.0.1-release-
    unsigned.apk ./bin/YOURAPP.apk
    4. Публикация в Google Play

    View Slide

  21. Спасибо за
    внимание
    Об авторе:
    Шашков Владислав
    АЛФ, планирование расходов
    ПАО Сбербанк
    [email protected]
    https://www.facebook.com/vlad.shashkov
    +7-985-660-55-67
    Пример приложения на Kivy:
    https://play.google.com/store/apps/details?id=ru.pricemer.pricemer
    Актуальная документация:
    https://media.readthedocs.org/pdf/kivy/latest/kivy.pdf
    Спасибо за поддержку: https://vk.com/kivy_ru

    View Slide