Заявки на доклады

Поиск по тегам:

Кросс-платформенная разработка

Being an ethical developper

Xavier F. Gouchet

With great power comes great responsibilities. In today’s world, developers definitely have a lot of power in their hands, shaping the apps we use every day on our phones and computers. More than ever developers need to know about the consequences of what they build, and help shape the way apps will be built tomorrow.

Most talks at conferences helps you become better developers technically, revealing the best practices, tips and tricks, or new libraries and framework to write better code, this talk will focus on making you becoming a more ethical developer.

Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

Мобильный AR

Владислав Дугнист

В докладе расскажу про историю AR-VR и текущие технологии (ARKit, ARCore, Vuforia). Посмотрим, как выглядит разработка 3D-приложений со стороны разработчика, и какие технологии используются внутри фреймворков дополненной реальности.

GameDev для мобильных устройств
,
Работа с графикой, 3D Моделирование
Программный комитет ещё не принял решения по этому докладу

Автор, пиши меньше. Котлин для разработки в iOS и Android

Николай Иготти

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

Kotlin/JVM, Kotlin/Native, Gradle, MPP - эта комбинация позволит создавать мобильные приложения, на фреймворках родных для iOS и Android, и при этом не писать весь код дважды.

Доклад акцентирован на разработке под iOS и Kotlin/Native, так как эта сторона мобильной разработки с использованием Kotlin менее известна широкой публике.

Доклад принят в программу конференции

Идеальное преступление: как саботировать React Native

Андрей Константинов

Представим, что вы разработчик (это, я надеюсь, не составит большого труда), и на работе сообщают радостную новость: “Мы собираемся переходить на React Native”. И вы не очень этому рады. Кроме того, явно видите что переход на React Native отрицательно отразится на проекте.

Лучший способ отогнать идеи, с которыми мы не согласны - это избавиться от тех, кто их предлагает. Всё же, мы разработчики и привыкли действовать более деликатно. Поэтому нам нужен план получше. Это будет идеальный заговор.

На этом моменте появляется слайд с названием выступления "Идеальное преступление: как саботировать React Native".

Программный комитет ещё не принял решения по этому докладу

Как уменьшить размер приложения

Илья Удалов

Размер приложения является важным параметром, с которым должен считаться каждый разработчик. Уменьшение размера может поднять количество установок и даже увеличить производительность. Однако не так просто понять, почему приложение разбухает.

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

C/C++
,
Прочие языки
,
Методы и техника разработки ПО
Программный комитет ещё не принял решения по этому докладу

Мобильные технологии 1С - способ быстро сделать мобильный фронтенд для любого серверного решения. И не только

Петр Грибанов

Фирма 1С делает инструменты для быстрой разработки кросс-платформенных бизнес-приложений и runtime для их выполнения в разных ОС и СУБД.

Благодаря удачно выбранной модели разработки (проблемно-ориентированное проектирование AKA Domain-Driven Design, легкий в освоении скриптовый язык) 1С быстро вышла в лидеры рынка бизнес-софта, потеснив SAP, Oracle, Microsoft.

Сильными сторонами 1С являются легкость в освоении для разработчика и быстрота создания и модификации бизнес-приложений. Мобильная платформа 1С перенесла оба этих козыря в мобильный мир.

Мобильная платформа 1С – это возможность быстро разработать приложение, работающее на трех самых массовых мобильных платформах (iOS, Android, Windows).

Благодаря широкому спектру доступных платформо-независимых средств интеграции (Web- и HTTP-сервисы и т.д.) мобильная платформа 1С — это быстрое создание мобильного фронтенда для практически любого серверного приложения.

Есть две модели работы мобильных приложений - оффлайновая с периодической синхронизацией и онлайновая. Мы поддерживаем обе!

На мобильной платформе 1С созданы как заказные приложения для автоматизации бизнеса, так и тиражные пользовательские приложения, входившие в ТОП-10 на AppStore и GooglePlay.

Среди пользователей нашей мобильной платформы - "Магнит", "Вкусвилл", "Азбука вкуса", "Русский Стандарт", московский велопрокат, фермерские магазины "ЛавкаЛавка", сеть барбершопов "Брадобрей" и заводы Росатома. А также десятки тысяч пользователей приложений "Персональные финансы" и "Gym" в России, США, Латинской Америке.

Покажу, как делать мобильные приложения на 1С, для каких задач наши технологии подходят хорошо, для каких - не очень. Расскажу, чем мобильная платформа 1С отличается от мобильного клиента 1С, являются ли наши мобильные приложения гибридными, как интегрировать наши приложения с MDM.

Программный комитет ещё не принял решения по этому докладу

What the F**tter? Understanding Flutter as an Android Developer

Harshit Dwivedi

As an Android developer, you probably have heard lot about Flutter, the newly released Framework by Google for making beautiful cross platform apps.

Due to Flutter still being in beta, there are not many online resources available for someone looking to start building apps with it and here's where my talk will help you.

This talk is aimed for Android developers trying to wrap their heads around Flutter and how it correlated with the native Android Framework.
I'll be highlighting Flutter's similarities, dissimilarities to the Native Framework and the pros and cons of using Flutter in your production app.

By the end of this talk, you will be motivated enough to flutter ahead with Flutter an

Технологии и языки для Android: Java, Kotlin
,
Технологии и языки для iOS: ObjectiveC, Swift
,
Кросплатформенная разработка
Программный комитет ещё не принял решения по этому докладу

Особенности проектирования голосовых интерфейсов в эко-системе Google

Антон Бархан

Поговорим про особенности взаимодействия пользователей с голосовыми интерфейсами, и как это влияет на проектирование и разработку. Рассмотрим кейс по покупке товаров FMCG с использованием голосовых ассистентов. И на его примере разберем, что должен уметь делать голосовой ассистент в отличие от web-формы.

Программный комитет ещё не принял решения по этому докладу

Запись видео геймплея игры на примере движка Defold

Sergey Lerg

Запись видео сама по себе ресурсоёмкая задача, мобильные игры тоже часто заставляют работать устройства на пределе возможностей. Из-за этого складывается конфликт и борьба за ресурсы. Поэтому важно организовать запись максимально эффективным способом. Если на десктопах у разработчиков ещё есть какая-то свобода выбора в этом плане, то на мобильных устройствах всё гораздо печальнее. Больше всего проблем вызывает, как ни удивительно, Android.

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

В докладе будет С++ c OpenGL, немного Java, Objective-C и чуть-чуть Lua.

Технологии и языки для Android: Java, Kotlin
,
Технологии и языки для iOS: ObjectiveC, Swift
,
Кросплатформенная разработка
,
Аппаратные и программными возможности мобильного устройства
,
GameDev для мобильных устройств
,
Работа с графикой, 3D Моделирование
,
Lua
Программный комитет ещё не принял решения по этому докладу

Платформенный UI и бизнес-логика на C++

Евгений Шаповалов

Пользовательский интерфейс на родном платформенном фреймворке имеет много плюсов: привычный пользователям вид, анимации, скорость. И опыт платформенных разработчиков, чтобы все это качественно реализовать.

Но как организовать архитектуру мобильного приложения с платформенным UI и логикой на C++? Как разделить ответственность компонентов, организовать навигацию, написать кучу биндингов к Swift и Java, и при этом иметь возможность кастомизировать поведение разных платформ? Какие различия в UI iOS и Android и как с этим жить?

Ответы будут на примере развития архитектуры UI одного из наших важнейших приложений.

C/C++
,
Разделение представления и бизнес-логики, шаблонизация
,
Кросплатформенная разработка
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Оптимизация работы приложений в мобильных сетях

Александр Тоболь

