Блог веб-разработчика v 1.0.0
Symfony2, AngularJS, React, Gulp, PhpStorm и много других страшных слов

Что ожидает веб-разработчика в мире Android?

3 года назад
4245 просмотров
Android Google Развлечения

Где-то месяц назад занялся разработкой своего первого мобильного приложения. Буквально вчера (25.07.14) в Google Play была опубликована первая рабочая версия. Каковы же впечатления от перехода из веба в мир мобильной разработки?

Что за приложение?

Приложение администрации Краснодара. Интернет агентство где я работаю довольно давно занимается разработкой и поддержкой сайта-портала для администрации нашего города. Я занимался версткой и программированием текущей версии этого портала и мне же досталась разработка приложения под Андройд.

Само по себе приложение не сложное: пара видов списков новостей, куча текстов, фото-слайдеры, онлайн-обращение в приемную и списки эвакуированных автомобилей города (самая полезная функция на мой взгляд). Но, учитывая, что под Андройд я до этого ничего серьезного не разрабатывал, месяц выдался не слишком простым, однако очень интересным.

Как все начиналось?

Выбор среды для разработки не стоял слишком долго. Старый добрый Eclipse с ADT вполне подходит. Пусть даже гугл разрабатывает Android Studio, она еще не вышла из беты и использовать ее новичку наверное не стоит (хотя и ее я уже поставил ради интереса).

Это не веб, нет браузеров, нужно где-то запускать свое приложение. Эмуляторов тьма. Можно запустить любую версию Android. Даже Андройд для часов. Вот только здесь есть пара минусов.

Первый минус, запускаются они абы как, а иногда не запускаются вообще по каким-то мистическим причинам. Гугление наводит только на ответы типа "попробуйте еще раз, вам повезет" и, как ни странно, это срабатывает. После веба в котором все либо работает либо нет, немного непривычно надеяться на счастливую фазу луны при запуске эмулятора.

Второй минус, эмулятор не гарантирует, что на реальном устройстве все будет работать точно так же, а, как известно, различных устройств под Андройд довольно много. Так что тут приходится включать интуицию при отсутствии реальных устройств.

Можно подключить реальный телефон по USB. Тогда глюков с запуском не будет. Однако потребуется установить драйвера для телефона. Теоретически, ко всем телефонам подходит чуть ли не один и тот же драйвер. По крайней мере мой Thl W3+ (да да, вы о таком и не слышали) заработал на третьем скачанном драйвере. Драйвер от гугла ему не подошел.

С языком программирования я решил не заморачиваться. Стандартное SDK на Java. Никаких кроссплатформеров вроде Xamarin и ему подобных. Слишком много неизвестных составляющих, по крайней мере так было на старте. Есть еще NDK. На нем не рекомендует писать даже гугл. Однако NDK нужен если у вас совсем большие проблемы с производительстью.

Что ожидает веб-разработчика в мире Android?

Переход с динамических PHP и JS на что-то вроде Java...это весело и интересно. Поначалу много матов и непоняток, но когда привыкаешь, все становится на свои места. И лишь одной вещи из мира PHP не хватает в Java: implode(). В Java его попросту нет, или есть, но не у всех типов массивов и списков. Такая мелкая вещь по началу сильно омрачает картину.

Непривычный язык программирования, другая среда разработки - все это шалости к которым можно привыкнуть. Но если вы раньше занимались только веб-разработкой, то вы удивитесь следующему:

  • Нельзя просто так задать разные стили словам в тексте в одном текстовом блоке.
  • Текстовый блок может отображать HTML на очень примитивном уровне: теги вроде <b>, <p>, <i> и т.п. Никаких картинок и таблиц.
  • Нельзя просто так использовать нестандартные шрифты. Их нужно каждый раз вручную применять к элементу.
  • Нельзя программно назначать другой стиль элементу. Забудьте про классы и тем более про вложенные классы.
  • Верстка будет отнимать у вас 90% времени разработки. А верстка простых (с точки зрения веба) элементов большую часть из этих 90%.
  • Здесь нет float:left; и точка.
  • Здесь ничего не измеряется в пикселях. Можно конечно ставить размеры в пикселях, но работать это, мягко говоря, будет не так как вы ожидаете.
  • Здесь нет FireBug'а или ChromeDevTools. Только логи в консоль и дебагер кода. Чтобы передвинуть кнопку на пиксель вниз нужно перезапускать все приложение целиком.

Однако есть и плюсы:

  • Нет IE.
  • Nine-path - это очень удобная штука для создания резиновых фонов у любых элементов.
  • Здесь ничего не измеряется в пикселях. Дизайнер не сможет бросать в вас тапки за лишние пиксели в отступах.

У Android SDK множество компонентов: списки, таблицы, картинки, надписи, кнопки и т.д. и т.п. Каждый компонент довольно удобно настраивается. Однако если вы решили выйти за рамки стандартного тут вас ждес сюрприз - хрен там было. Допустим, если список элементов ListView. Он скроллится вертикально. А горизонтального списка в природе не существует, т.е. нужно писать самому и вот здесь наступает самая...плохая часть, готовых библиотек под андройд в разы меньше чем для веба. Попробуйте найти горизонтальный ListView.

Google Play

И так, приложение готово. Что делать дальше? Это не сайт, а приложение, которое все еще лежит у вас на компьютере и тот миллион пользователей за шлюзом не знает о его существовании. Нужно выгрузить приложение в Google Play, чтобы пользователи смогли его находить и устанавливать. Конечно есть еще десяток маркетов, но основной все же Google Play.

Я честно привык, что в сервисах гугла чтобы что-то найти нужно погуглить. Они не очевидны. Вообще не очевидны. Здесь все по другому. Гуглить пришлось только ссылку на регистрацию аккаунта разработчика, а потом нужно только отдать им 25$ и вам покажут куда нажимать и что делать.

Серьезно, у них отличная девелоперская консоль. Можно загружать APK отдельно для альфа и бета тестирования, назначать разные группы пользователей для тестов. Рабочую версию приложения можно обновлять поэтапным введением. В консоли много возможностей и все они на поверхности.

Что еще почитать
Выезжающая панель на Android
3 года назад
7503 просмотра
Вчера мне понадобилось сделать панель наподобие стандартной верхней панели Android, той самой которую вы ежедневно вытаскиваете пальцем из-за верхнего края экрана. Поскольку опыта для написания собственного View подобного рода у меня нет, я начал поиск готовых решений.