Технический директор IT-Dimension, компании-разработчика кросс-платформенного программного обеспечения

Leave a Reply

Your email address will not be published. Required fields are marked *

A.

Android Widget Design Guidelines

В блоге разработчиков платформы Android появился анонс документации по разработке виджетов рабочего стола для Android-устройств.

widget_examples

В анонсе указано что в рамках Widget Design Guidelines lоступны исходные коды и графика виджетов, которые входят в SDK. Если вы разрабатываете виджеты рабочего стола для Android-устройств и хотите чтобы ваши виджеты имели стандартный внешний вид, то ресурсы, использованные при разработке стандартных виджетов будут как раз кстати.

М.

Мой путь в Android Market

Дааа.. тяжелый труд – копать на поле кукурузу… В этот раз я расскажу о своем первом опыте разработки коммерческих приложений для Android и о том, как мне, все же, удалось попасть на Android Market (ну не мне лично, а моему приложению, конечно же).

Итак… А началось все давно, а точнее сказать тогда, когда я начал писать статьи о программировании для Palm WebOS. В ходе написания, собственно, статей, появилась потребность в обучении на каких-то реальных примерах и как раз один из моих знакомых рассказал о том, что запускает сервис файлообмена для мобильных устройств. Файлы планировалось загружать на сервер и отсылать URL загруженного файла по SMS. Такой вот нехитрый способ обмениваться, например, фотографиями с мобильного телефона.К этому моменту уже была готова Web-based версия сервиса и я предложил написать к нему еще и приложение для Palm WebOS. На тот момент мой опыт разработки для Palm WebOS был без малого 8 рабочих дней (я заканчивал 8ю статью из этого цикла, статьи писал по одной в день). Для того, чтобы по-бвстрому слепить приложение для WebOS у меня ушло около 15ти часов. И еще около двух часов чтобы написать PHP-скрипт, который бы использовался для отправки файлов этим приложением и выдавал результаты в формате JSON.

После того, как WebOS версия была закончена, возник вопрос о разработке подобных клиентов для других мобильных платформ. Довльно быстро были сделаны версии для Windows Mobile и Maemo. Версия для Windows Mobile работала как shell extension для Inbox и меню контактов и просто открывала сайт в Internet Explorer c уже заполненным полем получателя. Версия же для Maemo работала аналогично с версией для WebOS – отсылала файл на сервер и получала JSON-ответ от скрипта ну и дальше по обстоятельствам.

Затем очередь дошла до Android. О да, это еще та эпопея…

Во-первых, версий Android’а, доступных и повсеместно используемых на рынке целых три – 1.5, 1.6, 2.0.

Для всех этих трех версий используется различное API для работы с контактами и то что успешно работает в версии 1.5 совсем отказывается что ли-бо выполнять в версии 2.0. Так же история обстоит и с API для отправки SMS.

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

Дальше… Отправка файлов. Для этой цели пришлось использовать библиотеку httpmime и apache-mime4j с сайта Apace. Хвала Супермарио, но Java-таки кросс-платформенна 🙂 – JAR файлы с сайта Apache чудесно заработали и для Android без каких-либо лишних теложвижений.

До того, как сделать все с помощью Reflection, пришлось поддерживать три сборки проекта с различным API для каждой платформы и первые beta-версии приложения тесировались волонтерами с различных форумов как три различных приложения. Но в какойто момент критическая масса жалоб что, все-таки, это не дело, была достигнута и решено было переделать все в виде одной сборки.

На реализацию, тестирование, подготовку, различные доделки-переделки ушло ну… недели две рабочего времени минимум. Может больше.

Дальше… Графика. А точнее иконка. Почитав описание Android Application Icon Guidelines я понял что моей мозговой активности явно недостаточно чтобы слепить что-то удобоваримое. И я решил заказать графику (ну вот да, иконку) на фрилансерском сайте, а точнее на free-lance.ru

На самом деле хотелось дешево и сердито, а полоучилось.. ну, не дешево, и даже не сердито. Просто получилось! На проект откликнулось двое фрилансеров. Первый предложил 4000 рублей (не знаю сколько это денег, я в русских тугриках не специалист. Но что-то мне подсказывает что это больше 100 баксов ибо в уме почему-то всплывает цифра 30 – приблизительно столько просят за одного американского президента). 100 баксов это как-то… печально, учитывая что разработку я финансирую из своего кармана, а президентов я как бы и не рисую, а зарабатываю трудом праведным (вполне). Второй фрилансер (барышня) предложила слеить мне иконку за 19 баксов. Ок, более менее приемлемо (хотя и не “за еду”, как я рассчитывал). К тому же обещано было, что иконка будет сделана за сутки (круть, люблю когда быстро). Я предложил что да, если будет сделана за сутки, то доплачу еще 10% (как по мне, вполне человеческий способ стимулирования. На мелких проектах, конечно, эффект мало заметен, но обычно вполне неплохо работает когда сроки важны).

И о чудо! В три часа ночи иконка сделана! Это прям праздник какой-то! Мне последние два раза очень везет на фрилансеров. Получил я в результате PNG файл 48×48 и EPS-файл с вектором.

