Pull to refresh

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

Reading time3 min
Views5.1K
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. Кроме того, можно написать свой собственный.

3. Android поддерживает «резиновые» картинки, называемые 9-patch. Подробнее о них можно почитать тут:
developer.android.com/tools/help/draw9patch.html
radleymarx.com/blog/simple-guide-to-9-patch

Немного пиара ;)


Прошу любить и жаловать (программа полностью бесплатна):
play.google.com/store/apps/details?id=com.sukharenko.bfriends
Суть простая — авторизируемся в facebook/vk/4sq/instagram, нажимаем кнопку Bump, и «стучим» телефонами друг с другом (Ипользуется модуль Bump — bu.mp). После авторизации и передачи ID-шников, приложение автоматом добавляет новый контакт в друзья на vk/4sq/instagram, и позволяет открыть facebook app на полученном профайле. Увы для FB только так — ограничения API :(
Исходная идея была такая — вы знакомитесь с новыми людьми, но часто при попытке найти человека в социальной сети получаете слишком большое количество результатов (попробуйте найти например Вася Иванов на том же vk), что обычно очень неудобно. С помощью моего приложения точные контакты будут переданы и добавлены автоматически.

P.S. Программе еще требует доработки, в частности в области интерфейса — я уже работаю над этим. Конструктивная критика приветствуется!
Tags:
Hubs:
Total votes 15: ↑5 and ↓10-5
Comments11

Articles