TCP был впервые имплементирован в 70-х годах и прекрасно справлялся со своей задачей в эру проводного интернета. Но беспроводные сети отличаются переменной пропускной способностью, высоким random packet loss, сменой IP и MTU на лету и прочими вещами, которые приводят к деградации TCP-соединения. Поэтому одноклассники и google активно занимаются оптимизацией сетевого взаимодействия (новые алгоритмы congestion control'а), и как крайняя мера переводом сетевого взаимодействия с TCP на UDP.

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

В этом докладе мы поговорим про сетевые стеки iOS/Android, проблемы TCP и полностью пройдем путь перевода приложения на UDP.

В докладе будут:
- проблемы беспроводных сетей и стека TCP/IP;
- перевод с TCP на UDP сетевого взаимодействия (API, images, video streaming);
- написание своих UDP-протоколов.

А также: как отменить запрос на фото в своем приложении, если это фото уже больше не нужно, а запрос уже ушел на сервер, что при этом произойдет с вашим TCP-соединением?

Будут раскрыты: Head-of-line blocking, forward error correction (FEC), fast retransmit vs negative ack, MTU discovery, IPMigration, packet pacer... и многое другое:
- рассмотрим особенности и +/- протокола QUIC от google;
- напишем протокол, ориентированный на беспроводные сети Wi-Fi и 2/3/4G.

Все будет рассказано на примере OKLive - первого Android-приложения для мобильного стриминга в качестве 1080p.

Пример для тех, кто дочитал ;)
У вас есть приложение - аналог инстаграм. Открывается приложение, там лента и первые 3 фото на экране ;)
Вам надо как можно быстрее отобразить фото в плохой сети (типа Wi-Fi на некоторых конференциях).
RTT 200мс, фото 200кб, сеть 1Мбит/сек, packetLoss 5% (пачковый ;)
Варианты решения:
- сказать последовательно по TCP/HTTP1.1 без pipeline, тогда пока выполняется следующий запрос (за RTT), канал будет простаивать;
- скачать параллельно в 3 потока по TCP/REST;
- сказать последовательно в pipeline HTTP2/TCP;
- скачать по QUIC/UDP.

А что делать, если запросы уже ушли, а пользователь проскроллил дальше, не дожидаясь ответа?
Как отменить запрос? Только UDP/QUIC.
К концу доклада вы сможете посчитать время всех вариантов и выбрать подходящий для себя способ.

Доклад принят в программу конференции

Процессы разработки

Как работают большие команды в мобильной разработке

Максим Ефимов

* Сколько нужно инженеров, чтобы сделать Uber.
* Что такое кросс-платформенная архитектура.
* Одно приложение на десятки фич – взгляд со стороны одного разработчика.
* Синхронизация работы десятков команд.
* Скорость, качество, полнота исполнения – на что делается акцент.
* Оценка качества.
* Что делать, если все сломалось.

Доклад принят в программу конференции

Ментальные модели пользователей

Никита Майданов

Как понять, кто есть ваш пользователь, что ему нужно, что у него болит.

Расскажу про опыт UX-интервью и о различных способах проверки ваших интерфейсов, выявления проблем. Как построить ментальную модель вашего пользователя и что с ней дальше делать.

Программный комитет ещё не принял решения по этому докладу

Test Drive: выжать максимум

Дмитрий Грязин

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

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

Автоматизация разработки и тестирования
,
Управление изменениями, управление требованиями
,
Автоматизация тестирования
,
Тестирование мобильного ПО
,
Юнит-тестирование
,
Приёмочные и функциональные тесты
Доклад принят в программу конференции

Бесполезные встречи не нужны

Дмитрий Емельянов

* Что такое бесполезная встреча?
* Почему я должен на ней присутствовать?
* А можно ли как-то спасти встречу и сделать ее полезной?
* Кто такой фасилитатор и зачем он нужен?
* А я могу помочь договориться?
* Почему, если на встрече идет спор, то это нормально.

Программный комитет ещё не принял решения по этому докладу

Главное не качество, а количество!

Егор Бугаенко

I truly believe that quality is not what programmers should care about. They must care only about speed—close tasks as soon as possible— which means make money. Won't this attitude ruin the project and turn the code base into a mess? Yes, it will. If the project doesn't care about its quality either. There must be a permanent conflict between a project and its programmers: 1) the project must be configured to reject anything that lowers the quality of its artifacts and 2) programmers must be interested in making changes to those artifacts. The project cares about the quality, the programmers care about fast delivery of modifications. I wrote about this: http://www.yegor256.com/2018/03/06/speed-vs-quality.html

Доклад принят в программу конференции

Разработка библиотеки: от API до публичного релиза

Ася Свириденко

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

Мы поговорим:
1. О проектировании API библиотеки: какие особенности и подводные камни могут встретиться.
2. На что обратить внимание при написании кода и тестировании.
3. Как облегчить жизнь своим пользователям и, как следствие, себе.
4. Об особенностях релизного цикла и взаимодействии с другими командами.
5. Что необходимо для публичного релиза, и какой постпродакшн ждёт разработчика библиотеки.

Рассказ будет полон неподдельными историями из жизни команды мобильной библиотеки YandexSpeechKit :)

Методы и техника разработки ПО
,
Разработка библиотек, включая open source библиотеки
,
Особенности процессов разработки и тестирования мобильного ПО
Доклад принят в программу конференции

To be manager or not to be

Илья Царев

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

Я рассмотрю три роли: разработчик, техлид и руководитель разработки. Где заканчивается ответственность одного и начинается ответственность другого, в чем разница между позициями, и как понять, в какую сторону двигаться.

Модели руководства
,
Поиск и развитие команды
,
Продуктовая разработка
,
Мобильные приложения / другое
Доклад принят в программу конференции

Чем UX-ер лучше граф диза при разработке аппа

Дима Мелентьев

1. Понятное ТЗ, которое без текста (оба-на):
а) Как может выглядеть документация на разработку.
б) Как она обычно выглядит.
в) Как лучше всего, чтобы она выглядела.

2. Кто нам за это скажет спасибо:
а) Экраны, элементы, сетка, гайды, ... а смысл?
б) Зачем людям приложение, польза-то есть? (а если найду?)
в) Собственно, кто эти люди? (или инопланетяне или, может, деревья)

3. Говорим на одном языке:
а) Посылка из пункта А в Б.
б) Как сделать разработчикам хорошо, да и всем, впрочем, тоже.
в) А, собственно, в чём отличие граф дизайнера от UX-ера?

Программный комитет ещё не принял решения по этому докладу

Антипаттерны продуктовой разработки

Дмитрий Емельянов

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

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

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

Программный комитет ещё не принял решения по этому докладу

То, что вы не знаете о Скрам-мастере

Дмитрий Емельянов

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

Программный комитет ещё не принял решения по этому докладу

Android CI with Kubernetes

Антон Малинский

How to prepare your CI for a team of dozens of Android developers?

The approach described has been tested by running ~6 million UI tests and ~180 million unit tests (so far) while staying sane with managing hardware and 100+ real Android devices.

Непрерывное развертывание и деплой
,
Непрерывная интеграция
Доклад принят в программу конференции

Собеседование мобильных разработчиков. Обе стороны баррикады

Александр Черный

* В чем цель собеседования?
* Что даст план собеседования?
* Что стоит хранить в тайне, а что стоит сделать открытым?
* Череда испытаний или минимум бесед?
* Какие базовые вопросы задают все кандидаты?
* Нужно ли продавать вакансию?
* А стоит ли рассказать все плохое?

Доклад принят в программу конференции

Who Will Lead The IT world of Tomorrow?

Yonatan Levin

You wake up in the morning. You go to your job. Write a great code. The elegant, well-structured architecture crafted with beautiful code using the latest design patterns. This is how we measure our colleagues. This is how we measure ourselves. This is how I was measuring myself.

However, you feel that something is wrong. Something is missing. It’s like a virus in your body - it's spreading all over. You know that you are capable of more.

This how I felt all the time. This is what pushed me to do more! To make all the mistakes in the book types but those mistakes led me to become an expert, a CTO and a leader in my industry.

During this talk I will share with you my journey, I’ll show you one of the paths that you can walk towards a better future. Your future!

Большие проекты/команды
,
Модели руководства
,
Корпоративная культура и мотивация
,
Поиск и развитие команды
,
Продуктовая разработка
,
Управление / другое
,
Другое
Программный комитет ещё не принял решения по этому докладу

Обретение навыков

Никита Прокопов

Как люди учатся новым навыкам, и какие из этого следствия для программистов. Пять стадий прокачки: новичок, продвинутый, компетентный, специалист, эксперт.

Основные моменты: как правильно обучать программистов, кто с кем эффективно работает в команде, как переходить на следующий уровень, природа споров и советов.

Доклад принят в программу конференции

Смешные и грустные истории про разработку компьютерных игр

Вадим Башуров

Истории про разработку игр, от Паскаля до Свифта, от СССР до РФ, от 10 рублей до миллиона долларов. Без нравоучений, запинок и бестолковых советов.

* Можно ли прожить, разрабатывая игры?
* Можно ли прожить, не разрабатывая игры?
* Какие знания, навыки и уроки пригодились для подобной жизни?

Вы получите ответы на любые вопросы, кроме вышеперечисленных.

Программный комитет ещё не принял решения по этому докладу

Насколько технически хорошо наше мобильное приложение?

Евгений Ртищев

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

Но нередко ловкий менеджер или даже наши коллеги могут завести нас в тупик вопросом “Насколько хороша и эффективна спроектированная нами система?”. Никто не любит признавать своё детище не идеальным и замечать существующие недостатки.

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

Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

