23 February 2012

Qt и Android Market или вторая жизнь Анаграмм

Development for Android
В конце ноября мне стукнула моча в голову и я написал достаточно глупый и несуразный пост об одном из своих приложений, находящийся здесь. Тогда пост был заминусован, что в принципе логично, учитывая то, какого качества он был.

Тем не менее, от того, что пост был хреновым, само приложение хуже не стало. Хоть и на некоторое время было отложено в долгий ящик. Вчера вечером, я как-то мельком проглядывал блог ребят из Сutehacks, компании, занимающейся разработкой Qt приложений и старающихся сделать на этом денежку. Так вот, просматривая блог, я наткнулся на пост, в конце которого была презентация под названием «Targeting Android with Qt».

В этой презентации, помимо каких-то абстрактных мыслей, разработчики подробно объяснили, какие шаги необходимо сделать для того, чтобы портировать своё приложение на новую платформу, а затем и загрузить его в Android Market. Здесь я хочу вкратце перечислить эти этапы, а всю дополнительную информацию желающие смогут получить из оригинальной презентации на Slide Share.

image


Итак, что нам нужно сделать:
  1. Написать приложение на Qt
  2. Используя Necessitas Qt SDK собрать и протестировать его для платформы Android
  3. Внести некоторые правки в AndroidManifest.xml и пересобрать приложение
  4. Подписать своё приложение RSA-ключом
  5. Зарегистрироваться в Android Market
  6. Опубликовать своё приложение
  7. Тестируем загрузку из маркета

Стоит упомянуть, что на вчерашний вечер, у меня были завершены лишь первые 2 пункта. По первому пункту писать что-то смысла не вижу, второй же пункт ведёт на одну из статей хабра, посвящённую рассматриваемой тематике.

Начнём с третьего. в файле AndroidManifest.xml нашего проекта, необходимо будет поправить 2 строчки:
---a/android/AndroidManifest.xml
+++b/android/AndroidManifest.xml
@@-1,5+1,5@@
<?xmlversion='1.0'encoding='utf-8'?>
-<manifestpackage="eu.licentia.necessitas...
+<manifestpackage="com.kafeg.Anagram"...

и
---a/android/AndroidManifest.xml
+++b/android/AndroidManifest.xml
@@-14,4+14,5@@
<supports-screensandroid:largeScreens="t...
<uses-permissionandroid:name="android.pe...
<uses-permissionandroid:name="android.pe...
+<uses-sdkandroid:minSdkVersion="7"/>
</manifest>

также, стоит помнить, что опции по использованию Ministro следует оставить по умолчанию, то есть велеть приложению качать зависимости из маркета. После этого, пересобираем наше приложение и копируем получившийся <app-name>-debug.apk в какую-либо директорию под именем <app-name>-1.0.apk. И переходим к 4-му этапу.

Здесь нам необходимо будет выполнить две команды в консоли, производящие некие магические действия над полученным пакетом:
$ keytool -genkey -v -keystore kafeg-release-key.keystore -alias kafegkeystore -keyalg RSA -keysize 2048 -validity 10000
... bla bla bla ...
$ jarsigner -verbose -keystore kafeg-release-key.keystore ./<app-name>-1.0.apk kafegkeystore

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

А дальше самые интересные этапы. Для начала нам нужно зарегистрироваться в маркете. Для этого нам понадобится примерно $25 долларов и кредитка. Переходим по ссылке market.android.com/publish и следуем инструкции, там всё понятно (а кому не понятно, милости прошу посмотрет ьпрезентацию по ссылке выше). Единственное и самое главное, что я хочу отметить на данном этапе — не нужно специально заказывать отдельную кредитку, можно оплатить взнос простой дебетной (зарплатной) картой. К примеру у меня это Visa Electron от КазКома.

После оплаты, списанная сумма будет висеть в заблокированной сумме некоторое время. К примеру у меня она висит в заблокированных до сих пор, хотя Google Checkout говорит о том, что продавец уже благополучно списал всю сумму. Собственно всё, теперь мы можем публиковать бесплатные приложения. Чтобы публиковать платные, нужно зарегистрироваться как продавец, это не входило в мои планы. Идём далее…

Интерфейс публикации нового бесплатного приложения появится сразу, но заработает он примерно через 6-10 часов после оплаты. До истечения этого срока, при попытке загрузить новый скриншот или иконку Вы будете получать сообщение типа «Невозможно обработать ответ в формате JSON, отключите синтаксический анализатор, если он у вас есть блаблабла». Когда же пройдёт некоторое время, интерфейс заработает и спокойно скушает всё что Вы ему скормите. Единственная проблема с которой я столкнулся в последствии — моё приложение хоть и опубликовано, а также доступно по прямой ссылке, но тем не менее оно некоторое время (около получаса) не появлялось в результатах поиска… это слегка напрягало.

Ну и наконец тестирование. Для этого я взял свой смарт, удалил с него тестовое приложение, выключил дебаг в натсройках, удалил Ministro вместе со всеми скачанными приложениями, зашёл в маркет на страницу своего приложения и нажал кнопку «Установить». После установки запустил прилождние, оно потребовало докачать Ministro и бибилиотек, жмякнул пару раз Ок и через 2 минуты уже играл.

Вот в общем и всё. Вчера, зарегистрировавшись в маркете за 15 минут я немного недоумевал читая пост Долгий пуnь к Android Market, так как описанное там (кроме получения бабла) я выполнил за вечер без всякой предварительной подготовки.

Конечно хотелось бы получить некоторую обратную связь, сообщения об ошибках и крахах, замечания, дополнения и тому подобное для данного приложения, так как оно является одним из первых Qt приложений, размещённых в маркете. Спасибо.

Прямая ссылка, для просмотра в браузере: market.android.com/details?id=com.kafeg.Anagram
QR-код, для загрузки с устройства:
image
Страница с результатами поиска

Я считаю, что цель достигнута, доказательства работоспособности на лицо и уже вполне можно начинать портировать множество готовых Qt-приложений на новую платформу.
Tags:qtandroidandroid marketnecessitasanagramанаграммыигрымобильные приложениямобильная разработка
Hubs: Development for Android
+25
4.2k 82
Comments 19
Top of the last 24 hours