Особенности разработка под Android на Titanium

от автора

image

На днях я выпустил свою первую программу под Android написанную на Titanium Appcelerator и хочу поделиться некоторыми ньюансами связанными с разработкой именно под Android.

Общий процесс вполне неплохо описан в официальной документации, поэтому его опущу.

Специальные, не выставленные по-умолчанию опции в tiapp.xml:

1. Если ваша программа при запуске проявляет сетевую активность — под эмулятором она будет вылетать сразу после отображения splash screen. Лечится добавлением следующей строки в общий блок:

<property name="ti.android.fastdev" type="bool">false</property> 

2. Manifest:

<android xmlns:android="http://schemas.android.com/apk/res/android">   <manifest android:versionCode="4" android:versionName="1.2" android:installLocation="preferExternal" package="com.company.appname"> ....   </manifest> </android> 

Мне совершенно непонятна логика введение системы двух версий, но факт остается фактом — для Play Store нужно указывать две версии — одна т.е. версия бинарника versionCode (клиенты ее не видят, должна быть целым числом, в идеале incremental), вторая — официальная версия вашего приложения versionName (то что увидят клиенты).

Кроме того, тут же нужно дополнительно указать package который равен id проекта.

И есть опция installLocation. Для эмулятора надо ставить только internalOnly — иначе при попытке установки на эмулятор будет выдавать ошибку. Для релиза на PlayStore рекомендую поставить preferExternal, чтобы не засорять внутреннию память устройств пользователей.

Код:

1. Ширина обьектов на экране — лучше всего не пытаться привязываться к фиксированной ширине и вообще забыть про аттрибут width. Вместо этого ипользуйте left & right.

2. Цвета нужно указывать только в виде #rrggbb. Варианты типа #fff не работают! И естати если случайно дописать лишний символ — тоже работать не будет (на iOS с тем же кодом таких проблем нету).

3. При использовании стандартного модуля facebook следует учесть что конструкция

fb.addEventListener('login', function(e) {   // Some code... }); 

при загрузке приложения на Android автоматически НЕ вызывается! (На iOS будет вызвана автоматически если приложение было авторизировано ранее).

Разное:

1. Android SDK — тут все просто, собираем под 4.2 или 4.3 и все счастливы. Под 2.2 в моем случае все работает нормально.

2. Подполнительные модули для Titanium — если не хватает основного функционала, существует вполне приличная база модулей расширяющих возможности. Все они доступны на titanium marketplace. Кроме того, можно написать свой собственный.

Немного пиара 😉

Прошу любить и жаловать:
play.google.com/store/apps/details?id=com.sukharenko.bfriends

P.S. Программе еще требует доработки, в частности в области интерфейса — я уже работаю над этим. Конструктивная критика приветствуется!

ссылка на оригинал статьи http://habrahabr.ru/post/188676/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *