Поводом для написания этой статьи послужила поездка на конференцию по TIZEN, проходившая в Сеуле в середине ноября. Разработка приложений под TIZEN входит в мои непосредственные профессиональные обязанности, поэтому решение посетить это мероприятие было быстрым и решительным. Я живу и работаю во Владивостоке, тут недалеко, 2 часа полета с испытанием огненной корейской кухней – и я в Сеуле. Непосредственно про TIZEN на хабре уже писали как минимум здесь, здесь, а непосредственно про разработку еще и здесь, поэтому в этой статье я опишу само мероприятие в стиле «испытано на себе». Статья предполагается как вводная в серии, процесс описан «с нуля». Учитывая во многом печальный опыт неофитов Тай’Дзэн, когда много нервов и времени тратится на войну с IDE, достаточное внимание будет уделено вопросам установки и настройки оной. Всех заинтересовавшихся прошу под кат.
КОНФЕРЕНЦИЯ
Мероприятие вышло весьма масштабным. Помещение, оборудование, стенды, вкусняшки – все на очень высоком уровне. С самого начала закономерно возник вопрос, кому и зачем понадобилось спонсировать с таким размахом пока что малоизвестную платформу. Общий ажиотаж и множество известных в мире мобильной разработки брэндов только подогревали интерес.
Конференция была разделена на несколько частей. Доклады первой части (с утра) были общего характера, в которых много людей умного и важного вида рассказывали, что такое TIZEN, с чем его едят, и почему он поможет нам прийти к светлому будущему.
Еще один взгляд: Александр Газаров, Нью-Йорк:
«Путешествие в Сеул началось с того, что мне пришло приглашение на конференцию по TIZEN под эгидой Intel и Samsung. Разумеется, как и все новые происшествия в мобильном мире, это меня очень заинтересовало, и через несколько дней я обнаружил себя в центре Сеула, в шикарном отеле Ritz Carlton.
Все мероприятие было разделено на два дня. Первый день начался с нескольких крупных презентаций и панельного обсуждения, посвященных тому, что такое TIZEN, зачем он нужен и куда все направляется. Основной упор докладчиков был на том, что TIZEN – это платформа для приложений с использованием веб-технологий, и это якобы поможет сделать приложения кроссплатформенными. Правда, должен признаться: когда я задал вопрос, как получится писать такие приложения, если TIZEN рассчитан на работу с приложениями для HTML5, а другие платформы нет, я так и не получил на него какого-то адекватного ответа. Равно как и остался без ответа вопрос другого человека о том, когда именно появятся первые коммерческие аппараты на свежеиспеченной системе. Как оказалось, человек, который задал этот вопрос, – мой соотечественник из Владивостока, Юрий, с которым мы быстро сошлись».
Вторая часть была поделена на секции, и пришлось выбирать, куда идти. Причем выбирать было из чего: общие вопросы разработки, портирование приложений с других платформ, аспекты безопасности и пр. С разработкой под TIZEN я и так уже был немного знаком, в вопросах безопасности я все равно ничего не понимаю, а вот портирование уже существующих проектов на TIZEN – это интересно и, возможно, удастся применить в работе.
Александр:
«Во второй части дня лекции были разделены сразу на несколько потоков, которые велись одновременно, поэтому успеть на все было в принципе невозможно. Я и Юрий решили посетить более технический поток лекций. Первые две презентации были посвящены конвертации существующих приложений на Android под TIZEN. Обе презентации имели одну и ту же канву под собой, а именно запуск приложений на Android в машине Dalvik, портированной на другие платформы. Различие заключалось, по большому счету, только в условиях, на которых компании предоставляют свои сервисы. Последняя, третья презентация была посвящена такому замечательному инструменту, как Marmalade, который сильно упрощает написание родного кода, который должен работать сразу на нескольких платформах».
В целом мероприятие вышло очень интересным, хотя породило больше вопросов, чем ответов. Имеется целый арсенал инструментов, открытая многоцелевая платформа, интерес со стороны крупных игроков рынка и… непонятно, кому и когда продавать конечный продукт, т.е. приложения. С другой стороны, ценность любой конференции – это не доклады, а нетворкинг :) Доклады – лишь хороший повод пообщаться с собратьями по ремеслу (или Искусству, если угодно), вылезти из коробки и расширить кругозор. Как уже было сказано выше, здесь я познакомился с Android-разработчиком Александром Газаровым, с которым мы далее сформировали ядро команды на хакатоне, а уже по приезду с конференции подготовили вниманию уважаемых читателей эту статью. Отдельную благодарность хочу выразить Ренату Няжеметдинову и Илье Верещагину за содействие в публикации.
Сразу после конференции вечером 11-го ноября нас ждал DevLab и хакатон.
DEVLAB
DevLab, как я понял, предполагался как некое мероприятие, нацеленное на максимально быстрое введение приглашенных участников в процесс разработки, поэтому организаторы были весьма лаконичны. Экскурс был посвящен TIZEN SDK и тому, с чем ее едят: где качать, на каких языках и какие типы приложений разрабатывать, где лежит документация. Документацию хочу отметить особо: входит в состав дистрибутива TIZEN SDK (т.е. можно работать и в режиме оффлайн) и покрывает практически все аспекты разработки (нет необходимости лезть в Гугл и взывать о помощи на форумах). IDE из коробки поддерживает следующие типы приложений: Tizen Native Project и Tizen Web Project. Первый тип – это нативные приложения, второй тип – веб-приложения и гибриды (эдакая ватрушка из С++ с начинкой из JS). Нативная разработка в TIZEN IDE подразумевает Eclipse CDT, вместо старого доброго gcc новомодный clang, впрочем, обо всем по порядку.
Первым делом устанавливаем SDK. Для этого понадобится установщик Install Manager, качать здесь: https://developer.tizen.org/downloads/tizen-sdk
Можно запустить его в режиме веб-установщика и надеяться, что все будет хорошо, но сразу хочу предупредить, что это путь потерь. Любой обрыв связи – и без малого 2 гигабайта будут загружаться заново. Неприятно, поэтому лучше сначала на той же странице скачать образ SDK:
и уже затем скормить его загрузчику (на первом же шаге установки кнопка Advanced – можно указать путь в файловой системе к образу SDK):
В остальном процесс установки тривиален (с минимальными различиями в зависимости от операционной системы), все настройки оставляем по умолчанию. Расширенная установка подразумевает дополнительные специфичные модули, которые для знакомства со средой не нужны и не входят в образ (т.е. будут долго закачиваться из сети):
Последующий процесс установки в некоторые моменты может не подавать признаков жизни – это нормально, можно сходить выпить кофе:
После установки самой SDK предлагается установить некий HAXM – в теории чудодейственное средство от Intel, которое заставит TIZEN-эмулятор летать, если на рабочей станции интеловский процессор с поддержкой аппаратной виртуализации. В теории – потому что чудеса бывают, но не у всех (точнее, не на всех ОС), но об этом не сегодня. Устанавливаем:
Александр:
«Штука, на самом деле, очень полезная. Сейчас ее, главным образом, используют Google для Android, чтобы ускорить эмуляторы. С HAXM эмуляторы работают значительно быстрее, чем без нее, что очень ценно, учитывая очень сильную медлительность стандартных эмуляторов Android. Версии есть под Windows, Linux и Mac OS X, а от процессора по большому счету требуется только, чтобы производитель был Intel, поскольку аппаратная поддержка нужных технологий есть практически во всех их более или менее современных моделях».
Итак, SDK установлена, запускаем TIZEN IDE. При запуске предлагается выбрать рабочее пространство:
Здесь по умолчанию будут храниться все новые проекты, пользовательские настройки среды и т.п.
Затем нас встречает экран приветствия (его можно закрыть), следующий шаг – настройка схемы рабочей среды (это я так перевел термин Perspective). По умолчанию открыта схема Tizen Web, нативную разработку добавляем, нажав Open Perspective в правом верхнем углу на панели инструментов, в контекстном меню переходим на вкладку Other и в появившемся окне выбираем Tizen Native:
Справочные данными проще всего пользоваться здесь:
используя очень удобный и понятный поиск:
Ура, все готово к разработке!
Александр:
«Будучи разработчиком на Android, я имел довольно мало возможностей помочь с программным кодом для приложения, но все же помогать чем-то хотелось, поэтому начал устанавливать весь инструментарий для разработки приложений на свой верный ноутбук. Поборов не шибко быстрый местный интернет, я скачал все необходимое и запустил IDE. Основой для последнего оказался Eclipse, от которого я всегда жду подвоха. И не зря: IDE бойко собрал заготовку приложения, но наотрез отказался устанавливать программу на тестовый аппарат, любезно выданный каждому участнику хакатона в залог за его паспорт. Продираясь через дебри сайтов и поисковиков, я отрыл нужные драйверы, поставил, и sdb (инструмент для связи с аппаратом, как adb для Android) заверил меня, что аппарат виден и к разговору готов. Победа? А вот не тут-то было: не хочет IDE устанавливать приложение на мой аппарат, и все тут, хоть кол на голове теши. В итоге пришлось устанавливать приложение через консоль».
Приложения можно запускать также на эмуляторе, входящем в состав SDK. Процесс довольно подробно описан здесь, от себя хочу добавить, что при переходе эмулятор/реальное устройство IDE впадает в задумчивость и не желает деплоить приложение. Это лечится удалением конфигурационного файла запуска:
Также блокировать запуск приложения на устройство может антивирус Касперского. Я так и не сумел его убедить не трогать мой тайзен, хотя, если честно, особо и не пытался – проще отключить на время.
Александр:
«Камнем преткновения лично для меня стал инструмент ansicon.exe, которого Каспер упорно считал каким-то зловредным трояном. Я решил этот вопрос добавлением всей папки с SDK в список исключений Касперского».
ХАКАТОН
Хакатон – начали! Забегая вперед, хочу отметить, что некоторое чувство единства, подъема и энтузиазма вообще в кратковременном марш-броске на хакатоне не сравнить с обычной разработкой ПО, когда рутина часто поглощает весь драйв. Можно не заботиться о продуманности и стройности архитектуры, чистоте кода и тестах, можно сразу что-то делать – это окрыляет! Разумеется, потом придется «платить по счетам», не дай бог, этот код потом кто-то увидит, но ведь это будет потом… А сейчас впереди 24 часа, на которых надо выложиться полностью, поскольку призы оказались весьма вкусными: $1000, $2000 и $5000 за 3-е, 2-е и 1-е места соответственно.
Такому важному вопросу, как выбор команды, я вообще не придал значения (зря!) – просто сел за первый попавшийся стол к группке корейцев и предложил знакомиться. Активность моих будущих соратников в плане создания хоть какого-то плана стремилась к нулю, поэтому я решил задвинуть ряд идей относительно темы проекта, которые у меня сформировались на тот момент. Возможно, в Корее так не принято, поскольку они только минут через 15 решись спросить, не ментор ли я и почему к ним такое внимание. Одна из возможных причин в том, что их английский был ничуть не лучше моего, или, возможно, они просто были воспитанные :) На самом же деле выяснилось, что они еще студенты и, как водится, были отправлены на мероприятие в общеобразовательных целях. Тем не менее, я быстро нашел общий язык с парой толковых ребят (господа Hyeongsu и Gwangdong – до сих пор не могу выговорить), которые знали, что такое git-репозиторий, и мы приступили к делу.
У меня на тот момент уже был кое-какой опыт разработки нативных приложений под bada/TIZEN, а вот в веб-разработке я ничего не смыслю. Александр до этого с TIZEN не работал вообще: он специализируется на Android. Кроме того, он присоединился к команде только на следующий день с утра (хакатон начался вечером 11-го ноября и закончился вечером 12-го). Наши корейские друзья пока учатся в университете со всеми вытекающими. Хакатон – не время для изучения принципиально новых технологий, поэтому решение было очевидно: будем рисовать нативное приложение.
Впечатления от мероприятия: Hyeongsu Im, Сеул:
«The hackathon was a great experience for me. It has been a great motivation for me to develop. Even though I am only a student, it was a wonderful place to look over the vision of new OS. I am really thankful for the Linux foundation to have an opportunity like this».
С типом приложения определились – теперь нужна идея. Приложение должно быть простым, чтобы мы могли уложиться в отведенные 24 часа и создать законченный продукт. Приложение дожно нести четко выраженную идею, чтобы было понятно, что именно мы сделали. Наконец, процесс разработки должен приносить удовольствие и способствовать сплочению команды, поэтому надо продумать, как именно мы будем представлять наш продукт на презентации.
Тизер: в смысле, это я так думал. В суровой реальности надо было кодить, не теряя времени. Сразу и много, желательно с набором заранее заготовленных решений, поскольку жюри репозитории не смотрело, «честность» не проверяло и т.д. С другой стороны, это время было очень запоминающимся – что тоже очень неплохо.
Идея для такого небольшого приложения у меня появилась давно – после очередного похода с друзьями в тайгу. В отряде продукты, которые каждый должен взять с собой, распределяются по весу, а не по цене. Например, 2 банки тушенки по весу равны килограмму макарон, а вот по цене они отличаются. Логично, что финансы надо раскидать поровну, но заниматься этими подсчетами никто не любит. Вот было бы удобное приложение, если бы можно было вносить платежи каждого участника, а потом подсчитать сразу, кто кому сколько должен…
Про поход в тайгу я рассказывать не стал, а изложил свою идею остальным членам команды в контексте похода в бар. Мол, вот ситуация: кто-то широким жестом платит за всех, а потом выясняется, что у него не осталось наличных на такси… В общем, идея была принята, и мы приступили к реализации.
Александр:
«Вечером первого дня начинался хакатон, который должен был продолжаться в течение второго дня. Изначально я не знал, пойду ли я на него: у меня большой опыт написания мобильных приложений, но вот именно в Tizen, увы, не сведущ совершенно. Однако к Юрию последнее не относилось, и поэтому я, не колеблясь, присоединился к нему.
Итак, команда состояла из двух русских (Юрия и вашего покорного слуги) и двух корейцев. Корейцы изначально отвечали за графический интерфейс, однако один из них постоянно спал, а другой мужественно творил нетленку в MS Paint (поначалу). Посему «общее руководство» по графике мне пришлось взять на себя. Будучи разработчиком на Android, я вряд ли мог помочь с программным кодом С++, поэтому эту часть взвалил на свои плечи мой соотечественник».
На самом деле наши корейские друзья вполне себе принимали участие: Hyeongsu нарисовал клевую иконку, а Gwangdong локализовал приложение на корейский язык. Кроме того, он очень живописно спал – нас все время ходили фотографировать :)
Александр:
«К сожалению, не удалось попасть на самое начало вечером в первый же день, поскольку хотелось все же посмотреть и на город. На следующий же день, когда я пришел на мероприятие, уже была заготовка нового приложения. По-русски называлось оно очень лаконично и просто: «Сочтемся!»
Самой интересной частью стала презентация нашего приложения. Мы решили сделать настоящее представление, как будто мы действительно пришли в бар. Я официант, приношу счет нашим друзьям-собутыльникам. Юра, не думая о последствиях (потом сочтемся!) платит за всех, но один из наших корейцев решил немного добавить. И вот начинается спор о том, кто кому сколько должен. Наш русский парень кричит на русском, корейские ребята кричат на корейском, один из них дерется с Юрой, другой оттаскивает своего товарища, и ссора явно не собирается прекращаться. Но вот входит официант и заявляет о чудесном приложении, которое враз всех помирит. «Сколько ты заплатил? Ага, а ты сколько? Отлично! Ну что же, вот столько вы друг другу должны вот столько денег, все в порядке, спорить не нужно!»»
Да, презентация нашего продукта для меня стала одним из самых запоминающихся событий хакатона. Перед выходом я долго втолковывал корейцам, что надо меньше стесняться и более экспрессивно доносить до аудитории свою мысль. Они поняли меня буквально. В смысле, на мою реплику «Гони 20 баксов!» Hyeongsu решил для пущей убедительности меня отпинать, а Gwangdong доблестно пытался его удержать (хотя в 2 раза меньше ростом).
Несмотря на «допиленность» приложения, призовых мест мы не заняли, думаю, потому, что ничего особо технологичного мы не сделали. Но, как я уже говорил, мы отлично провели время, и эти 24 часа получились весьма запоминающимися. Кроме того, мы выдали вполне рабочий продукт, которым я, кстати, уже пользовался. Поэтапный процесс создания «Benefit Society» (да, ничего умнее мы не придумали) послужит материалом для следующей статьи. На хабре все еще мало материалов, посвященных непосредственно разработке под TIZEN, и я надеюсь принести пользу сообществу.
За сим завершаю мой рассказ, благодарю всех, кто дочитал до этого места :) Готов ответить на вопросы, помогу чем смогу. Удачной разработки!
А пока фотки:
конференция
хакатон
Автор: IFITOWS