О том, как я написал простое приложение для Android/iOS / Habr

Хочу сразу отметить, что это не статья от профессионала, скорее взгляд любителя на мобильную разработку, скажем так, «с нуля». Мое основное занятие — это создание сайтов. В данное время я работаю у провайдера интернета и занимаюсь поддержкой внутреннего биллинга/сайта и так далее (PHP и немного Perl), довольно скучное занятие, скажу я вам. В общем, я обычный провинциальный «программист».

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

Придя на работу в один из серых скучных дней, я решился и написал в поиске Google «как сделать мобильное приложение». Это было очень наивно. Кажется, я даже попробовал задать вопрос на Toster, «с чего начать разработку под мобильные приложения», тогда я еще не понимал насколько глупым воспринимается этот вопрос профессионалами.


Довольно быстро я разделил для себя разработку на две части, это был Android и iOS, потому что они совсем разные (поиск подсказал.

Как-то я наткнулся на Phonegap, насколько я понял, пишем на Javascript+html+css, а потом получаем готовое приложение для Android/iOS, но почему-то мне не хотелось пользоваться подобными решениями, во-первых: были непонятные отзывы, кто-то хвалил, кто-то ругал, а во-вторых: мне хотелось попробовать как это изнутри, каково это сделать «нативное» приложение.

План и подготовка


Собственно, идея довольно проста:
  • Логин экран с логином/паролем
  • Основной экран с информацией об абоненте (ФИО, № договора, баланс, статус (Активен, Отключен), есть ли авария на доме, кнопка Активировать обещанный платеж
  • Экран с платежами (зачисления на счет)
  • Экран со списаниями по счету

Для функционирования приложения я написал простейшее API на PHP, скрипт который по определенному запросу отвечал строкой в JSON-формате. Сделать это оказалось элементарно.

Начать решил с Android.

Android


Начал я с установки Android Studio, первоначально смутило количество кнопочек/иконок, но за пару дней я уже был как рыба в воде. Для начала надо было понять как вообще делаются приложения, очень помогает изначальное «Hello world!» которое создается по-умолчанию. Выглядело все достаточно просто и понятно. Погуглив «Как начать разработку в Android Studio», я понял, что надо скачать SDK. Открыв SDK-manager я не понял вообще ничего, ну, точнее, не понял что именно надо делать, поэтому поставил все галочки и ждал пока все скачается. Для чего оно мне нужно я совсем не понимал, общее представление конечно было «чтобы работала поддержка такой-то версии», но почему надо все отдельно качать и выбирать среди сотен галочек — бррр.

Вторым достаточно сложным этапом было запустить приложение на симуляторе. Погуглив, пришлось повозиться с AVD, конечно, потыкашись как слепой котенок я сделал несколько виртуальных устройств. На одном даже запустилось приложение. Честно сказать, симулятор у Android Studio совсем не User-friendly, очень долго я с ним воевал, пытался запускать по-разному, хотел чтобы кнопки управления были на экране и работали, но почему-то не работали. Видимо, сказывалось отсутствие опыта.

Как оказалось, для Android пишут на Java. Про Java я знал только то, что это язык программирования и это не Javascript.
Решил разбить большую задачу на более мелкие.

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

Выбирая минимальную версию Android я остановился на 4 что-то там 🙂 (Охват аудитории 90%+ если верить Google).

Опять же разбив свои задачи на более мелкие я искал туториалы в youtube, например: «how to get json in android» или «menu in android studio». Конечно, пришлось пересмотреть штук 30 разных видео и все они были на английском (одно на немецком и одно на китайском — когда показывают не так сложно самому дойти что же говорят :)).

Разработка под Android заняла примерно неделю с момента установки Android Studio. После чего отобрав планшет у сына я смог протестировать свое приложение на реальном устройстве — просто подсоединив его к компьютеру.

Публикация в Google Play


Сначала я думал что будет очень сложно и даже переживал, но как оказалось всего 25$ и фактически без каких-либо серьезных проверок приложение попало в Google Play и через несколько часов было доступно в поиске, публикация заняла около одного дня.

iOS


Отдохнув пару дней и поразмыслив, решил что пора реализовать тоже самое приложение под iOS. Но, оказалось, что бесплатная среда разработки xCode может быть запущена исключительно в среде Mac. Пришлось скачать образ виртуальной машины MAC OS Yosemite и запустить ее через VMWare. Сделать это было очень просто и фактически не требовало от меня никаких телодвижений кроме как «ждать».

После чего я скачал xCode и начал разбираться, дело пошло быстрее, так как разработка под мобильные устройства что для Android, что для iOS примерно схожа в своих идеях.

Язык программирования выбрал Swift. Версию iOS минимум 7.1+

В принципе разработка под iOS была более простой, хотя баги симулятора присутствовали, но весь процесс оказался более удобным, нежели под Android. Опять же я открыл youtube и смотрел видео/читал руководства о том, как сделать какую-то вещь. Например, нагуглил прекрасный скрипт который делает slide menu, которого у меня не было в Android. В общем, еще один марафон и за неделю было готово улучшенное приложение, добавил возможность пополнить счет с помощью карты предоплаты и совместил платежи/списания в одно окно.

Использовал тоже самое API (тот же скрипт, что и для Android).

Публикация в iOS


Тут все оказалось не так радужно и просто как в Android. Во-первых, оказалось, что мне требуется реальное устройство для тестирования приложения, а без него никак не опубликоваться. Пришлось искать iPhone и привязать его к профилю тестирования.

Опять же, при создании аккаунта был выбор между «компания» и «индивидуальный разработчик», но начитавшись страшилок про 4+ месяца проверки компаний я решил регистрироваться как индивидуальный разработчик. Сделать это было не сложно, главное оплатить 99$ за аккаунт разработчика iOS со своей кредитной карты чтобы имя совпадало (подсказал поиск). Платеж проходил 2 дня.

После чего пришлось искать целое видео «how to publish in app store» и следовать инструкции, настолько там все непонятно. Какие-то сертификаты, туда — сюда. В общем, не очень удобно, хотя и сделать надо лишь один раз :).

