Где-то месяц назад занялся разработкой своего первого мобильного приложения. Буквально вчера (25.07.14) в Google Play была опубликована первая рабочая версия. Каковы же впечатления от перехода из веба в мир мобильной разработки?
Приложение администрации Краснодара. Интернет агентство где я работаю довольно давно занимается разработкой и поддержкой сайта-портала для администрации нашего города. Я занимался версткой и программированием текущей версии этого портала и мне же досталась разработка приложения под Андройд.
Само по себе приложение не сложное: пара видов списков новостей, куча текстов, фото-слайдеры, онлайн-обращение в приемную и списки эвакуированных автомобилей города (самая полезная функция на мой взгляд). Но, учитывая, что под Андройд я до этого ничего серьезного не разрабатывал, месяц выдался не слишком простым, однако очень интересным.
Выбор среды для разработки не стоял слишком долго. Старый добрый Eclipse с ADT вполне подходит. Пусть даже гугл разрабатывает Android Studio, она еще не вышла из беты и использовать ее новичку наверное не стоит (хотя и ее я уже поставил ради интереса).
Это не веб, нет браузеров, нужно где-то запускать свое приложение. Эмуляторов тьма. Можно запустить любую версию Android. Даже Андройд для часов. Вот только здесь есть пара минусов.
Первый минус, запускаются они абы как, а иногда не запускаются вообще по каким-то мистическим причинам. Гугление наводит только на ответы типа "попробуйте еще раз, вам повезет" и, как ни странно, это срабатывает. После веба в котором все либо работает либо нет, немного непривычно надеяться на счастливую фазу луны при запуске эмулятора.
Второй минус, эмулятор не гарантирует, что на реальном устройстве все будет работать точно так же, а, как известно, различных устройств под Андройд довольно много. Так что тут приходится включать интуицию при отсутствии реальных устройств.
Можно подключить реальный телефон по USB. Тогда глюков с запуском не будет. Однако потребуется установить драйвера для телефона. Теоретически, ко всем телефонам подходит чуть ли не один и тот же драйвер. По крайней мере мой Thl W3+ (да да, вы о таком и не слышали) заработал на третьем скачанном драйвере. Драйвер от гугла ему не подошел.
С языком программирования я решил не заморачиваться. Стандартное SDK на Java. Никаких кроссплатформеров вроде Xamarin и ему подобных. Слишком много неизвестных составляющих, по крайней мере так было на старте. Есть еще NDK. На нем не рекомендует писать даже гугл. Однако NDK нужен если у вас совсем большие проблемы с производительстью.
Переход с динамических PHP и JS на что-то вроде Java...это весело и интересно. Поначалу много матов и непоняток, но когда привыкаешь, все становится на свои места. И лишь одной вещи из мира PHP не хватает в Java: implode(). В Java его попросту нет, или есть, но не у всех типов массивов и списков. Такая мелкая вещь по началу сильно омрачает картину.
Непривычный язык программирования, другая среда разработки - все это шалости к которым можно привыкнуть. Но если вы раньше занимались только веб-разработкой, то вы удивитесь следующему:
Однако есть и плюсы:
У Android SDK множество компонентов: списки, таблицы, картинки, надписи, кнопки и т.д. и т.п. Каждый компонент довольно удобно настраивается. Однако если вы решили выйти за рамки стандартного тут вас ждес сюрприз - хрен там было. Допустим, если список элементов ListView. Он скроллится вертикально. А горизонтального списка в природе не существует, т.е. нужно писать самому и вот здесь наступает самая...плохая часть, готовых библиотек под андройд в разы меньше чем для веба. Попробуйте найти горизонтальный ListView.
И так, приложение готово. Что делать дальше? Это не сайт, а приложение, которое все еще лежит у вас на компьютере и тот миллион пользователей за шлюзом не знает о его существовании. Нужно выгрузить приложение в Google Play, чтобы пользователи смогли его находить и устанавливать. Конечно есть еще десяток маркетов, но основной все же Google Play.
Я честно привык, что в сервисах гугла чтобы что-то найти нужно погуглить. Они не очевидны. Вообще не очевидны. Здесь все по другому. Гуглить пришлось только ссылку на регистрацию аккаунта разработчика, а потом нужно только отдать им 25$ и вам покажут куда нажимать и что делать.
Серьезно, у них отличная девелоперская консоль. Можно загружать APK отдельно для альфа и бета тестирования, назначать разные группы пользователей для тестов. Рабочую версию приложения можно обновлять поэтапным введением. В консоли много возможностей и все они на поверхности.