Портирование Android приложения на BlackBerry 10

в 16:03, , рубрики: android, blackberry 10, blackberry app world, porting, Блог компании Тинькофф Кредитные Системы, портирование, Разработка под android, метки: , , , ,

30 января компания Research In Motion представила смартфоны на новой ОС BlackBerry 10. Приложений в BlackBerry App World пока существенно меньше, чем в Google Play или App Store, например. Можно успеть занять нишу, выпустив версию своего замечательного приложения и под эту ОС. Тем более, что это не требует больших трудозатрат.

Итак, как становится ясно из информации для разработчиков, существует несколько способов создания приложений под BlackBerry 10:

  • нативные приложения на C/C++;
  • веб-приложения на HTML5;
  • Adobe AIR и ActionScript;
  • Android API 2.3.3 runtime;
  • Java BlackBerry runtime.

Для превращения Android-приложения в BlackBerry-версию также существует несколько способов: использование re-packaging tools, для переупаковки уже имеющегося apk, или использование непосредственно исходников Android-приложения для более вдумчивого и тщательного портирования с последующей сборкой под BlackBerry с помощью BlackBerry Native SDK. Рассмотрим первый вариант, как наиболее быстрый и простой.

Портирование Android приложения на BlackBerry 10

Портирование

Первым делом установим Command-line tools. Конечно, можно обойтись и онлайн-инструментом, но каждый раз нажимать кнопочки в браузере не очень удобно. Можно избавить себя от мучений, написав пару bat-файлов, используя инструменты из вышеупомянутых Command-line tools. Кстати, помимо использования консольных утилит или онлайн-инструментов, существует также возможность воспользоваться соответствующим плагином для Eclipse.

Собираем apk-файл и прогоняем его через верификатор, который подскажет нам, что не так с приложением. Запускаем:
apk2barVerifier <input.apk>
Вывод утилиты будет выглядеть примерно следующим образом:

D:projectstcsmb_client_androidoutartifacts>apk2barVerifier mib_release_signed.apk

D:projectstcsmb_client_androidoutartifacts>set LIB=C:softblackberryCommandLineTools_1.5blackberry.tools.SDKbin\..lib

D:projectstcsmb_client_androidoutartifacts>java -Xmx512M -cp "C:softblackberryCommandLineTools_1.5blackberry.tools.SDKbin\..libBARPackager.jar;C:softblackberryComma
ndLineTools_1.5blackberry.tools.SDKbin\..libApk2Bar.jar" net.rim.tools.apk2bar.Apk2BarVerifier mib_release_signed.apk
Apk2Bar /Verifier version 1.5.0
Research In Motion Ltd ? 2012 All rights reserved.
[mib_release_signed.apk]:(res/drawable-hdpi/logo_launcher.png) found an alternate icon with better size:impact=1
[mib_release_signed.apk]:(AndroidManifest.xml) uses-permission: CONTROL_LOCATION_UPDATES:impact=1
[mib_release_signed.apk]:(AndroidManifest.xml) native-code: armeabi:impact=5
[mib_release_signed.apk]:Summary: [5]=1; [4]=0; [3]=0; [2]=0; [1]=2;
Summary: <b>[5]=1; [4]=0; [3]=0; [2]=0; [1]=2</b>;
Impact Legend: [5]=Severe; [4]=High /context; [3]=Medium /context; [2]=Medium-low /context; [1]=Minor;

Верификатор разделяет проблемы по группам важности, их всего 5. Если есть какие-то жалобы, принадлежащие к группе с приоритетом 2 и выше, то приложение считается несовместимым и требует доработки. В нашем случае «несовместимыми с жизнью» оказались Google Maps и некоторые нативные библиотеки, в частности, Bump. Было решено удалить эти библиотеки из BlackBerry-версии приложения. После этого еще раз запускаем утилиту.

D:projectstcsmb_client_androidoutartifacts>java -Xmx512M -cp "C:softblackberryCommandLineTools_1.5blackberry.tools.SDKbin\..libBARPackager.jar;C:softblackberryComma
ndLineTools_1.5blackberry.tools.SDKbin\..libApk2Bar.jar" net.rim.tools.apk2bar.Apk2BarVerifier mib_release_signed.apk
Apk2Bar /Verifier version 1.5.0
Research In Motion Ltd ? 2012 All rights reserved.
[mib_release_signed.apk]:(res/drawable-hdpi/logo_launcher.png) found an alternate icon with better size:impact=1
[mib_release_signed.apk]:(AndroidManifest.xml) uses-permission: CONTROL_LOCATION_UPDATES:impact=1
[mib_release_signed.apk]:Summary: [5]=0; [4]=0; [3]=0; [2]=0; [1]=2;
Summary: <b>[5]=0; [4]=0; [3]=0; [2]=0; [1]=2</b>;
Impact Legend: [5]=Severe; [4]=High /context; [3]=Medium /context; [2]=Medium-low /context; [1]=Minor;