Девять кругов ада VUI-дизайнера

Павел Гвай

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

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

Технологии: Google Assistant, Alexa, Алиса, DialogFlow.

Доклад принят в программу конференции

Plugin для Android Studio или как избавиться от рутинного кода в большой компании

Геворк Сафарян

Часто в больших компаниях мы сталкиваемся с задачами, которые влекут за собой долгую рутинную работу. Но что, если я скажу, что её часть можно автоматизировать, написав простой плагин для Android Studio?

Оптимизация производительности
,
Devops / другое
,
Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

Средства автоматизации процессов разработки мобильных приложений и предпосылки к их использованию

Дмитрий Шашлов

Многие команды сейчас используют автоматизацию для решения наиболее насущных задач при разработке мобильных приложений: проведение сборок, автоматизированного тестирования и публикации. Что, если ваша команда уже вышла за рамки стандартных решений, и вы чувствуете необходимость в применении автоматизации для решения специфичных для вашего производства задач?

В своем докладе я расскажу, как определить процессы для автоматизации вашего производства, как правильно сформулировать задание не ее разработку, а также какими правилами руководствоваться при выборе инструментов для автоматизации.

Непрерывное развертывание и деплой
,
Автоматизация разработки и тестирования
,
Распространение приложений, магазины приложений
,
Мониторинг и эксплуатация мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Правильная рабочая документация для мобильных проектов

Вячеслав Черников

Из нашего опыта - многие команды мобильных разработчиков сталкиваются со следующими проблемами во время длительного развития проекта:
- отсутствие или несоблюдение архитектурных паттернов, которое ведет к хаотичному расположению файлов в структуре решения. Также создаются излишние связи между классами и подсистемами. Все это усложняет и замедляет развитие продукта, так как требуется много времени на распутывание “лапши”;
- сложность работы с проектной документацией - требуется долгое чтение для составления полной картины, детали все равно выпадают из головы;
- отсутствие единой документации (кроме ТЗ) для всей команды, которая бы позволила проще находить общий язык и при этом сама была достаточно компактной и простой для восприятия. “Документация отдельно, код отдельно” - редко обозначения и названия из документации используются в коде, что усложняет его разработку и развитие.

Во время выступления я расскажу о пошаговом процессе подготовки технической документации, которая позволит создать “скелет” проекта или осуществить рефакторинг на основе структуры пользовательского интерфейса. Вопросы, на которые я постараюсь ответить в своем выступлении:
- Как расширить проектную документацию, чтобы разработчику было проще самостоятельно подготовить структуру проекта?
- Как организовать взаимодействие команды на базе единой технической документации?
- Как использовать техническую документацию в качестве чек-листов?
- Как писать код на основе документации?
- Как проводить тестирование на основе документации?

Методологии и процессы разработки ПО; Сроки и приоритеты
,
Проектные артефакты, инструментарий
,
ТЗ/Help/Мануал - форматы и применение
,
Особенности процессов разработки и тестирования мобильного ПО
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Проект мечты — от идеи до баксов на счёте. Быстро, бодро, офигенно

Вадим Смирнов

* Как быстро, азартно и весело распределённой командой сделали странный сервис, заработали немного баксов и теперь не прочь провернуть это снова и снова.
* Почему остановились на выбранной идее?
* Может ли архитектура iOS-приложения приводить в восторг?
* Могут ли видеоблогеры быть полезными обществу?
* Можно ли раскидать юристам Apple, что реджектить приложение — некрасиво?
* Почему наш офис ещё не в Дубаи?

Ответы на эти и другие вопросы под катом.

Доклад принят в программу конференции

Эволюция CI в команде мобильной разработки

Николай Нестеров

История развития continuous integration в команде мобильной разработки Авито.

Доклад принят в программу конференции

Технологии Android

Rock the Gradle, Rule the world

Xavier F. Gouchet

More often than none, an Android project's build.gradle file grow larger and more complex with time. Because we need to adapt it to all the specific build constraints and scenarios which are not supported by default. Custom tasks, advanced usages, … the use cases are infinite.

But like the rest of your source code, the build.gradle file(s) should be clean, easy to read and easy to maintain. After looking through various tips and techniques to clean your gradle code, we'll look at the underappreciated 'buildSrc' folder, which allows you to create plugins directly from your project. This talk will walk you step by step through the creation of such a custom plugin, with a couple of concrete ex.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Kotlin Coroutines in action

Marcin Moskala

Kotlin Coroutines fascinate from its early beta. They are a new way to write asynchronous and non-blocking code. They can be thought of as light-weight threads without having to deal with all the problems that threads bring to the table.

In this talk I will show you how to use Kotlin Coroutines and what makes them so special and so efficient. I will also discuss if they are an alternative to RxJava.

Программный комитет ещё не принял решения по этому докладу

Компонентный подход в Android-разработке или повторное использование кода Android-приложений

Михаил Горюнов

— Android навязывает процедурный подход к разработке: if/switch/when встречаются чаще, чем полиморфизм;
— контракты, предоставляемые фреймворком — Intent (action, data + type, extras) и Bundle — не типизированы, поэтому опасны и неудобны;
— в типичном приложении очень много схожих классов — фрагментов и презентеров/вью-моделей;
— чтобы повторно использовать код, нужно слабое связывание;
— идея IoC предполагает слабое связывание, а её реализация — DI-контейнеры — способствуют сильному;
— главный недуг Android — невозможность использовать нормальные конструкторы у активити и фрагментов и отсутствие чёткой точки входа в приложение;
— жизненный цикл компонентов имеет нездоровый сдвиг — вместо конструктора используются всяческие onCreate/onAttach, что порождает горы lateinit;
— Moxy и ViewModel — это non-production-решения, т. к. они не умеют сохранять состояние при перезапуске процесса;
— ViewModel должна иметь no-arg-конструктор и по факту синглтон. Если спечь вместе retain-фрагмент и простую вью-модель, получится не хуже;
— возвращаем себе конструкторы и передаём туда зависимости;
— используем статически типизированные контракты.

Статически типизированные экраны с конструкторами: http://github.com/Miha-x64/Flawless
Вью-модели с состоянием: http://github.com/Miha-x64/reactive-properties/

Программный комитет ещё не принял решения по этому докладу

The Curious Case of Android Button

Nicola Corti

We interact with buttons every day to get coffee, order pizza, or start a new Gradle build. They may look simple and straightforward, but they have a fundamental role in our environment: create a sense of power.

We all love to feel empowered and we all hate being frustrated by bad design. Your users know this as well, they want to feel immediately rewarded when they interact with your UI, and they will quickly drop your app if they get annoyed.

At Yelp, we get tens of millions button clicks a day. At that kind of scale, every pixel matters. We tune every single aspect of our buttons to make them simple and powerful, but adjusting every single shadow cast, click animation, or color layer.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

It's time to up your test game

Xavier F. Gouchet

On the paper, everyone agrees that tests are important. And yet, more often than none, tests are still considered the poor cousin in the development industry. In the rare case when we actually take time to write them, we more often than not consider it a cumbersome task, and give it less thoughts than the "real code".

But tests are often as important, if not more, as the code that will be shipped on the Play Store. After briefly explaining the basics of testing, this talk will go through various common mistakes and bad practices found in real-life unit tests, and will give techniques and tips to make those tests cleaner and better.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Построение Android-эмулятора для UI-тестирования дизайнерских приложений

Андрей Копейко

В докладе я расскажу, как построить "headless" Android-эмулятор с экраном большого размера (спойлер: стандартными средствами такого не достичь).

Эта штука крайне полезна для автоматизированного UI-тестирования приложений с повышенными требованиями к точности расположения элементов layout'а.

Мы построим такой эмулятор и затем научим Jenkins запускать его и останавливать.

Технологии виртуализации и контейнеризации
,
Автоматизация тестирования
,
Тестирование мобильного ПО
,
Нестандартные устройства и периферия
Программный комитет ещё не принял решения по этому докладу

Как устроено создание процесса в Android?

Владимир Теблоев

Вы слышали много раз такие слова, как: IBinder, Zygote, Dex и Dalvik? Хотели узнать подробнее, но не знали у кого спросить? Думаете, Android устроен из одних активити и сервисов? Спешу вас разочаровать, но все как раз наоборот.

Со мной вы узнаете, что происходит с момента нажатия на иконку приложения до запуска первого экрана. Расскажу о таких понятиях, как Zygote и их связи с процессами в Android; а также о IBinder'е, который является своего рода крёстным отцом практически всех взаимодействий в Android.

Архитектура платформы Google Android
Программный комитет ещё не принял решения по этому докладу

