В конце ноября мне стукнула моча в голову и я написал достаточно глупый и несуразный пост об одном из своих приложений, находящийся здесь. Тогда пост был заминусован, что в принципе логично, учитывая то, какого качества он был.
Тем не менее, от того, что пост был хреновым, само приложение хуже не стало. Хоть и на некоторое время было отложено в долгий ящик. Вчера вечером, я как-то мельком проглядывал блог ребят из Сutehacks, компании, занимающейся разработкой Qt приложений и старающихся сделать на этом денежку. Так вот, просматривая блог, я наткнулся на <a rel="nofollow" href="http://cutehacks.com/2011/10/28/devdays2011/">пост, в конце которого была презентация под названием «Targeting Android with Qt».
В этой презентации, помимо каких-то абстрактных мыслей, разработчики подробно объяснили, какие шаги необходимо сделать для того, чтобы портировать своё приложение на новую платформу, а затем и загрузить его в Android Market. Здесь я хочу вкратце перечислить эти этапы, а всю дополнительную информацию желающие смогут получить из оригинальной презентации на Slide Share.
- Написать приложение на Qt
- Используя Necessitas Qt SDK собрать и протестировать его для платформы Android
- Внести некоторые правки в AndroidManifest.xml и пересобрать приложение
- Подписать своё приложение RSA-ключом
- Зарегистрироваться в Android Market
- Опубликовать своё приложение
- Тестируем загрузку из маркета
Стоит упомянуть, что на вчерашний вечер, у меня были завершены лишь первые 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-код, для загрузки с устройства:
Страница с результатами поиска
Я считаю, что цель достигнута, доказательства работоспособности на лицо и уже вполне можно начинать портировать множество готовых Qt-приложений на новую платформу.
Автор: vitaly_KF