В этот раз осталось только две минорных проблемы, которые пока можно проигнорировать.

Доработка дизайна

После вышеописанных шагов потребовалось внести изменения в дизайн приложения: убрать пункты из меню, разделы из «Платежей», адаптировать баннеры по размеру экрана. Основные изменения коснулись главной страницы. К сожалению, графические материалы портированного приложения ведут себя не так предсказуемо, как описано в гайдлайнах. Размеры элементов иногда приходилось подбирать буквально «на ощупь». Часть разделов вынесли в контекстное меню. Но, в целом, с новым главным экраном и с остальными экранами в старом дизайне, приложение выглядит не хуже версии для Android.
Портирование Android приложения на BlackBerry 10 Портирование Android приложения на BlackBerry 10
Портирование Android приложения на BlackBerry 10 Портирование Android приложения на BlackBerry 10

Подписывание и тестирование

Для того, чтобы подписать приложение, нам понадобятся сертификаты. Идем на сайт и оставляем заявку на их получение. Обычно вся процедура получения занимает около двух часов, так что придется немного подождать. Если все сделано правильно, то на почту придут два файла вида client-RDK-123456.csj и client-PBDT-123456.csj. RDK файл используется для подписывания приложения, PBDT — для создания debug-токена.

Следующий шаг — установка и регистрация ключей в системе:
blackberry-signer -csksetup -cskpass <create_a_password>

blackberry-signer -register -csjpin <PIN> -storepass <csk password> <RDK_CSJFile> <PBDT_CSJFile>

Если и здесь все выполнено правильно, то на почту опять придут два письма с подтверждением, что ключи зарегистрированы. Далее создаем debug-сертификат, который необходим, если мы собираемся устанавливать приложение на устройство. При наличии эмулятора можно обойтись без него.

blackberry-keytool -genkeypair -keystore <output_file.p12> -storepass <create_a_password> -dname "cn=<company_name>" -alias author

Здесь пришлось потратить некоторое время на банальную ошибку. Обратите внимание на параметр -alias author, author так и следует оставить, не надо его ни на что заменять!

Создаем debug-token для установки на устройство:
blackberry-debugtokenrequest -cskpass <csk_password> -keystore <developer_certificate> -storepass <keystore_password> -deviceId 0x<PIN_tablet> <debug_token_bar_file>

Значение вашего параметра -deviceId можно подсмотреть либо в настройках телефона, либо в BlackBerry Device Manager в трее.

Включаем на устройстве режим разработчика (Settings -> Security -> Development Mode -> Use Development Mode в “On”) и регистрируем токен на устройстве:

blackberry-deploy -installDebugToken <debug_token> -device <IP_address> -password <device_password>

Перепаковываем наше приложение и подписываем debug-token’ом, в качестве параметра -d указываем путь к вышесозданному *.p12 файлу. Повторюсь, что при наличии эмулятора приложение можно не подписывать и параметр -d не указывать:

apk2bar <Android_app_or_folder> [-d [<debug_token>]]

Ну вот и все, приложение готово и подписано. Устанавливаем:

blackberry-deploy -installApp -password <device_password> -device <IP_address> -package <your_app.bar>

Теперь можно запустить приложение, походить по экранам и проверить функциональность. На этом этапе нами была выявлена еще одна проблема, на которую не указал apk2barVerifier на первом шаге. Интенты, вызывающие другие приложения (звонки, сканер QR- и bar-кодов и т.п.), в BlackBerry не работают. Поэтому правим соответствующую функциональность и возвращаемся на шаг с перепаковкой apk.

Для публикации приложения в App World его необходимо подписать продуктовым ключем. Для этого после упаковки bar-файла (apk2bar без параметра -d) необходимо выполнить

blackberry-signer -storepass <store_pass> <your_app.bar>

Вот и все, приложение протестировано и готово к публикации в App World. Да! Созданные сертификаты и ключи необходимо забэкапить или в случае их утери вы не сможете подписывать и выкладывать в стор новые версии приложения. Для этого в Windows 7 необходимо скопировать 3 файла из %HOMEPATH%AppDataLocalResearch In Motion и надежно их сохранить

Выводы

Плюсы:

  • возможность быстро получить работоспособную версию приложения под новую ОС с минимальными трудозатратами.

Минусы:

  • ограниченный функционал по сравнению с оригинальным Android-приложением (вырезанные карты, библиотеки и вызовы других приложений);
  • скорость выполнения (возможно, это проблема связана с мощностью тестового устройства, но, если сравнивать со скоростью работы на Android-устройстве, приложение работает медленнее);
  • чужеродный для BlackBerry UI и, как следствие, негативный user experience (приложение и особенно навигация в нем выглядят хуже по сравнению с нативными приложениями BlackBerry).

Автор: TheDimasig

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js