Firebase ML Kit : Mobile Machine Learning made easy

Harshit Dwivedi

At I/O 2018, Google released the Firebase ML Kit which creates various exciting opportunities for Android Developers aiming to build smart apps without having to worry about the nitty-gritties of Machine Learning.

The Firebase ML Kit APIs offer features like face detection, text recognition, object detection, etc.
Your apps can also label a provided image for special characteristics and identify popular landmarks in a picture.

In this talk, I will outline the usage of all the 5 APIs available in Firebase ML Kit
and I’ll be doing so by using a sample app that utilizes these APIs.

I will be walking you through the working of each api and you will leave the talk having sufficient knowledge

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Таинственный лес. Native crashes. Как и зачем их ловить и можно ли победить

Александр Колобанов

В любом андроид-приложении есть нативные крэши. Даже если в нем нет ни строчки нативного кода, добавленного разработчиком. И эти крэши нужно собирать и анализировать, даже если в приложении нет ни строчки нативного кода. Они могут сигнализировать о проблемах с памятью, ANR и много о чем еще.

Но возникает проблема. Как их собирать и анализировать? Существующие инструменты зачастую не выдают нужных данных или дают ни о чем ни говорящий стек вызовов.

Как можно использовать эти знания, стоит ли писать свою аналитику и можно ли победить нативные крэши, обо всем об этом мы поговорим в докладе.

Программный комитет ещё не принял решения по этому докладу

Смарт-поля на Android. Возможно ли создать фреймворк на Android для создания динамического интерфейса без костылей?

Виталий Маркус

Очень часто заказчики или менеджеры хотят иметь возможноть изменять интерфейс приложения без его перекомпиляции. Мы в банке разработали такой фреймворк, однако существенно ограничили его использование. Он используется только при оформлении заявок на банковские продукты и оплаты провайдеров.

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

Программный комитет ещё не принял решения по этому докладу

MV*-паттерны в рамках одной ячейки RecyclerView

Андрей Мамонов

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

В докладе мы расскажем о нашем кейсе, а именно о применении MV*-паттернов (MVP, MVVM) в рамках одной ячейки RecyclerView (как частный случай небольшого элемента экрана). Рассмотрим, в каких случаях стоит применять такую схему, разберем, какие преимущества имеет такой подход перед общепринятым - использованием сущностей для отображения. Кроме того, обсудим переиспользование компонентов на других экранах в различных сценариях и посмотрим частный пример реализации такого подхода.

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Materialize Your App

Adnan Mulla

Always wanted to make beautiful Material themed apps but couldn't due to the complexity of executing and building custom themed components ? Well, your in luck. In this talk, we will look at how you can integrate the new Material Design Components(MDC) libraries in your apps with ease and build beautiful apps which suit your brand image.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Annotation processing for Kotlin code

Сергей Рябов

When promoting Kotlin over Java to your friend the first argument you’ll probably use will be its powerful syntax: in-house nullability support, default arguments, delegated properties, data & sealed classes, etc. These features are really the stuff we’re benefiting from everyday, but if we’ll take Java annotation processors then sadly the only information they can get about our code will be Java-related and no info about Kotlin-specifics. In this talk we’ll find out how to use Kotlin metadata added to the bytecode to get info about Kotlin-specific features in the code and utilise it during annotation processing.

Разработка библиотек, включая open source библиотеки
,
Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Отринь Gradle, всяк сюда входящий

Антон Потапов

* Круг первый: .apk. С него все началось.
* Круг второй: консоль.
* Круг третий: Buck. Facebook.
* Круг четвертый: Bazel. Google.
* Круг пятый: Jerkar. Java для Java.

Технологии и языки для Android: Java, Kotlin
,
Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

Awesome Animations using ConstraintLayout and ConstraintSet

Hari Vignesh Jayapalan

ConstraintLayout helps us to easily create complex UIs without nesting views and complex view-hierarchy management. But do you know, that it also helps us to create beautiful animations and transitions with very less code? That’s what I will be sharing and discussing it with you.

In this talk, I’ll be explaining the following.
- How keyframe animation works with ConstraintLayout and ConstraintSet
- Few real-time use cases/animations - you can hack them in few minutes
- How’s it different from others?
- Animating without duplicating the layouts
- When and where to use keyframe animations
- Do’s and Don’ts
- Limitations of ConstraintSet animations

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Party like it's 1970: Conversational interfaces are back (into your Android app)

Adrian Catalan

Behold the promise land of AI. Machine learning has brought natural language processing right into our backyards and with it, the possibilities of different ways of interaction, such as conversations. But the challenges have evolved, as recognizing the input can be done via an API (like DialogFlow), we also need to consider the interface and how to give an experience so natural that it seem like a human conversation. "Oh hi, how are you holding up? because I'm a potato" it's not longer enough, we need conversationally-enabled Android apps built with a different set of design concepts. In this talk we'll review examples of core principles for the design & benefits of having one on your app.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Как я боролся с шумом GPS-приемника и что получилось

Олег Катков

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

В этом докладе я расскажу о том, почему возникают такие ситуации, и какие решения предлагаются мобильному разработчику. Мы рассмотрим, что такое сенсоры и как их использовать, что такое геохэш, и какие у него есть преимущества и недостатки. Также разберемся, что такое фильтр Калмана, фильтр Маджвика, поворотная матрица и как всё это использовать.

Программный комитет ещё не принял решения по этому докладу

Effective Multiplatform Kotlin Development

Marcin Moskala

Kotlin enables you to write Android, iOS and web applications 100% natively. When you add good architecture, you can achieve enormous code reusage. In this lecture, I will show how you can do it yourself. I will present possibilities of this approach, how to apply clean architecture there and how to unit test it all.

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

UI-профайлинг в пример: ищем бутылочное горлышко

Артур Бадретдинов

Вы разработали новый функционал, протестировали его - всё прекрасно работает. Вы отправляете его на внутреннее тестирование менеджерам... И они жалуются, что приложение работает медленно!

Мы столкнулись именно с такой проблемой, решили её однажды и построили процессы так, чтобы такие проблемы повторялись как можно реже. Junky frames (skipped frames), frozen frames - мы идём за вами!

Доклад представляет из себя технический кейс. Мы не будем углубляться в дебри оптимизаций, но рассмотрим, с чего стоит начать.

Есть приложение, которое работает. Есть ощущение, что оно работает недостаточно быстро. Сначала мы разберёмся, насколько правдиво это ощущение с помощью более точных инструментов, нежели интуиция. Затем «препарируем» это приложение, используя несколько инструментов один за другим, попутно внося оптимизации. Время ограничено, поэтому мы сосредоточимся на части инструментов: профилировщик GPU, Hierarchy Viewer, CPU profiler, вскользь - отображение Overdraw. Напоследок, рассмотрим несколько инструментов, позволяющих следить за тем, насколько хорошо приложение работает от сборки к сборке.

Разумеется, серебряной пули не существует, как и универсального решения всех проблем. Однако для того, чтобы решить проблему, нужно её найти и локализовать. Понимание того, «где мы находимся сейчас» — неотъемлемая часть успешного движения вперёд.

Мониторинг и эксплуатация мобильного приложения
Программный комитет ещё не принял решения по этому докладу

4x faster Android layouts using Anko

Harshit Dwivedi

No matter how much we love and appreciate writing XML for our layouts, it ends up being parsed on the device which results in delayed app starts.

Not only the delay, but xml is neither type safe and nor it allows you to reuse the code and you end up writing the same code for every layout over and over again!

In this talk, I'll go through Anko Layouts, which is a Kotlin Library built by none other than our favourite folks over at Jetbrains which aims on fixing this issue.
Layouts built in Anko are not only fast since there's no parsing involved, but they are also descriptive and allow code reuse along with null and type safety.

Come and join me in the process of making your app's layouts 4

Choose affiliated topic of your talk
Android Technologies: Jaca, Kotlin, NDK

Relevant #tags for your talk
applications, andriod, refactoring, kotlin

Have you given this talk before?
No

List some key terms for your talk?
layouts, kotlin, android, xml

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Как использовать корутины в проде и спокойно спать по ночам

Владимир Иванов

- Корутины в Котлине. Уже стабильны?
- Как реализовать сетевой запрос на корутинах?
- Как сделать кэш для этого запроса?
- Как убедиться, что нет проблем с жизненным циклом?
- Как протестировать все слои?
- Как правильно обрабатывать ошибки?
- ???
- PROFIT!

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Доклад принят в программу конференции

Kotlin: The Next Frontier in Modern (Meta)Programming

Amanda Hinchman-Dominguez