Положил я этот PNG файл в папку drawables своего проекта, но фак! Почему-то он не виден на эмуляторе! Как была зеленая с роботом, так и осталась! Детальное изучение проблемы под микроскопом показало что для различных разрешений экрана нужны иконки разного размера (ну и скажите мне, где это написано в гайдлайнах?). После манипуляций с фотошопом, на которые мозговой активности у меня, все же, хватило, были созданы PNG-файл размером 36×36 и 72×72, которые затем перекочевали в нужные папки ресурсов.

Пересобрал и о, да! Иконка в порядке. Можно постить на Android Market!

Но не тут-то было…

При попытке загрузить сборку Android Market мне объяснил что я не прав и аргументировал это тем, что неймспейс в моем приложении начинается с com.android, а так делать нельзя. Странно, почему я это узнаю ПОСЛЕ а не ДО загрузки сборки? Пришлось исправлять…

Затем мне объяснили что я еще более неправ, потому что я как-то неудачно родился не в США, а в Украине. Для того, чтобы иметь возможность постить платные приложения, нужна учетка в Google Checkout, а зарегистрировать ее можно только (если мне память не изменяет) в 7ми или 8ми странах. Украины, естественно, в списке нет. Ну вот это уже вобще свинство! Я столько работал, чтобы вот так все бросить на пол-пути? Ну уж нет! Индейцы не ищут легких путей! И пошел я… нет, не нафик, пошел я на сервис SlideMe, который является альтернативой Android Market и также имеет свое приложение-клиент, с помощью которого можно покупать другие приложения.

К счастью, на SlideMe более лояльно относятся к разработчикам из других стран и я довольно быстро завел себе там учетку и разместил приложение. Единственное что меня немного смущает, в описании сервиса они говорят, что для получения выплат надо  будет заполнить кое-какие документы для налоговой США, но это потом. Сейчас же для меня главное то, что приложение приняли и оно доступно для заргузки, а еще больше приятно то, что оно доступно для покупки 🙂 Таки вот оно! SMSMyFile – отправляем файлы через SMS!

Порадовал тот факт, что на SlideMe можно не только указать описание приложения, а еще и выложить скриншоты, а главное видео! За 5 минут сварганил видео с помощью CamStudio (бесплатная кстати, я ею и скринкасты все записываю) и выложил на YouTube. Ссылку – на SlideMe.

Для того, чтобы получать платежи со SlideMe, надо указать как минимум карту, на которую вы будете получать оплату. Здесь мне помогла MasterCard, полученная, в свое время, от RentACoder. Она, в последнее время, меня везде спасает 🙂

Карточку, к тому же, надо верифицировать. У меня пока сделать этого не получилось, пришлось писать в службу поддержки. Вот сутки уже жду ответа…

Если вы хотите продавать свое приложение с помощью SlideMe, надо сделать некоторые изменения в коде:

  • Добавить JAR-файл в проект (доступен для загрузки на SlideMe)
  • Добавить Activity в проект (код для вставки доступен там же)
  • Добавить пару строк в манифест приложения – зарегистрировать там Activity и пару привелегий для приложения.

Более подробно об этом можно узнать здесь. На внесение изменений у меня ушло 5 минут, что, на самом деле, очень классно.

ОК, со SlideMe закончили. Следующий на очереди AndAppStore.

AndAppStore – еще одна площадка для продажи Android-приложений. Регистрация там тоже несложная. Получать оплату можно через Google Checkout (будь он неладен) и PayPal.

Все классно, но бесит одно – процесс подготовки приложения к публикации ну очень муторный…

Сначала надо создать профайл для приложения на сайте, потом сделать API Key для приложения, получить Application ID, затем сгенерировать какой-то приватный ключ.

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

Сервис позволяет указать описание для приложения (чистый текст, без HTML) и загрузить скриншоты. Какие еще плюшки – будет видно дальше.

Итак, два сервиса нашел, но меня никак не покидало чувство, что с Android Market’ом я “что-то делаю не так”. Пошел еще раз регистрировать приложение… Повводил значения ао все поля, долго смотрел на форму регистрации и ссылку на Google Checkout… Затем, все же, пошел на форму регистрации Merchant Account’а в Google Checkout. На эту форму тоже смотрел долго пока, наконец, меня не осенило…

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

В качетсве адреса указал адрес банка, выдавшего мне карту от RentACoder’а. Ну и номер самой карты. И о чудо! Зарегистрировался!

Это позволило мне добавить приложение в Android Market. Цену для приложения указал символическую – $0.99 (а что, все так делают).

Android Market позволяет указать короткое описание приложения (50 символов), обычное описание приложения (300 символов – мало вобще-то) и загрузить скриншоты. Скриншотов должно быть обязательно два (или вобще ни одного). Еще можно загрузить промо-картинку 180×120.

Итоги

  • Потрачено на регистрацию: 1 сутки
  • Зарегистрировался в: SlideMe, Android Market, AndAppStore
  • Получилось запостить приложение в: SlideMe, Android Market
  • Продаж в SlideMe за первые сутки: 0
  • Продаж в Android Market за первые сутки: 10
  • Возвратов в Android Market за первые сутки: 4
  • Левелап получен: да 🙂

Приложение

smsmyfile-1.0.0-screenshot