GrabDuck

Ежевичный джем для зеленых человечков

:

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

Может ли Андроид-разработчик выйти на новый рынок практически без затрат? Какие существуют ограничения и где намазано ежевичным джемом? Расскажу на собственном опыте.

Вопросы совместимости


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

По идее, приложение, созданное для Android 2.3.3, практически в неизменном виде должно работать на BlackBerry 10 и Play Book. Но, в реальности, приложение выполняется в виртуальной машине BlackBerry Runtime for Android, существующая реализация которой имеет серьезные функциональные ограничения. Так, например, отсутствует поддержка Google Maps, нет возможности работать с камерой, не функционирует Cloud To Device Messaging, In-App purchase, и многое другое.

Кроме функциональных ограничений, BlackBerry вносит коррективы в модель пользовательского интерфейса Android. Так отсутствие кнопок Back и Menu предлагается восполнить жестами «от нижней части экрана влево под 45 градусов» и «сверху вниз», соответственно.

При этом удовлетворение формальным требованиям Runtime for Android, не гарантирует стопроцентной работоспособности приложения. Так, например, выяснилось, что из Андроид-приложения веб-ссылка открывается в браузере, встроенном в виртуальную машину, и способа пробросить URL в нативный браузер BlackBerry не существует. Эта особенность зарубила функционал размещения ссылок на магазин App World внутри приложения.

Быстрый старт с on-line сервисом


Для быстрого старта RIM предоставляет «онлайн» инструмент переупаковки приложений. Слово онлайн взято в кавычки, поскольку в реальности большую часть работы выполняет аплет на клиентской стороне.

Инструмент выполняет по формальным признакам проверку .apk на совместимость с BlackBerry Android Runtime. В случае несовместимости, сообщает, что конкретно не устраивает в приложении.

Мне повезло, и инструмент отрапортовал о полной совместимости, что позволило незамедлительно приступить к подписанию и переупаковке кода.

Packaging and Signing


Чтобы выполнить переупаковку приложения, необходимо получить пару электронных ключей «RIM Development Key» и «BlackBerry PlayBook debug token».

Это делается один раз. Запрос оформляется через тот же онлайн инструмент. Ответ приходит достаточно быстро – минут через 15 почтой доставляются нужные сертификаты. Сертификат привязывается к компьютеру, с которого производился запрос, а для переноса сертификатов на другой компьютер разработчика предусмотрена особая процедура.

После получения ключей, настройка среды выполняется буквально в два клика. Затем инструмент подписывает бинарный файл и сохраняет результат в формате BAR (скорее всего, это акроним BlackBerry Android Runtime, но достоверной информации не нашел).

Готовое приложение можно запустить под эмулятором или на реальном железе с помощью инструментов командной строки, предоставленных RIM. При желании можно сразу отправиться публиковать приложение в App World.

У меня же была возможность запустить приложение из естественной среды разработки на реальном железе – устройстве BlackBerry 10 Dev Alpha, полученном на мероприятии BlackBerry 10 Jam в Москве три недели назад.

Кстати, говорят, что штриховка на лицевой панели устройства не прототип эмблемы, а бар-код, позволяющий отслеживать девайсы, выданные разработчикам. Пользуясь случаем шлю фотографический привет RIM’у!

Тестирование на устройстве


Подготовка к запуску приложения на BlackBerry 10 Dev Alpha не сложнее, чем работа с любым Android-устройством на Windows. Драйвера поставил непосредственно с альфа-девайса, подключенного как накопитель. Следуя инструкции, установил плагин для Eclipse. На устройстве активировал режим разработки и обменялся пин-кодом с компьютером.

Единственный тонкий момент – это не забыть добавить BlackBerry Nature в Андроид-проект, воспользовавшись контекстным меню Eclipse.

Запуск приложения на устройстве осуществляется стандартными средствами IDE. Приложение стартует довольно шустро, но всё же чуть дольше, чем на «настоящем» Андроиде.

Публикация


Созревший до публикации приложения разработчик BlackBerry получает гордое имя Независимого Поставщика Программного обеспечения, пройдя несложную процедуру регистрации на портале поставщиков App World. Регистрация бесплатна, занимает два дня и требует скан удостоверения личности. Я выслал скан Российского паспорта и добавил загранпаспорт, на случай проблем с чтением кириллицы.

Действия при публикации типичны для всех магазинов мобильных приложений – предоставить описание, загрузить скриншоты, определить стоимость и регион распространения. Единственным существенным отличием является пристальное внимание RIM к правам на контент третьих лиц в приложении и на контент, создаваемый пользователем, включая название профилей.

Поскольку публикация в BlackBerry App World совпала с появлением имени «Пошли все на…» в рейтинге игроков Чапая, пришлось отнестись со всей серьезностью к вопросу о User Generated Safeguards.

Был продуман комплекс административно-технических мер «по защите пользователей – в особенности несовершеннолетних, а также контролю и управлением ненадлежащим поведением». Основными средствами защиты стали возможность пользователя абузить и наша возможность банить хулиганов. Предложенное решение вполне удовлетворило строгих ревьюверов, тем более за это время боец с ненадлежащим поведением сам вылетел из рейтинга лучших игроков.

Процедура рассмотрения


Цикл рассмотрение публикации занимает один день. Обновление индексов в магазине после одобрения приложения занимает от нескольких минут до 24 часов.

Приложение мне возвращали дважды. Один раз с просьбой указать в минимальных требованиях к операционной системе PlayBook OS 2.0, начиная с которой BlackBerry поддерживает Android Runtime. В панели управления приложениями она выглядит как QNX 2.0.

А второй раз вернули с просьбой убрать упоминание Android. Юмор заключается в том, что имя игрока по умолчанию берется из константы android.os.Build.MODEL, которая содержит значение “BlackBerry Runtime for Android”. Что и узрел инженер RIM’а.

Интересно, что две версии одного приложения, отправленные на рассмотрение с разницей в 10 минут, попали разным инженерам. Завернули только одно из них.

Первые итоги


Сегодня, через 4 дня после публикации приложения в BlackBerry App World, можно подвести первые итоги.

Сначала ложка дегтя:

  • На самом деле, большим везением оказалось соответствие приложения возможностям BlackBerry Android Runtime. Для другого не игрового проекта всё намного сложнее, и перенос потребовал серьезного урезания функционала.
  • Низкая производительность Android Runtime может затруднить, или сделать невозможным перенос требовательных игровых приложений.

Ну, а теперь бочка ежевичного джема:
  • Полный цикл перевода Android-приложения на платформу BlackBerry 10 / Play Book и публикация в App World заняли не более трех часов чистого времени, что подтверждает тезис об открытости платформы для Android-разработчиков.
  • За время публикации приложение было загружено более 1000 раз без всякой рекламы и продвижения, что может свидетельствовать о программном голоде владельцев Play Book.
  • Баннерная сеть Smaato показывает fill rate 85% для BlackBerry-приложения, что благотворно сказывается на доходе за размещение рекламы.

И выводим простое правило: если пятиминутная проверка совместимости Андроид-приложения с помощью онлайн инструмента дает положительный результат, то следующие три часа на публикацию в BlackBerry App World будут потрачены не зря.