python

Kivy и Play Store

  • среда, 20 мая 2015 г. в 02:11:21
http://habrahabr.ru/post/189660/

Около года назад я поучаствовал в конкурсе Kivy App Contest 2014. Игрушка заняла одно из призовых мест (номинация «лучшая идея») и ко мне неоднократно обращались с просьбой выложить её на маркет. Я долго откладывал, но позавчера наконец созрел и потратив вечер — выложил. Оказалось всё совсем просто и я решил написать эту инструкцию для тех, кто, как и я, пишет на киви «в стол». Ну или тех, кто пишет на Питоне и не в курсе, что на нём можно легко писать андроидные аппликации и даже выкладывать их в маркете. Инструкция рассчитана на таких же как я полнейших чайников в разработке под Android. Профессионалам можно здесь прекратить чтение, а можно поправить/дополнить в комментариях.

Для начала пара слов для тех, кто на киви (пока, это не надолго) не пишет. Киви — это очень удобный фреймворк, позволяющий на чистом Питоне писать аппликации и компилировать их для Linux, Windows, OS X, Android и iOS практически не меняя код.
Сайт фреймворка.
Хороший видеокурс для начинающих и продолжающих
Список проектов написанных на киви

Итак, у вас есть аппликация на киви, она прекрасно работает на PC и теперь вы хотите выложить её на Play Store. Что для этого нужно?

Для начала — убедиться, что на андроиде она работает не менее прекрасно. Проверить это есть два способа.
Первый из них — установить на устройстве аппликацию Kivy Launcher и с её помощью запустить аппликацию прямо из исходников. Это очень удобно, а при наличии хорошего текстового редактора можно даже разрабатывать прямо на телефоне/таблете. Но есть один нюанс. Аппликация не должна пользоваться внешними библиотеками — только киви и стандартной библиотекой Питона. Если внешние библиотеки используются, всё ещё есть шанс запустить — проверьте, что библиотека не содержит никаких бинарников, только чистый Питон. Если это так, просто поместите её локально в папку с аппликацией и поменяйте соответственно импорты. Если бинарники всё-таки есть, из исходников запустить не выйдет, придётся компилировать. Для начала проверьте, есть ли используемые библиотеки в списке рецептов.

Если нет, придётся разбираться с компиляцией самостоятельно или общаться в чате с разработчиками (рекомендую, очень отзывчивые товарищи). Но большинство популярных и важных библиотек уже давно в этом списке.

Всё что описано дальше, выполняется на маке или линуксе. На винде придётся ставить виртуальную машину и образ. На этой страничке можно скачать образ с предустановленным билдозером.
Устанавливаем программу buildozer (pip install buildozer). Заходим в папку с аппликацией и запускаем buildozer init. В папке появляется файл buildozer.spec. Меняем там настройки по вкусу, то, что действительно важно — requirements, а когда дело дойдёт до релиза — версия, впрочем, файл прекрасно документировал и разобраться с ним — дело пары минут. А, ну да, ещё уровень логов в начале полезно поставить 2 вместо 1, чтобы видеть почему компиляция падает, если она падает. Затем запускаем buildozer android debug.

Если всё прошло успешно, в папке с проектом появится папка bin, а в ней apk файл.
Проверяем программу, любым из двух способов, обрабатываем напильником, доводим до совершенства (шучу, совершенства не бывает). Очень полезна опция logcat. Подсоединяем устройство к компьютеру usb кабелем запускаем buildozer logcat, запускаем аппликацию и смотрим на компьютере логи и трейсбэки. Мне пригодилось, когда аппликация просто молча вылетала при запуске…

Итак, у вас есть аппликация на киви, она прекрасно работает на андроиде и теперь вы хотите выложить её на Play Store. Что для этого нужно?

сначала компилируем релиз-версию:
buildozer android release
Получаем unsigned apk, его нужно подписать. А для этого нужно создать ключ.
Запускаем:
keytool -genkey -v -keystore путь_туда_где_будет_лежать_ключ/имя_ключа.keystore -alias короткое_имя_для_ключа -keyalg RSA -keysize 2048 -validity 10000

Ключ готов. Его нужно сохранить и беречь как зеницу глаза. Теперь нужно подписать аппликацию этим ключом (при выкладывании новых версий аппликаций пользуемся тем же самым ключом, новый создавать не нужно).
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore путь_туда_где_лежит_ключ/имя_ключа.keystore путь_к_проекту/bin/неподписанный_apk короткое_имя

Теперь хоть файл и называется unsigned, он уже подписан. Теперь желательно оптимизировать его утилитой zipalign. она лежит в android sdk, который buildozer скачивает при установке.

zipalign -v 4 путь_к_подписанному_apk путь_туда_где_будет_лежать_готовый_apk

Итак у вас есть готовый apk.

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

Картинки следующие — иконка приложения которая будет отображаться на устройстве (её нужно прописать в buildozer.spec), иконка приложения (512х512), которая будет отображаться в маркете. Скриншоты для телефона, семидюймовых таблетов, десятидюймовых таблетов (в общем для тех устройств, для которых аппликация будет показываться в маркете) и картинка 1024х500 для раздела рекомендуемое (ага, знаю, смешно, но это обязательно к заполнению). Я всё вышеперечисленное нарезал за пару минут из скриншотов, но безусловно лучше потратить время и сделать что-нибудь качественное.

Когда есть аппликация и все картинки, идём наконец в консоль разработчика, регистрируемся если ещё не, платим Гуглу за удовольствие 25$ (может об этом надо было написать в начале статьи?) расставляем все картиночки, пишем описания, отвечаем на пару вопросов для получения возрастного рейтинга, загружаем apk, ждём несколько часов подтверждения и любуемся приложением в маркете. Ссылки на выложенные приложения кидайте в комменты.