With growing complexity in our software systems, companies now dedicate greater effort to design product infrastructure to ensure modularity, low-cost solutions, and scalability. This session intends to analyze a general definition of crosscutting and how it affects scaling software, how Aspect-Oriented Programming (AOP) attempts to tackle crosscutting, shortcomings in Java’s current approaches in reflexive programming, and subsequently discuss my experiences with TornadoFX in solving day-to-day business inefficiencies through my first attempt at metaprogramming. By harnessing the power of Kotlin, we can make strides in creating a foundation for rational framework for metaprogramming.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Coroutines and Reactive Programming - friends or foes?

Konrad Kamiński

Coroutines may be seen as a replacement of reactive programming. Both of them offer the possibility to create asynchronous applications although in a very different way. Does it still make sense to use reactive programming in Kotlin? Or can we just stick with coroutines and forget all about other asynchronous applications approaches? Or maybe we can mix both of them, take their best parts and come up with a solution which is superior to any of the two?

In this session we'll learn the differences between coroutines and reactive programming. We'll look under the hood to find out the reasons behind some design decisions and how those decisions affect performance and interoperability.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Different Angle on Dependency Injection in Android

Vasiliy Zukanov

Dependency Injection constitutes the foundation on which maintainable and testable applications are built. However, when used incorrectly or abused, dependency injection might not reveal its full strengths, and, in some cases, might even incur some not-so-evident penalties.

In this session we will start with a review of the theory behind Dependency Injection, understand the scope of dependency injection frameworks, and conclude with a list of best practices for Dependency Injection in Android.

The material presented in this session is applicable to all dependency injection frameworks.

Программный комитет ещё не принял решения по этому докладу

GraphQL on Android Client

Amanjeet Singh

As the amount of data is growing larger day by day with more users getting on board in different applications. Backend Engineers are looking forward to the GraphQL over REST for increasing their efficiencies. This talk will answer that how an android developer should look forward to this change and how to adapt by doing all important integrations. This talk will give directed approach to the developers that how should they integrate GraphQL in their apps. By the end of session you will have clear idea about the concept of GraphQL, reasons to implement it and its integration on Android client side

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Breaking the Monolith @ Booking.com

Ishan Khanna

We all have heard stories about modularization, faster builds, quicker iterations and all the good things we get through it. But when it comes to actually breaking your legacy into modules, your code can give you a serious run for money. In this talk I will share how 60+ Android Devs at Booking got together to defeat the legacy and modularized the app to get 10 times faster builds. If you attend this talk you will be able to learn the best practices about modularizing your large code bases and avoid the pitfalls that we discovered in journey.

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Доклад принят в программу конференции

Kotlin magic: make DSL, not fork

Ilya Lim

Kotlin offers us an unprecedented capabilities when it comes to Android development. Thanks to the Java interop we also have a huge amount of libraries to use. But most of them are designed to follow best Java practices, not Kotlin. In this talk, you will learn how can you easily adapt your favorite library to be Kotlin-friendly without forking.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Считать пиксели и не сдаваться, или Строим поверх View и ViewGroup

Алексей Милеев

В App in the Air самописные View и ViewGroup используются и в хвост и в гриву.

На докладе я расскажу о том, что интересного можно делать с Custom View и ViewGroup, почему это может здорово помочь достижению 60 FPS, какие правила по написанию и поддержке этого кода я выработал для себя, и, в качестве бонуса, расскажу о некоторых интересных оптимизациях и о нюансах того, что лежит под капотом.

Доклад принят в программу конференции

Effortless Permissions: easy integration into MVP/MVI architectures

Michael Jordan

The Android permissions model leaves a lot to be desired. It is heavily tied to the activity lifecycle, introduces new UI flows and is tedious to work with. Could this be simpler? Yes.

Please allow me to introduce you to Effortless Permissions! Soon to be open sourced, it’s our battle-tested solution for simple permissions integration – a high-abstraction, zero-effort approach with easy integration into MVP / MVI architectures.

Come along for the ride on a journey through our development and design process. We’ll explore our library internals, the application of our solution in some example architectures, and its use in testing.

Consider this an end to all your permissions-related woes!

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Kotlinbots: Building your own personal robot army

Adrian Catalan

Android Things is the new kid on the IoT block, it brings all the power of Android development to hardware platforms & IoT devices. Any Android developer can start using the Android SDK and many of the APIs that we are familiar with, to blink a LED, build a cloud doorbell, the next IoT product or our own (non-evil) robot army. In this talk, we'll review the new set of APIs that Android Things bring to developers, what supports, how to start and how to approach the platform as hobbyist, without necessary having an electronics background and how to build some Android powered robots.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Activities and Fragments are not MVx views

Vasiliy Zukanov

Interest to MVC, MVP and MVVM architectural patterns among Android developers is at all-time high. Many different implementations for each of the MVx patterns have already been proposed, and it looks like there are more to come.

In this session we will take a step back from specific implementations, and review a widespread assumption that Activities and Fragments should take on “view” responsibility in MVx architectural patterns.

Программный комитет ещё не принял решения по этому докладу

Building AR apps using ARCore and Sceneform

Hari Vignesh Jayapalan

To develop AR apps for Android, you need to learn OpenGL programming and should have a sound understanding of graphics concepts. To avoid these, most people use Unity. Fear not, Sceneform is here to save you. Just like writing an Android app, you can now create ARCore apps suing Sceneform.

What to expect?
AR Fundamentals - Basic fundamentals of ARCore
OpenGL vs Sceneform - comparing both to see What Sceneform has got to offer us
Building ARCore app with sceneform I - let’s build an AR app
Performing animation and walkthrough - explanation : function by function

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Thinking reactively

Ayokunle Paul

Sequel to improvement in the underlying architecture of the Android OS, the blow up in the number of Android users and the numerous numbers of applications on Play Store, there is an increasing need for developers to build optimized and reactive android softwares.

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Introducing the Material Design Components

Nicola Corti

This year at Google I/O, we saw a lot of freshness around the Material Design environment! A lot of new tools and libraries were launched to support the development of beautiful Material UI. If you're an Android developer, the first tool that you probably want to learn is the the Material Design Component (MDC) library, a collection of building blocks and patterns to 'materialize' your Android Layouts.

In this talk we will go through this library of components, to learn how to use it properly and to understand its role in the Material Design ecosystem.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Dexs, R8 & 3.2

Inaki Villar

In this talk we are going to see the internals of the new Dexing Compiler D8, introduced in AS 3.0 as experimental, D8 will give us faster and smaller outputs of dex files. We will understand better how is the Dex Processing in Oreo/P from the ART perspective, and how is affected in the new bundle apps.
Additionally, we will see more about R8 a replacement for Proguard used in AS 3.2

Технологии и языки для Android: Java, Kotlin
Доклад принят в программу конференции

Through the looking-glass eyes of an Android

Adrian Catalan

Ever wondered what your Android sees? how does it perceive(or not) the outside world? it would be really nice for our phones to see as we see and if they're not yet capable, why not teach them? the way to do it is using Machine Learning, a (kind of) new trend that's here to stay, and with so many different areas to explore is up to us to pick one we find interesting. Well, my take is on computer vision, so buckle up and join me in this journey, let's review options for computer vision on mobile, explore different examples and walkthrough the basics of several vision APIs.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Firebase ML Kit : Mobile Machine Learning made easy

Harshit Dwivedi

This talk will be covering the newly released firebase ML Kit and how easily, even a beginner developer can integrate advance Machine Learning features into their apps.
In this talk, you will learn how to add features like face recognition, object detection and text recognition in your Android or iOS app with a few lines of code thanks to the rich and powerful apis provided by the platform.

Технологии и языки для Android: Java, Kotlin
,
Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Gradle Plugin Development

Филипп Уваров

* Какие проблемы может решить кастомный плагин для Gradle?
* Разработка собственного плагина: от прототипа до публикации артефакта.
* Оптимизируем наше решение.
* Как все это протестировать?

Доклад принят в программу конференции

App Stability-Don't crash the party!!

Renu Yadav

Methods to increase app stability, lesser crash rates, observe app behaviours using AndroidVitals.

Технологии и языки для Android: Java, Kotlin
Доклад принят в программу конференции

Как правильно и, главное, зачем писать Android-приложение в одном Activity

Константин Цховребов

- Чем single-activity лучше чем multy-activity (скорость, анимации, ЖЦ и др.);
- как выстраивать DI-скоупы для оптимального использования памяти;
- как выстраивать навигацию, чтобы не сойти с ума;
- как обрабатывать deep-link'и;
- как делать общий BottomNavigationBar (и другие общие элементы);
- как делить приложение на модули;
- как обрабатывать клавиатуру и статус бар...

...список будет дополняться.

