Организационная часть процесса
Research In Motion не накладывает на разработчиков никаких обязательств при распространении приложений для BlackBerry. Вы можете распространять свои приложения как через BlackBerry App World, так и самостоятельно.
Работа с BlackBerry App World
Для работы с BlackBerry App World нужно иметь PayPal-аккаунт. Раньше при регистрации с этого аккаунта автоматически списывалось 200 долларов США, которые покрывали административные и прочие расходы на загрузку десяти приложений. Загрузка новой версии приложения считается как отдельная загрузка программы. При загрузке одиннадцатого приложения взимаются следующие 200 долларов, которые покрывают следующие десять приложений. И так далее. Подробнее можно прочесть в BlackBerry App World FAQ.
На момент написания этой статьи на сайте RIM висит объявление о том, что они временно отменили платежи при регистрации и загрузке приложений.
Получение заработанных денег делается только через PayPal-аккаунт, так что в странах, с которыми PayPal не работает в части вывода средств из системы, надо будет придумывать обходные пути. Например, регистрация Virtual US Bank Account в Payoneer, связывание его с PayPal-аккаунтом и перевод денег из PayPal на этот счёт, с которого можно будет снимать деньги в банкомате с помощью карты Payoneer.
По действущему на настоящий момент соглашению разработчик выплачивает RIM 30% дохода от продажи своих приложений через BlackBerry App World.
BlackBerry App World постоянно развивается и предлагает разработчикам новые возможности для монетизации своих продуктов. В частности, в версии AppWorld 2.1 планируется ввести поддержку приёма платежей прямо из мобильного приложения.
Работа с другими площадками
Площадки для распространения приложений можно разделить на два типа. Первый — это бесплатные площадки вроде GetJar и Mobango, которые предоставляют место на витрине для вашего продукта, с опциональной возможностью его платного продвижения с помощью рекламы, и площадки компаний, которые занимаются продвижением приложений своими силами и с привлечением партнёрских каналов сбыта. Например Mobihand и PocketGear. Надо заметить, что в компаниях, занимающихся продвижением ваших продуктов своими силами и с привлечением партнёрских каналов сбыта, процент комиссии, который они будут удерживать с каждой продажи вашего продукта, может легко достигать 90%.
Техническая часть процесса
При установке приложений для BlackBerry файловая система устройства не задействуется. Все приложения устанавливаются в общее хранилище, которое с файловой системой устройства никак не взаимодействует. Это хранилище организовано в виде обычного плоского списка файлов. Если при установке того или иного приложения cod-файл с таким именем уже установлен, то он будет перезаписан.
Распространяемое приложение может быть представлено в двух ипостасях. Первая — это файл с расширением alx и один или несколько cod-файлов вашего приложения. Этот набор файлов используется для установки приложения с помощью BlackBerry Desktop Manager на подключённое к компьютеру через USB-кабель устройство BlackBerry. Вторая — это файл с расширением jad и один или несколько cod-файлов вашего приложения. Этот набор используется для установки приложения через интернет. В браузере BlackBerry надо открыть файл с расширением jad, расположенный на сервере, после чего подтвердить права, которые вы согласны выдать приложению (application permissions) на вашем устройстве, в зависимости от реализуемого в приложении функционала, и загрузить его.
В случаях, когда размер результирующего cod-файла получается больше чем 64 килобайта (иногда граница может быть немного передвинута в бОльшую сторону), компилятор создаёт составной cod-файл. Который являет собой обычный zip-архив в файле с расширением cod. Такой файл можно без проблем установить через usb-кабель, но при установке через интернет надо учитывать следующую тонкость, связанную с особенностями работы браузера BlackBerry.
Большой cod-файл после того, как он подписан электронным ключом, надо переименовать в файл с расширением zip и распаковать. После чего zip-файл можно удалить. Полученный набор файлов с именами вроде myapp.cod, myapp-1.cod, myapp-2.cod итд, вместе с файлом myapp.jad надо поместить на веб-сервер, прописав в .htaccess сервера следующие строки, если этого не было сделано раньше:
AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
AddType application/vnd.rim.cod cod
Указание MIME-типа для jar делается для тех случаев, если вы собираетесь распространять приложения для BlackBerry в виде jar-файлов. Если вы этого делать не планируете, то указывать MIME-тип для jar-файлов нет необходимости.
В jad-файле изменений делать нет особой необходимости за одним небольшим исключением. Независимо от размера результирующего cod-файла внутри jad-файла надо добавить свойство «MIDlet-Name» с названием вашего приложения. В противном случае в списке установленных программ на устройстве ваше приложение будет указано под именем файла (например myapp.cod), в котором оно было установлено.
Автоматическую распаковку составного cod-файла и обновление jad-файла можно сделать с помощью jadtool из BlackBerry Ant Tools
После установки большого приложения, состоящего из множества cod-файлов, в памяти устройства оно опять будет собрано в один составной cod-файл и в таком виде будет храниться.
Должен заметить ещё вот что. Соблюдайте осторожность в именовании файлов ваших приложений. То есть если первая версия вашего приложения поставляется в файле myapp.cod, то все последующие версии приложения, которые будут призваны заменить это приложение на устройстве должны поставляться в файле с таким-же именем.
Все приложения на устройстве выполняются внутри одной виртуальной машины. В связи с чем требуется соблюдение определённых правил при именовании пакетов (pakage) и классов приложений.
Если полное имя класса (full qualified name) вашего приложения совпадёт с полным именем класса другого приложения, установленного на устройстве и находящегося в другом cod-файле, то ни ваше ни то приложение не запустятся с выдачей сообщения «Class com.company.superapp.blablabla.MyClass multiply defined».
В связи с чем рекомендую именовать файлы по названию главного пакета приложения. Например com_mycompany_bb_myapplication.cod. Очень маловероятно, что другое приложение от другого разработчика будет поставляться в файле с таким-же именем.
Если-же вы решаете сменить имя файлу существующего и распространяемого приложения по той или иной причине, то необходимо менять названия пакетов внутри приложения, чтобы избежать конфликта имён классов между вашим новым приложением и вашим-же приложением, которое было установлено ранее.
При создании обновлений для ваших программ всегда учитывайте внутреннюю структуру классов, чьи экземпляры были сохранены в PersistentStore предыдущими версиями вашего приложения. К примеру, если вы изменили структуру класса MyPersistableClass, чей экземпляр был сохранён в PersistentStore предыдущей версией вашего приложения, то после установки обновления пользователь получит сообщение об ошибке. Произойдет ClassCastException при попытке загрузить старый экземпляр класса из PersistentStore.
«Привязку» приложения к тому или иному устройcтву принято делать по уникальному номеру (device pin number), который есть у каждого устройства BlackBerry. При распространении приложений по системе «Try before buy» этот номер используется продавцом для генерации лицензии (регистрационного ключа).