Приложение ушло на проверку и ждало очереди около полутора недель. После чего было принято. Кстати, как показали логи, проверка была примерно такая: Логин -> Баланс -> Платежи -> Баланс. И все, хотя была еще страница «Пополнить баланс», но ее не проверяли (а зря, я там накосячил и пришлось выкладывать новую версию программы 1.1 которую тоже проверяли больше недели).

Выводы


1. Как оказалось это не сложно даже для человека который никогда не использовал Java/Swift/Mac OS.

2. Много новой информации заставляло мой мозг просто переполняться в первые дни и зависать. Помогал только сон, после него я более четко понимал что делать дальше. Не надо бояться таких этапов. Иногда мне казалось что «я вообще ничего не понимаю», были ощущения что я бьюсь головой в бетонную стену. Но на следующий день я решал проблему. Например, в Android, в самом начале у меня возникла ситуация «ничего не работает», когда я подключался к серверу и должен был получать информацию, оказалось, надо было это делать в асинхронном потоке. Потратил целый день.

3. Очень быстрое устаревание руководств/видео уроков. Платформы настолько быстро развиваются, что надо сразу проверять актуальность информации. На русском языке ее очень мало, после нескольких попыток я даже бросил искать и сразу начал штудировать stackoverflow и англоязычный интернет. Youtube со своими видео-уроками просто спас меня! Я открывал видео на одном мониторе и работал на втором. Без базового английского — никуда.

4. Сервисы вопрос-ответ реально помогают! Иногда, впадая в ступор я задавал вопросы и почти сразу получал ответы — очень удобно если находишься в тупике.

5. Apple более чутко относится к публикации приложений, но особых проблем кроме длительного времени я не заметил. Android же делают все очень быстро (зато пускают всех подряд, как я понял).

6. В общей сложности я потратил почти месяц (на разработку около двух недель с перерывами). Стоило ли оно того — думаю да, было очень интересно. Если у вас есть желание — попробуйте, все оказалось не так сложно. У меня нет смартфона Android/iPhone, но и без них все оказалось просто. Симуляторы работают достоверно.

Приложение называется dagotel, но оно создано для клиентов, поэтому дальше логина не пустит. Разве что посмотреть скриншоты.

Понятия не имею, зачем я написал эту статью и какие цели преследовал, но раз написал, решил опубликовать.

habr.com

Разработка под iOS и Android: рейтинг языков программирования

Вы хотите стать мобильным разработчиком, но не знаете какой язык программирования выбрать? На чем написать свое мобильное приложение для Android или iOS? Предлагаем вам наш рейтинг языков программирования для создания приложений.

1. Java

Java – строго типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle).

Платформа: Android, Android Wear
Основная IDE: Android Studio
Обучающий курс: Мобильная разработка под Android

2. Swift

Swift – язык, разработанный компанией Apple и предназначенный для разработки приложений под iOS и OS X. Swift заимствовал довольно многое из C++ и Objective-C.

Платформа: iOS, macOS, watchOS и tvOS
Основная IDE: Xcode
Обучающий курс: Калькулятор на Swift

3. HTML5/JavaScript

JavaScript — прототипно-ориентированный сценарный язык программирования. Наиболее широкое применение нашел в браузерах как язык сценариев для придания интерактивности веб-страницам, а также в кроссплатформенных фреймворках (React Native, Ionic, Sencha и т.п.).

Платформа: iOS, Android, Tizen и практически любая другая
Основная IDE: Eclipse, блокнот Notepad++
Обучающий курс: зависит от фреймворка

4. C#

C# — объектно-ориентированный язык программирования. Разработан в 1998-2001 годах группой инженеров в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework. В области разработки мобильных приложений и используется во фреймворке Xamarin.

Платформа: iOS, Android, Windows 10
Основная IDE: Visual Studio
Обучающий курс: Приложения на Xamarin

5. Objective-C

Objective-C – компилируемый объектно-ориентированный язык программирования корпорации Apple, построенный на основе языка C и парадигм Smalltalk. Язык был создан Брэдом Коксом в начале 1980 и сейчас уже морально устарел, его заменяет новый и более простой Swift. Тем не менее, еще 3-5 лет разработчики на Objective-C будут очень востребованы на рынке.

Платформа: iOS, macOS, watchOS и tvOS
Основная IDE: Xcode
Обучающий курс: Разработка iOS-приложений

6. Python

Строго говоря, Python не является языком мобильной разработки, а больше используется в веб-проектах. Однако, как все мы знаем, в ближайшем будущем боты заменят приложения, а с помощью Python вы как раз и сможете их создавать + язык широко используется и в других областях, например, в машинном обучении. К тому же он легко постигаем новичками, у него много библиотек, синтаксис легко читаемый и довольно аккуратный код.

Платформа: боты
Основная IDE: Eclipse, Visual Studio, PyCharm
Обучающий курс: Разработка на Python с нуля

Дополнительные материалы

Средние зарплаты разработчиков в США в 2016 году по языкам программирования.

apptractor.ru

Языки программирования для разработки мобильных приложений

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

HTML5

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

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

С точки зрения расходов и эффективности, HTML5 обладает рядом преимуществ. Во время работы с текущей версией HTML кривая обучаемости будет выглядеть предпочтительнее, по сравнению с ситуацией, когда человеку приходится работать с совершенно новым языком.

Java

Программное обеспечение может разрабатываться в Java, JavaScript и Enterprise Java Beans. Это три разные системы, общее у них лишь слово «Java» в названии.

Java — это объектно-ориентированный язык программирования, созданный Sun Microsystems, который, как и компания-разработчик, сейчас находится в собственности Oracle.

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

Тем, кто рассматривает Android в качестве приоритетной платформы, непременно стоит обратить внимание на Java. Если же вы ориентируетесь на экосистему приложений iOS, тогда Java, скорее всего, отойдет на задний план.

Если вы разрабатываете общую базу кодов, которая была бы доступна для нескольких платформ, тогда язык Java следует непременно внести в свой шортлист.

JavaScript, как и подразумевает название, — это скриптовый язык, который может использоваться при добавлении функциональных особенностей в веб-страницу, но не как самостоятельное решение для веб-разработки.

C++

Для тех, кто собирается пуститься во все тяжкие и создавать приложения для таких платформ, как Android и Windows, C++ может стать ответом на вопросы, относящиеся к области объектной ориентации. C++ используется в разработке практически любых приложений и для всех существующих платформ. Этот язык существует сравнительно давно, и все еще считается вполне подходящим для низкоуровневого программирования.

Objective-C

Несмотря на то, что весь остальной мир разрабатывал ПО в C++, Apple решила представить Objective-C как свой основной язык программирования. Возможности Objective-C сопоставимы с C++, хотя здесь присутствует ряд функций, тесно связанных с графикой, I/O и дисплейными функциями. Objective-C является частью девелоперского фреймворка Apple и полностью интегрирован с фреймворками iOS и MacOS. Сейчас, однако же, происходит постепенное замещение Objective-C языком Swift.

 

Swift

Новейшие API компании Apple — Cocoa и Cocoa Touch, а языком, которым пишут для них коды, является Swift. По словам руководства компании, Swift предназначен для совместной работы с Objective-C. Хотя, очевидно, что Apple стремится к тому, чтобы как можно больше разработчиков перешли именно на этот язык программирования. Помимо прочего, Swift разрабатывался с целью устранить множество уязвимостей, существующих в Objective-C. Если вы начинаете работу над iOS-приложениями, тогда Swift должен стать вашей отправной точкой.

C#

C# столь же значим для Microsoft, как и Objective-C для Apple. Это расширение языка Си, предназначенное для некоторых уникальных особенностей среды. Если вы работаете с мобильной платформой Windows, тогда ваш набор языков разработки должен включать и C#.

wnfx.ru

Языки программирования для Android 🚩 как программировать для андроид 🚩 Hi-Tech 🚩 Другое

Основным языком для разработки программ на Android является Java. Чтобы создать разметку приложений и элементы интерфейса, используется язык разметки XML. Писать программы для Android на Java можно практически в любой программной среде, однако разработчики операционной системы предлагают программистам использовать Eclipse. В функционал компилятора включен режим создания мобильных приложений через плагин Android Development Tools (ADT). Аналогичный плагин имеется для таких популярных сред, как NetBeans и IntelliJ IDEA. Кроме этого, для написания кода на Java может использоваться пакет Motodev Studio for Android, созданный на основе Eclipse и позволяющий программировать непосредственно на основе Google SDK.

Для написания некоторых программ и участков кода, выполнение которых требует максимальной скорости, могут быть использованы библиотеки C/C++. Использование этих ЯП возможно через специальный пакет для разработчиков Android Native Development Kit, ориентированный специально для создания приложений с использованием C++.

Пакет Embarcadero RAD Studio XE5 также позволяет писать нативные приложения для Android. При этом для тестирования программы достаточно одного Android-устройства или установленного на компьютере эмулятора. Разработчику также предлагается возможность писать на C/C++ низкоуровневые модули путем использования некоторых стандартных библиотек Linux и разработанной для Android библиотеки Bionic.

Кроме C/C++, программисты имеют возможность использовать C#, средства которого пригодятся при написании нативных программ для платформы. Работа на C# с Android возможно через интерфейс Mono или Monotouch. Тем не менее первоначальная лицензия на применение C# обойдется программисту в $400, что актуально только при написании крупных программных продуктов.

PhoneGap дает возможность разрабатывать приложения с использованием таких языков, как HTML, JavaScript (jQuery) и CSS. При этом программы, создаваемые на данной платформе, подходят для других операционных систем и могут быть модифицированы под другие девайсы без дополнительного внесения изменений в программный код. С использованием PhoneGap разработчики программ на Android могут применять средства JavaScript для написания кода и HTML с CSS в качестве средств для создания разметки.

Решение SL4A дает возможность использовать в написании и скриптовые языки. При помощи среды планируется введение таких ЯП, как Python, Perl, Lua, BeanShell, JRuby и т.п. Тем не менее количество разработчиков, которые на сегодняшний день используют SL4A для своих программ, невелико, а проект до сих пор находится в стадии альфа-тестирования.

www.kakprosto.ru