BuildMobile берет интервью у Брюса Купера и рассказывает о процессе разработки приложения для Android под названием NodeDroid. В этом туре мы расскажем о моделях доходов, сравним современное состояние разработки под Android и iOS, а также углубимся в некоторые из представленных конкретных проблем с кодом. Мы также получили наш первый совет по разработке саундтреков.
BuildMobile : Привет, Брюс. Итак, в интересах читателей, не могли бы вы вкратце рассказать, кто вы и чем занимаетесь.
Брюс Купер : Я довольно тормозной парень. Я всегда был в программировании и изучал, как делать вещи. Я работаю ИТ-консультантом и работаю в отрасли более 15 лет, но это не позволяет мне играть со всеми технологиями, которые мне нравятся (большинство корпораций очень консервативны), поэтому я также занимаюсь побочными проектами.
Программирование для мобильных телефонов — один из побочных проектов, в которые я попал, хотя я также немного занимался разработкой мобильных приложений для своей работы. Я работал с iOS, Mobile Web (HTML5, CSS и т. Д.) И Android. На данный момент Android мой любимый, но это потому, что у меня есть телефон Android.
BuildMobile : Итак, что такое NodeDroid?
Брюс Купер : NodeDroid был моим приложением для Android. Я только что купил новый блестящий телефон и хотел узнать, что заставило его тикать. Я уже разработал iOS и хотел сравнить их. Лучший способ мотивировать себя на то, чтобы закончить что-то, — это сделать то, что я использовал бы сам, поэтому я посмотрел, какие пробелы были в выборе моего приложения. В то время не было хороших индикаторов использования для Android, поэтому я остановился на этом. Это позволило мне удостовериться, что я не перебираю свои данные или использование телефона для моего телефонного провайдера (Optus) или моего домашнего интернет-соединения.
Я также хотел предоставить что-то, что могли бы использовать другие люди, поэтому я приложил достаточно усилий для того, чтобы это правильно распространялось на Android Market.
BuildMobile : Как вы можете различить, есть ли необходимость в приложении, и какие мысли должны быть включены в модель дохода, если она есть?
Брюс Купер : Это, пожалуй, самый сложный вопрос, который когда-либо задавался кому-либо при разработке приложений. Там куча людей, которые сказали: «Ух ты, магазин приложений — золотая жила. Я собираюсь попасть на это ». Реальность немного сложнее. Знать, что будет работать, а что нет, так же сложно, как и для любого другого бизнеса. Возможно, даже больше, потому что здесь так много конкуренции.
Просто посмотрите, сколько на рынке приложений дублирования. У меня есть друг, который время от времени присылает мне идеи для приложений. Почти в любых обстоятельствах у кого-то уже есть что-то, что делает это, и я просто отправляю ему ссылку обратно. Я думаю, что это больше, чем просто приложение, которое тоже что-то делает. Чтобы быть успешным, он должен что-то делать хорошо.
Особенно, если вы хотите, чтобы люди платили за это. В этих обстоятельствах я не пытался заработать на NodeDroid. Я просто хотел что-то, чтобы порезать зубы. Сказав это, я не хотел выпускать что-то недоделанное. В конце концов, это мое имя.
Доход это сложно. В настоящее время считается, что модель «freemium» работает лучше всего. Идея состоит в том, что вы отдаете основные функции, а затем взимаете плату за дополнительные услуги. Это хорошо работает и с рекламной моделью.
Я добавил рекламу в свое приложение не потому, что думал, что это принесет много денег, а просто потому, что хотел посмотреть, как все это работает. Я закончил тем, что сделал несколько долларов, но конечно не достаточно, чтобы оплатить счета.
В конце концов я решил открыть свое приложение. Я сделал это, потому что хочу, чтобы люди помогли мне сделать его более успешным, а не зарабатывать на этом деньги.
Я слышал, что одной из успешных моделей дохода был «объемный» подход. Я думаю, что есть несколько разработчиков, которые выпускают приложение за приложением за приложением, за каждое из которых они берут только 0,99 доллара. Каждый из них действительно очень прост, поэтому они могут быстро его изменить. Каждое приложение на самом деле не приносит достаточно, но вместе вы можете зарабатывать на жизнь.
BuildMobile : Насколько сложно освоиться с Android? В каком состоянии находятся документы для разработчиков и являются ли они вашим основным ресурсом?
Брюс Купер : Для меня было очень легко программировать для Android. Я — разработчик Java, и подавляющее большинство стандартного Java SDK представлено для Android. Вы также можете использовать большинство сторонних библиотек. В конце концов, все, что мне пришлось выучить, — это структура приложения (которая, кстати, очень хорошо продумана), и я был в курсе.
Это было сложнее для iOS. Я должен был выучить новый язык, и я также должен был сам заботиться об управлении памятью. Конструктор GUI для iOS намного лучше, чем для Android, но кроме этого, я обнаружил, что опыт разработки в Android намного лучше.
Существует много документации для iOS, и много статей, возможно, слишком много и на слишком поверхностном уровне. Мне часто требовалось некоторое время, чтобы найти техническую информацию, которая мне нужна. Документы на Android намного скуднее. Это просто информация, которая вам нужна для выполнения работы.
Я подозреваю, что начинающему программисту было бы легче с документацией по iOS, чем Android, но для меня, я предпочитаю это наоборот. Я хочу понять, что я делаю, и довольно часто документация по iOS, кажется, слепо проповедует решение, а не понимание платформы. Это становится магическим заклинанием, и заклинатель не понимает, как это происходит. Похоже, Android объясняет, как все работает.
Менее опытный разработчик может предпочесть сделать это «так», но если вы хотите сделать что-то более сложное или немного в глуши, то вам это нужно знать под капотом. Я также должен отметить, что в мире гораздо больше разработчиков Java, чем разработчиков Objective-C.
BuildMobile : какую функцию вы бы хотели добавить в платформу?
Брюс Купер : не было бы неплохо написать мобильное приложение на Ruby? Как пример, скрининг экрана для NodeDroid является болезненным. Повсюду есть регулярные выражения, и у Java нет регулярных выражений как родного объекта первого класса. Руби делает, плюс это лучше при работе с текстом.
Я переписал компонент очистки экрана для синтаксического анализатора Optus в Ruby, он более читабелен и составляет около трети его исходного размера (в строках кода). Было бы здорово включить это в приложение NodeDroid.
Есть проект под названием Ruboto, который направлен на то, чтобы позволить вам сделать именно это. У него есть некоторые недостатки в данный момент, но за этим нужно следить. Apple запрещает использование скриптовых языков и сторонних фреймворков.
Я думаю, что Android SDK действительно хорошо спроектирован и позволяет разработчику делать гораздо больше, чем эквивалентный iOS-разработчик. В частности, иерархия представлений и способ использования представлений для совместной работы приложений практически идеален.
BuildMobile : Какую самую сложную функцию NodeDroid собирать?
Брюс Купер : Самым сложным в разработке была эффективная очистка экрана веб-сайта Optus. Скрепление экрана сложнее в лучшие времена, но использование традиционных методов (анализ DOM, а затем XPath) оказалось слишком дорогостоящим, как с точки зрения использования процессора, так и памяти. В конце концов, я использовал много регулярных выражений, чтобы это заработало, что работает, но гораздо более хрупко.
Были некоторые аспекты интерфейса, которые также оказались трудными. Когда я начинал, я предполагал, что реализация прокрутки экрана страницы будет тривиальной. Так не получилось, и не было примеров, как это сделать. В итоге я посмотрел на исходный код ScrollPanel, чтобы понять, как это сделать. Это одно из преимуществ фреймворка с открытым исходным кодом! Я не должен был входить в исходный код, но он был там, когда мне это было нужно.
BuildMobile : Как вы решили это, и нашли ли вы соответствующую документацию впоследствии?
Брюс Купер : на стандартной панели прокрутки не было встроенной функции «привязки к странице». Поэтому я написал подкласс, который прослушивал сенсорные события, и когда он обнаружил событие «touch-up», определил, на какой странице он должен находиться, затем выполнил вторую команду прокрутки, чтобы перейти в правильное местоположение, соответствующее этой странице.
В конце концов, это довольно простое решение и требует всего 100 строк кода. Хотя, чтобы понять, как это сделать, потребовалось некоторое время. Нет, в документации ничего не было, так как «привязка к странице» не является стандартной функцией. Это то, что я должен был добавить.
Теперь, очевидно, это довольно стандартная функция, и каждое приложение должно реализовывать ее самостоятельно. Возможно, Google добавит его в будущем выпуске.
BuildMobile : кто или что вдохновляет вас на разработку мобильных приложений?
Брюс Купер : Мне нравится мой мобильный телефон. Мне нравится писать вещи, которые я использую. Я мотивирован, чтобы улучшить это, потому что я собаку кормлю (используя это непосредственно ). Если бы я делал это, чтобы заработать деньги, я бы использовал другой подход.
Большинство разработчиков приложений пишут для себя. Это загроможденный рынок. Мы (разработчики) должны понимать, что мы не являемся большинством рынка. Нормальные люди хотят чего-то простого, лаконичного и дают им информацию, которая им важна. Это, вероятно, что-то совершенно отличное от того, что хочет ботаник. Это, конечно, относится ко всем разработкам, не только к мобильным, но и к мобильным, у которых гораздо более широкая база пользователей, чем у других приложений.
BuildMobile : Каковы ваши настройки разработки?
Брюс Купер : У меня есть 13-дюймовый Macbook Pro, который я упаковал в жабры с как можно большим количеством оперативной памяти, которую я могу подключить к док-станции (верно, у вас может быть док-станция для вашего Mac ) и 24-дюймовый ЖК-дисплей Dell.
Я развиваюсь, используя Eclipse, и иногда Vim, если я хочу пойти в старую школу. Контроль источников осуществляется через Git, и это все. Одна из приятных сторон Android — то, что вы можете разрабатывать на любом устройстве: Windows, Linux или OS X.
BuildMobile : Какой у вас саундтрек для кодирования Android?
Брюс Купер : Хороший вопрос! Я склонен быть инди-поп любопытным парнем. Я должен быть осторожен, так как у меня есть тенденция танцевать по комнате со стаканом красного в руке, а не кодом, если это слишком хорошо 🙂
Сегодня я слушал последний и последний альбом Snowman Absence. И голени.
BuildMobile : Брюс, большое спасибо за потраченное время. Я не сомневаюсь, что ваши идеи окажутся неоценимыми для читателей. Спасибо, что поделились. Какие-нибудь заключительные мысли?
Брюс Купер : я написал NodeDroid в качестве эксперимента и учебного упражнения. Я очень доволен тем, как все прошло, и я надеюсь, что мне удалось сделать что-то полезное для людей в то же время. На данный момент это полезно только для пользователей Optus и Internode, но я бы хотел добавить других провайдеров, если люди захотят сотрудничать со мной. Свяжитесь с @brucejcooper в Твиттере, если вам интересно.
Приложение : NodeDroid — Android Market
Сайт : NodeDroid — 8bitcloud.com
Код : NodeDroid — GitHub