На днях я выпустил свою первую программу под 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. Программе еще требует доработки, в частности в области интерфейса — я уже работаю над этим. Конструктивная критика приветствуется!
Автор: scorp_ca