Доклад принят в программу конференции

Тотальная интеграция приложения в экосистему Google

Денис Неклюдов

При создании приложения под Android есть множество связанных продуктов Google, где наше приложение может быть интересно пользователю. Мы обсудим интеграцию пуш-уведомлений в приложение, интерактивную поисковую выдачу в лаунчере, ассистенте и меню "Share", свои экшны в контактной книге, обработку основных системных интентов с экшнами, виджеты в лаунчере, шорткаты, свой собственный экшн для голосового ассистента, приложение для часов на WearOS, приложение для Android TV.

Доклад принят в программу конференции

Make Dagger 2 Android Injectors work for you

Ronen Sabag

In this talk you will explore some advanced use of Dagger for building Espresso tests in hermetic environment, how Dagger might help you to reuse screens and how Dagger might help you refactor legacy code.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Unidirectional Data Flow под Android

Сергей Рябов

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

В этом докладе мы поговорим о том, как можно адаптировать Unidirectional Data Flow под реалии Android, и как нам в этом поможет Kotlin и его ключевые фичи. А также посмотрим на примеры реализации типичных юзкейсов в этом подходе.

Архитектурные паттерны
,
Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Child Presentation Model — переиспользуем код в архитектуре c RxPM

Дмитрий Горбунов

Вам приходится решать одни и те же задачи в UI?
Просто копипастите код?
Создаёте базовые классы и потом страдаете от наследования?
Или делаете несколько презентеров и не знаете, как им общаться между собой?

Есть другой способ — использовать композицию и делегирование в презентационном слое.

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

Программный комитет ещё не принял решения по этому докладу

Android в терминалах и корпоративных гаджетах. Наш опыт в построении COSU (Corporate-Owned, Single-Use) архитектуры

Евгений Чормонов

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

Уже из коробки есть инструменты для удаленного управления системой, в том числе и ограничение прав пользователя. Одна из самых интересных возможностей - это Single-Use (Kiosk) app - приложения переднего плана, которые всегда запущено и доступно пользователю. Из него нельзя выйти за исключением удаленной команды с сервера. Стандартная область применения - это терминалы оплаты, терминалы верификации или инвентаризации, интерактивные вывески и т.д.

Мы применили данные инструменты для создания игрового аппарата для мест общественного пользования. И нам интересно поделиться опытом по созданию подобных продуктов.

Архитектура платформы Google Android
,
Мониторинг и эксплуатация мобильного приложения
,
Нестандартные устройства и периферия
,
Аппаратные и программными возможности мобильного устройства
,
Безопасность в мобильных приложениях
Программный комитет ещё не принял решения по этому докладу
Программный комитет ещё не принял решения по этому докладу

Как мы разделяли большое приложение на модули, и что это нам дает

Евгений Кривобоков

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

Программный комитет ещё не принял решения по этому докладу

Архитектура

Организация работы списков, или как меньше о них думать

Денис Александров

Практически каждое приложение для мобильных платформ не обходится без списков. Чего не хватает в стандартном решении? От чего, наоборот, хотелось бы избавится? И, самое главное, как написать модуль для работы с таблицами так, чтобы он легко модифицировался, переиспользовался и вызывался всего одной строкой кода?

В докладе я покажу наш модульный подход к организации списков для социальных сетей и других нагруженных приложений.

Программный комитет ещё не принял решения по этому докладу

Технология защищенного удаленного администрирования, разработанная ассоциацией GSMA: от частного к общему

Дмитрий Шорин

Многие уже, наверное, сталкивались с не так давно вышедшими на рынок умными часами, которые получают доступ в сети мобильной связи без необходимости использования SIM-карты. Каким же образом, происходит их соединение с сетью, если отсутствует ключевой элемент, содержащий идентификатор абонента и его секретный ключ для аутентификации? Дело в том, что SIM-карта уже находится в часах, будучи впаянной в микросхему. Однако на ней отсутствуют какие-либо данные, способные разрешить устройству регистрироваться в мобильной сети. Чтобы такие данные туда занести, ассоциация GSMA разработала специальный защищенный механизм удаленного администрирования.

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

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

Защита информации
,
Проектирование информационных систем
,
Безопасность в мобильных приложениях
,
Мобильные приложения / другое
,
Другое
Программный комитет ещё не принял решения по этому докладу

Learning From Our Elders

Rob Napier

Swift is not a functional programming language. Pushing too hard to make it one fights Swift and breaks Cocoa.

But Swift has absorbed some fantastic lessons from the functional world, and while value types may not quite be the present, they are clearly the future. We’ll explore how decades of work in functional languages have influenced Swift, and how you can use those features best while staying true to Swift.

Технологии и языки для iOS: ObjectiveC, Swift
,
Архитектура мобильного приложения
Доклад принят в программу конференции

Акторные модели: новый взгляд на старый подход

Владимир Теблоев

Обычно в любом большом проекте полно внешних и внутренних систем, в которых используется RxJava. Данный подход уже стал стандартом де-факто при разработке под Android, но многие не задумываются о том, что есть совершенно иная парадигма разработки, которая хорошо зарекомендовала себя в enterprise, как в свое время RxJava. Вы спросите: что же это такое? Акторная модель.

Со мной вы узнаете, что такое акторная модель и как она может помочь нам при разработке на мобильном устройстве. Что акторы можно использовать не только на Erlang и Scala. Легковесные асинхронные потоки, которые работают как обычный синхронный код и не только. Заденем Kotlin-coroutines, а также обсудим фундаментальность данного подхода при построении быстрых и отзывчивых систем.

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Натив или гибрид? Что такое Cordova и как ее готовить...

Павел Тимофеев

Ответим на вопрос, следует ли создавать нативные приложения для каждой платформы или кросс-платформенные. Рассмотрим возможности Apache Cordovа, а ещё поговорим про готовность HTML5 к использованию в корпоративной сфере.

Программный комитет ещё не принял решения по этому докладу

Бизнес-слой в Android-приложении

Олег Колтунов

Работая над различными Android-приложениями, я замечал, что разработчики часто не понимают, что такое Бизнес-слой в приложении. Результат такого непонимания: перегруженные активити, фрагменты, презентеры, адаптеры. Перегруженный слой представления в свою очередь приводит к радикальному снижению скорости разработки и модификации приложения.

В своем докладе я расскажу:
* Зачем нужно выделять Бизнес-слой.
* Что отнести к Бизнес-слою в Android-приложении.
* Как разделить слой представления и Бизнес-слой.
* Где место для маппинга данных.
* Часто встречающиеся ошибки выделения Бизнес-слоя.

Доклад построен на рассмотрении примеров кода из практики написания банковских приложений.

Разделение представления и бизнес-логики, шаблонизация
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

When SOLID is unsound

Александр Сычев

SRP, OCP, YAGNI, KISS, SOLID... Чем больше работаешь в разработке, тем больше новых акронимов узнаешь и тем больше тебя убеждают, что им нужно следовать прямо и неукоснительно. При этом о каждом паттерне или принципе можно сказать:

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

В докладе поговорим о границах применимости пяти основных принципов объектно-ориентированного программирования и о том, к чему может привести over-SOLID engineering.

Методы и техника разработки ПО
,
Архитектуры / другое
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

“Make your app work perfectly offl…” — Connection Interrupted

Xavier F. Gouchet
Jérémy Bartolomeu Bonze

As developers, more often than not, you have access to fast and reliable internet connection, all day long. But the users you target won't. Limited data plans, unreliable network coverage, commuting : those are real obstacle that your users will see daily. This means that network will only be available at some times, and not necessarily when the user wants to interact with your application. Our talk will focus on creating a user experience with ‘offline’ being the default working state, and having access to the internet being a bonus for your users.

Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

a/b-тестирование, которое делает счастливыми продакт-менеджеров, аналитиков, разработчиков и тестировщиков

Александр Краснов

* Формула прибыли и оценка стоимости фичи через a/b.
* Рыночные решения a/b и их недостатки.
* Наши требования к a/b и почему ничего из рынка нам не подошло.
* Единый, эффективный формат хранения, передачи и аналитики фича-состояний.
* Как жить с a/b и автотестами одновременно?
* Как наша архитектура у нас работает со стороны всех стейкхолдеров.

Проектирование информационных систем
,
Аналитика / другое
,
A/B-тестирование
,
Особенности процессов разработки и тестирования мобильного ПО
Программный комитет ещё не принял решения по этому докладу

So you think you know how to do ASO?

Anatoly Sharifulin

Anatoly will drop some knowledge bombs on how to do ASO, how reviews affect your ratings, how to work with your users in order to get to the top of app stores. Will teach you how to get on the App Store Today tab and why it may be not for the best.

Doubt if you should attend? Doubt no more if you want to learn all insides of ASO and how to develop apps that get to the top of the charts.

Архитектура мобильного приложения
Доклад принят в программу конференции

Архитектура слоя исполнения асинхронных задач

Степан Гончаров

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

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

Доклад принят в программу конференции

Reverse Reverse Engineering Engineering 101

Royi Benyossef

Mobile app developers spend countless man thinking about color palettes, user stories and software architecture in order to create a flawless design, seamless experience and impeccable service. But few put as much effort into securing their applications against hackers and reverse engineering, meaning all their hard work could be destroyed by a simple downloaded script.

App developers and mobile startups are vulnerable to hacking more than ever before and must learn how to protect themselves. Based on personal experience I have learned how these hacking tools work, how to detect if you've been hacked, and how to employ easy-to-use tools and patterns to protect yourself from reverse enginee

Архитектура платформы Google Android
,
Безопасность в мобильных приложениях
Программный комитет ещё не принял решения по этому докладу

The A, B and C of Lifecycle Components

Nishant Srivastava

If you've been developing Android applications for a while now, you know the pain of handling the lifecycle just right. It’s a pain-point that has existed since the advent of Android, up until recently when Google released Architecture components. As an Android developer, you are bugged by handling activity/fragment lifecycle and flow of data in tandem with the lifecycle changes day in and out. Making your code aware of the lifecycle of the process/activity/fragment makes you more confident as a developer and enables faster development.

This session would enable you to understand Lifecycle components (ProcessLifecycleOwner, LifecycleOwner, LifecycleObserver) and how they can be leveraged.

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

UDF для iOS-разработки

Геннадий Евстратов

Уже несколько лет большое количество web-приложений разрабатывается, используя подход Unidirectional Data Flow, реализованный такими библиотеками, как, например, redux.

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

Асинхронное программирование, реактивное программирование
,
Архитектура данных, потоки данных, версионирование
,
Технологии и языки для iOS: ObjectiveC, Swift
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Design by Contract

Graham Lee

People are getting interested in functional programming now and designing their software as functions that transform data from one type to another, rather than recipes that sequentially modify some state. The claim is that we can "reason about" our software better, design by contract is about capturing that reasoning as statements about the inputs and outputs of our functions, and connecting those together to make sure that our software works correctly for _any_ valid input, not just the few cases we thought about in unit tests.

Архитектура мобильного приложения
,
Мобильные приложения / другое
Доклад принят в программу конференции

Stop Stalling: Delivering Beautiful Video to Mobile Users

Doug Sillars

As devices and networks become faster and more powerful, video is becoming ubiquitous in connecting with users. However, successfully delivering video in an efficient manner to desktop, tablets, and mobile devices is a challenging feat. In this talk, we’ll walk through how video delivery works and best practices to deliver video streams to all devices. Attendees will learn techniques that are working today, and how to implement them in their current workflows.

Архитектура платформы Google Android
,
Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Технологии iOS

Наводим порядок в настройках проекта с помощью xcconfig-файлов

Александр Дубиков

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

Одно из решений вышеперечисленных проблем - использование xcconfig-файлов.

Технологии и языки для iOS: ObjectiveC, Swift
,
Особенности процессов разработки и тестирования мобильного ПО
Программный комитет ещё не принял решения по этому докладу

Инфраструктура для UI-тестирования в Авито

Владислав Алексеев

Расскажу про опыт разработки, запуска, стабилизации и ускорения функциональных тестов в Авито. Вместе разберем общие проблемы, которые встречаются на пути каждого, кто пытается внедрить тестирование в своем проекте: от самых простых (вида какие тесты писать) до сложных (вроде как прогонять тесты на нескольких симуляторах и физических компьютерах наиболее эффективно). Узнаем, как можно ускорить тесты простыми методами, как вылечивать красные тесты, поддерживать инфраструктуру для прогона тестов на нескольких версиях iOS, обходить ограничения TeamCity, анализировать поведение инфраструктуры во время прогона. Дам идеи, укажу на инструменты, которые используем мы.

Непрерывная интеграция
,
Функциональное тестирование
,
Автоматизация тестирования
,
Тестирование мобильного ПО
,
Технологии и языки для iOS: ObjectiveC, Swift
,
Особенности процессов разработки и тестирования мобильного ПО
,
Мобильные приложения / другое
Доклад принят в программу конференции

Математические основы Auto Layout

Антон Сергеев

Auto Layout - это очень медленный инструмент для верстки, а его отладка крайне сложна. Думаю, мало кто не согласится с этим утверждением. При этом Apple продолжает его развивать и, похоже, не собирается предлагать альтернатив.

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

В ходе доклада мы научимся понимать Auto Layout. Разберемся, какую задачу он решает и как он это делает. Разберемся, когда его использовать не стоит. И самое главное, научимся "проектировать ограничения", а не "подгонять ограничения под ответ".

Алгоритмы и их сравнение
,
Архитектура платформы iOS
Программный комитет ещё не принял решения по этому докладу

История одного stacktrace или зачем разработчику знания про objc_msgSend :trollface:

Владимир Храмцов

История поиска причины падения с небольшим системным stacktrace. Будут регистры, адреса, селекторы и прочая дичь. Затрону темы, о которых спрашивают на собеседованиях, но которые так редко используются в работе iOS-разработчика.

Расскажу про:
- NSRunloop, NSTimer;
- Короля Objective-c - objc_msgSend;
- Процессор ARM, на котором 1/0 - валидная операция (на симуляторе такой код "упадёт");
- Mach-O binary;
- Crash reporting systems;
- Использования jailbreak в отладке.

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Crypto, use it right

Marcin Krzyzanowski

Let's discuss how to use Cipher, what is AES and how to authenticate a message. Dive deep into basic cryptography basic primitives. Let's make it a group therapy session.

Технологии и языки для iOS: ObjectiveC, Swift
Доклад принят в программу конференции

Apple CoreML + IBM Watson = YOUR Cognitive App

Виктория Кашлина

В марте 2018 года компания Apple объявила об интеграции CoreML с умным IBM Watson. Но так ли близка когнитивная эра в вашем iPhone?

В основном, мы знаем о примерах с Visual Recognition и забываем, что новые технологии предоставляют гораздо больше интересных возможностей. Также появляется все больше инструментов, которые позволят вам быстро, легко и качественно "подружить" objective-c с нейронными сетями.

В своем докладе я расскажу о существующих трендах рынка мобильных приложений с нейронками, проведу сравнительный анализ систем, а также дам новый рецепт того, как сделать ваше iOS-приложение более человечным! :)

Аналитика / другое
,
Технологии и языки для iOS: ObjectiveC, Swift
,
Мобильные приложения / другое
,
Machine Learning
Программный комитет ещё не принял решения по этому докладу

The Touch of Magic

Bhagat Singh

3D Touch was released in 2015, but is still not talked about mostly. This talk aims to clear out all you doubts about 3D Touch, along with the best developer practices for using it. We'll also take a look at various places where we can implement 3D Touch across our apps and get that 5-star rating!

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

TensorFlow + Swift = 🔥

Артем Кислицын

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

Рассмотрим отличия TensorFlow от фреймворков Apple, посмотрим, чем интересно машинное обучение и инструменты, основанные на нем, мобильному разработчику. Также решим непростую задачу, используя машинное обучение и Swift.

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Swift concurrency. Actors (Enhanced Edition)

Александр Андрюхин

- Пробежимся по концепции модели акторов.
- Разберем, зачем эта модель Swift'у.
- Заглянем под капот одной из реализаций.
- Поищем применение в iOS.
- Сравним с подходами, что доступны сегодня.
- Подведем очередную черту.

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Let it build: прокачиваем Mac как сервер сборок

Георгий Зиняков

Когда ваш проект растет, и вы понимаете, что для сборок и построения CI/CD недостаточно облачных сервисов или одного mac'а, ваша инфраструктура начинает расширяться. Как управлять большим парком сборщиков iOS-проектов? Как из клиенто-ориентированной macOS соорудить автономного монстра, который будет стабилен и самостоятелен в роли высоконагруженной CI-системы?

Программный комитет ещё не принял решения по этому докладу

Модуляризация приложений с помощью JSCore

Вадим Новосельцев

Что, вообще, такое JSCore, как с помощью него можно что-то модуляризировать и, самое главное, нужно ли это? А также поговорим об альтернативах и не забудем о подводных камнях.

Доклад принят в программу конференции

Creating ML Models with CreateML

Bhagat Singh

ML is the hot thing right now. But, if you want to create ML Models for your application, you'd have to go through the tedious process of training and exporting your models with Tensorflow or Caffe. But, fear not, CreateML is here to answer all your woes and make it easy for you!

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Зачем нам design-first и server-side Swift, когда и так все работает?

Михаил Чурбанов

Очевидно, что большая часть приложений iOS нуждается в backend'e и серверный Swift выглядит многообещающим вариантом по многим причинам. Однако, вместо всеобщих и расплывчатых преимуществ, я хочу поделиться деталями истории о том, как подход design-first с использованием OpenAPI совместно с использованием Swift для сервера, может помочь избежать различных повседневных проблем и принести пользу iOS-разработчику.

Технологии и языки для iOS: ObjectiveC, Swift
,
Бэкенд мобильных приложений
,
Клиент-серверное приложение, REST API, protobuf
Программный комитет ещё не принял решения по этому докладу

CoreData в высоконагруженном проекте

Дмитрий Иванов

Мы начнём с краткого описания основного (наипростейшего) сценария использовнания CoreData, предлагаемого в туториалах. Мы затронем основные сущности CoreData (контекст, координатор, модели, контроллер результата).

Затем в докладе будут раскрыты проблемы, с которыми сталкивается разработчик, применяющий классическую конфигурацию в проекте, где более пары сохраняемых сущностей, и присутствует многопоточный доступ к данным. Далее пройдёмся по основным путям решения подобных проблем, подробно остановившись на различных вариантах реализации CoreData-конфигураци (CoreData stack).

Затем будет рассказано об опыте внедрения подобных подходов, о набитых шишках и сделанных выводах.

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

Программный комитет ещё не принял решения по этому докладу

Using Abstract Algebra to derive a better Animation Library

Brandon Kase

Designing simple and expressive libraries is hard, but is a worthy goal. It's too easy to accidentally add complexity. Math can fix that. Math can give us guide-rails that point us to an ideal simple and expressive design. In this talk, we'll use basic abstract algebra to guide us toward a simple and expressive animation library. We'll use animations to help us understand abstract algebra as we discover the true algebraic structure of animations. Only after thinking hard about the structure, do we begin an implementation. In the end, I'll present some examples of working with this animation library we derived over the talk.

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

The Power of Making Your App Accessible

Matthias Tretter

Accessibility is a very important topic, that is often overlooked or, at best, added as an after-thought. This is very unfortunate, as Apple is doing a great job at providing good and simple to use APIs to make our apps accessible. Apple is fully committed to Accessibility and in providing an equal user experience for all their users, and so should we. The goal of this talk is to give an in-depth look at Accessibility on iOS, as well as outlining the reasons on why to use Accessibility by giving real-world examples of its importance.

Технологии и языки для iOS: ObjectiveC, Swift
Доклад принят в программу конференции

Adding Polish with Animations on iOS

Sam Davies

Your app is great—the functionality is exactly what you wanted, but you can't help but think there is something missing. Why doesn't your app feel as playful as the Apple Music app? Or as fun to use as Waze?
In this talk we'll take a look at some popular apps that truly delight users, and investigate how to recreate some of the animations and UX experiences. Expect to discover stuff you never know about layers and view controller presentation.

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Concurrency Primitives

Michael Brandon Williams

We will develop first class types for encapsulating the ideas of synchronous and asynchronous work. These types have lots of interesting compositional properties. We will explore these properties and compare them to async/await style of concurrency that may be in Swift's future.

Технологии и языки для iOS: ObjectiveC, Swift
,
Архитектура платформы iOS
Программный комитет ещё не принял решения по этому докладу

Maintaining Apps Used by 3.5M+ daily users

Bhagat Singh

You've released your app. Yay! But now the real challenge kicks in. When your codebase gets over 400,00 lines, you get lost while fixing bugs and creating new features. This talk aims to fix that for you on how you can control your codebase, into something more scaleable and workable.

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Проблемы роста iOS-приложения, и как мы их решали

Тимур Юсипов

Когда-то давно проект Avito iOS был маленьким, над ним трудилось несколько разработчиков, а кроме Xcode и git, никаких инструментов было не нужно. По мере того, как проект Avito iOS рос, к нему появлялись новые требования и нетривиальные задачи, за которыми последовали разные автоматизации, скриптики, утилитки, проверки качества и прочие плюшки.

В своем докладе я расскажу:
- о проблемах, с которыми мы сталкивались;
- о решениях, к которым мы пришли;
- и об автоматизациях, которыми теперь обросло наше приложение.

В частности, расскажу:
- об уменьшении размера iOS-приложения;
- о сокращении времени сборки проекта;
- о сокращении времени реакции на крэши;
- о сокращении времени запуска iOS-приложения.

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Machine Learning + Mobile: настоящее и будущее

Андрей Володин

Публичные тезисы потребуют редактуры и доработки.

Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

Dependency Injection on iOS

Amanjeet Singh
Bhagat Singh

We will be discussing about dependency injection on iOS. The requirements of Dependency injection and general design pattern to perform while doing dependency injection. And the things which developers should not do.

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

"Latency numbers" на iPhone

Дмитрий Куркин

"Latency Numbers Every Programmer Should Know". Надеюсь, и вы с ней знакомы. Но, тем не менее, она датируется 2012-м годом и ориентирована на десктопы. А как бы она выглядела для современного iPhone?

Как, вообще, можно делать замеры такого масштаба? Справится ли с этим XCTest::measure? С учетом этих чисел - что такое для iPhone "быстро", а что "очень долго"?

В докладе я отвечу на эти вопросы, покажу результаты замеров и как они получены. Сделаю замеры типовых задач iOS-приложения.

Аппаратные и программными возможности мобильного устройства
Программный комитет ещё не принял решения по этому докладу

Что нам стоит видеоредактор построить

Макс Никулин

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

А также мы более подробно остановимся на различных вариантах реализации частей видеоредактора для платформы iOS на основе AVFoundation, а также посмотрим, как можно применять обычные подходы проектирования к нашей предметной области.

Технологии и языки для iOS: ObjectiveC, Swift
,
Работа с графикой, 3D Моделирование
Доклад принят в программу конференции

Говорим на нескольких языках: Swift и Objective-C в одном проекте

Александр Сычев

iOS-разработчик должен в равной степени владеть двумя языками программирования: проверенным временем Objective-C и активно развивающимся Swift. Языки совместимы и допускают создание проектов, содержащих файлы, написанные на любом из них. Но взаимодействие двух языков, позволяющее легко вносить изменения в проект и поддерживать достаточную гибкость - задача нетривиальная и требующая пристального внимания. 

В докладе поговорим о создании приложений на разных языках и о принципах их взаимодействия. 

Технологии и языки для iOS: ObjectiveC, Swift
,
Особенности процессов разработки и тестирования мобильного ПО
Программный комитет ещё не принял решения по этому докладу

Swift for iOS SDKs

Eric Giannini

At WWDC 2017 Apple launched a brand new feature of Swift called the 'codable' protocol that empowers developers with the ability to encode or decode Swift data structures into or out of JSON data.

The developer community from one end of the spectrum to another is celebrating how the 'codable' protocol vastly simplifies the process of coding data. Here are just a few of the talks written about 'codable':

- [try! Swift Tokyo 2018 - Codable Routing with Kitura](https://www.youtube.com/watch?v=5ciZS7Cxyp0)
- many many more
- many many many more
- many many many many more

Here is the number of talks written about Objective-C: 0. You can see that developers are not particularly interested in celebrating a language whose features have not evolved much at all in the past thirty years. Many developers have already been dispatching eulogies over its legacy: https://academy.realm.io/posts/altconf-aaron-hillegass-eulogy-for-objective-c/ Who wants to write an SDK in a 'dead' language like Latin or Greek? No one does.

Программный комитет ещё не принял решения по этому докладу

CodeGen all the things!

Olivier Halligon

Swift is a great, type safe and powerful language. But some stuff are still cumbersome to write yourself. And some APIs could deserve more type-safety and less string-based methods.

Learn how Code Generation tools like Sourcery and SwiftGen can help you on your daily developement tasks: avoid typing boilerplate and repetitive code like implementing a custom 'Equatable' implementations, add type-safety and auto-completion for your resources (Localized strings, images, storyboard…), avoid maintenance of your constants, and make sure you catch errors at compile time rather than by luck at runtime.his ta

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Обработка ошибок в iOS-приложении

Владимир Шутов

* Виды ошибок;
* Как с ними работают, и почему это плохо;
* Как спроектировать ошибку правильно. Как выглядит модель «Ошибка», её обязательные поля. Преобразование «чужих» ошибок в свои;
* Как обрабатывать ошибки, какие методики существуют. Наш опыт.

Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу