Публикация Qt-приложения для Android

Я немножко доработал игрушку на Qt из предыдущей статьи, выложил ее на google play и решил описать всё, что мне показалось интересным в этом процессе: получение аккаунта разработчика, сборка приложения для google play, проблемы с файлами дополнений и отладка приложения.

Для того, чтобы размещать приложения на площадке гугла, надо иметь аккаунт разработчика для google play [2]. Регистрация стоит денег (в районе 900 рублей), которые требуют переводить с банковской карты типа Visa, MasterCard или некоторых другие. У меня было 2 банковских карты — зарплатная MasterCard и Visa Momentum. Обе не подошли, пришлось заказывать новую карту Visa Classic (заняло 2 недели).

Сборка Qt-приложения для google play

До того, как выложить игру на маркет, я собирал .apk-файл для android, копировал его на телефон или передавал товарищам. Несмотря на то, что я использовал тип сборки выпуск (release), почему-то получался файл с префиксом debug и я не придавал этому значения,пока гугл не сообщил, что отладочная версия его не устроит. Для сборки релизной версии не достаточно установить галочку «выпуск» в настройках проекта, надо покопаться в настройках установки (проекты->run->конфигурация установки).

project_settings

Выбор типа сборки

В настройках установки можно выбрать установку Ministro — тогда ваше приложение будет «весить меньше», но при первом запуске будет устанавливать Ministro, которое подгрузит нужные библиотеки, это удобно при отладке приложения на своем телефоне. Установка во временный каталог тоже используется при отладке, а для выпуска приложения на маркет надо внедрять библиотеки в .apk-файл.

install_configure

Конфигурация установки

У вас никак не получится собрать релиз без подписывания пакета, а для этого нужно создать связку ключей (keychain), щелкнув соответствующую кнопку в окне конфигурации установки.

make_keychain

Создание связки ключей и сертификата

В появившемся окне я ввел только пароль и персональные данные, остальные поля оставил со значениями по умолчанию. Теперь при сборке у вас должна получаться релизная версия, но при загрузке на маркет, вы будете получать ошибку о том, что приложению надо установить иконку (добавлен иконок на сайте маркета тут не при чем).

Для добавления иконки нужно создать файл манифеста (кнопкой на экране конфигурации установки).

manifest_settings

Настройка манифеста

Файл манифеста можно редактировать как руками (это .xml-файл), так и специальным инструментом, встроенным в Qt Creator. В файле манифеста нужно указать:

  • имя пакета — идентификатор приложения на маркете;
  • код и название версии — вы будете менять их всякий раз при обновлении приложения;
  • иконку приложения — я добавил только одну иконку 512х512 пикселей (иконку такого же размера потом надо будет добавить на маркет);
  • разрешения — если ваше приложение работает с интернетом, файловой системой и т.п., то дополнительные разрешения надо будет выбрать из выпадающего списка. При установке приложения пользователя предупредят о том, куда лезет ваша программа.

Теперь приложение соберется для выпуска и .apk файл можно будет загрузить на маркет.

apk_load

Загрузка .apk-файла

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

load_inons

Загрузка иконок и рекламных изображений

После этого приложение можно опубликовать как альфа-/бета-версию, нагнать тестеров, а затем повысить до рабочей версии.

Файлы дополнения на Android

В игрушку я добавил меню, позволяющее выбрать уровень. Перед тем, как выкладывать приложение на маркет, я прочитал про файлы дополнений. Прочитал плохо, отсюда появилась проблема — я захотел обновлять приложение изменяя лишь файл дополнений (я подумал, что пользователю приятнее скачать несколько килобайт файла с описанием уровней, чем 10 мегабайт приложения), но это оказалось невозможно. Изменить файл дополнения можно лишь изменив .apk-файл, который оно дополняет, при этом обязательно изменится версия приложения (указанная в файле манифеста).

Можно попытаться найти обходные пути — например, хранить файл с описанием уровней на каком-нибудь сервере в интернете, но тогда приложение не будет автоматически обновляться (как это делается через google play). Пользователь не узнает о новых уровнях, пока не откроет приложение в то время, когда будет иметь доступ к интернету и сервер с файлом уровней будет доступен. В общем, лучше так не делать.

Пока я возился с дополнениями, я столкнулся с еще одной проблемой — при загрузке, оно переименовывается и размещается далеко не в том же каталоге, что и .apk файл. Чтобы обратиться к нему, надо будет сначала получить путь к каталогу с дополнениями, а это можно сделать с использованием QtAndroidExtras. В общем, это не так красиво, как хотелось бы и я не стал заморачиваться.

Тестирование приложения на google play

Очень понравилась организация тестирования на google play. У приложения есть 3 стадии:

  • альфа-версия. Приложение не доступно для поиска в маркете, никто случайно его не установит и ругаться не будет. В настройках проекта (на той же вкладке, где вы загружали .apk файл) есть кнопка «изменить список тестировщиков«. Можно либо добавлять тестеров по одному (с указанием из почты на gmail), либо добавить сообщество google+ (я создал сообщество). Все люди, вошедшие в сообщество, получают доступ к тестированию, но на маркете они найти приложение до сих пор не могут, поэтому в сообществе стоит разместить ссылку на приложение. Понравилось то, что есть хорошая возможность прорекламировать сообщество и игрушку в социальной сети google. Сообщество — это место для обсуждения, т.е. в нем Вам могут написать о пожеланиях и найденных ошибках;
  • бета-версия. Приложение по прежнему не доступно через поиск на google play, но для его тестирования уже не обязательно вступать в сообщество, достаточно воспользоваться ссылкой (это очень удобно для поиска тестеров на сторонних сайтах, не связанных с google+);
  • рабочая версия. Приложение доступно через поиск, его могут скачивать, ставить плохие оценки и писать отзывы.

Ссылку на тестирование я разместил на нескольких тематических сайтах [3, 4, 5], игрушку попробовали, нашли один баг и даже приложили архив с забавным звуком топота ежика. В общем, я думаю, что публиковать ссылки на приложение нужно везде, это поможет сделать программу лучше.

Ссылки по теме:

  1. Разработка игры на С++, Qt // URL: https://pro-prof.com/archives/1520
  2. Регистрация разработчиков google play // URL: https://support.google.com/googleplay/android-developer/answer/6112435?hl=ru&visit_id=1-636242945450941482-2796141705&rd=1
  3. Форум Google Android — это не сложно // URL: http://forum.startandroid.ru/index.php
  4. Форум программистов — Обсуждение программ // URL: http://programmersforum.ru/forumdisplay.php?f=25
  5. 4PDA — Создание игр под Android // URL: http://4pda.ru/forum/index.php?showforum=550
  6. Описание проекта, исходный код // URL: https://pro-prof.com/about/projects

5 thoughts on “Публикация Qt-приложения для Android

    1. admin Post author

      Нет, не монетизировал. Пока что стыдно за него деньги брать. Мне самому игра не очень нравится (хотя пользователи на маркете оценили хорошо — сейчас 4.71 средняя оценка). Это было неожиданно, но приятно. Ну и пара недочетов в ней серьезных есть:
      — один юзер пожаловался на низкое качество анимации (на большом экране у него мыло);
      — другой сообщил, что если приложение не закрыть, а свернуть, то оно продолжает потреблять вычислительный ресурс и быстро разряжает батарею телефона.

      Первый недочет связан с тем, что я использовал gif-анимацию (хотя художник нарисовал все в векторе). Мы попробуем исправить качество картинки заменой .gif на .apng или .mng.

      Второй недочет связан с ошибкой в библиотеке Qt. Я описал ошибку в багтрекере и ее уже исправили. Релиз Qt планируется на конец октября, тогда я и собираюсь выложить новую версию на маркет.

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

      Когда допилим это — подумаем о монетизации, хотя я думаю, что монетизировать его можно только пожертвованиями… Я смотрел на кикстартер, но опытный товарищ подсказал, что с него очень трудно вывести деньги в Россию — нужно договариваться с каким-нибудь американцем чтобы он получил деньги и выслал тебе. Есть отечественные аналоги, но популярность у них совсем иная — я не думаю что из РФ кто-нибудь даст 100 рублей (образно) ради строчки с благодарностью на соответствующей вкладке игры.

  1. Павел

    Спасибо за статью. Как раз в скором времени планируем выйти на Play Market со своим проектом. Особенно интересно было узнать про альфа-версии и возможность совмещать их с сообществами google+

    На счёт оплаты аккаунта разработчика: если нет подходящей карты, можно воспользоваться QIWI Visa Wallet, это несколько быстрее и проще чем заказывать карту.

    1. admin Post author

      Спасибо за отзыв.
      В течении пары месяцев мы постараемся выпустить новую версию игрушки, а затем, возможно подумаем над монетизацией. Сегодня поинтересовался вопросом, оказалось что с монетизацией под Android у Qt не все гладко — на хабре есть статья на эту тему, где автор описывает что мучился неделю чтобы прикрутить AdMob. Сами мучения там не описаны, прикреплена ссылка на гитхаб с тестовым проектом. Реклама там вкручивается через QML.

      Я, в общем, пишу это затем, что возможно этот момент надо учитывать, если Вы с проектом хотите выходить на Play Market.
      Буду очень рад и признателен Вам, если вы напишите тут как у Вас прошел этот процесс. Например, в платной версии Qt была такая штука, как Qt-Purchasing — она позволяет размещать рекламу в приложениях под iOs и Android. В новостном канале Qt я читал о том, что функционал платной версии стал бесплатным, но я не интересовался деталями. Возможно и Qt-Purchasing теперь можно использовать без покупки платной версии.

      Я пока что не углублялся в это и очень прошу описать Вас о результатах, если что-то получится :)

Добавить комментарий