Похожие видео
Описание
Приглашаем на митап для андроид-разработчиков в Нижнем Новгороде, который мы проводим с сообществом GDG Nizhny Novgorod. • Организация и инфраструктура дизайн-системы Авито — Андрей Данилов, Авито. Анимации, как у сына маминой подруги — Андрей Тумаринсон, MERA. • Мы вынесли инфраструктуру для Android в open source — Сергей Боиштян, Авито. • Почему Kotlin Coroutine — лучшее, что подходит Android — Кирилл Розов, Android Broadcast. Уже четыре года мы поддерживаем IT-комьюнити в России. Мы провели кучу митапов в московском офисе Авито, а потом подумали, что отсутствие офиса в городе — не повод не проводить там митап. Мы хотим, чтобы независимые сообщества разработчиков развивались по всей стране и больше друг с другом взаимодействовали. Это может звучать напыщенно, но талантливые и интересные люди есть везде, а общий опыт и знания помогают нам развиваться и быстрее решать задачи. Так родилась идея провести свои региональные мероприятия, чтобы поближе со всеми познакомиться. Мы назвали её AvitoTech On Tour. Подпишитесь на наш канал, соцсети и блоги, чтобы узнавать больше о технологиях Авито 👇🏻.
Текстовая версия
Всем привет добро пожаловать на митап спасибо. Что пришли в этот выходной день к нам сюда а меня зовут миша я и завита и собственном эго это любим поддерживать. Независимое сообщество в тех областях разработки которыми мы занимаемся и обычно мы чаще всего делаем такие встречи нашем офисе в москве но в прошлом году?
Мы решили а почему бы нам не поехать в небольшой?
Тур по городам россии мы выбрали в качестве первых мест казань нижний новгород и спасибо сообщества джиджи. Нижний новгород что поддержали нас и выступили нашими партнерами. В организации этого мероприятия мысин привезли 4 touch не привезли 3 классных докладчиков двое и завита и у нас специальный.
Гость из минска есть сегодня мы их попозже всех!
Обязательно представим один местный спикер есть который из мер и вот на сегодня 4 докладов программе. В перерыве будет у нас небольшой перекус. И можно будет пообщаться поиграть и так далее у нас сегодня трансляция живая поэтому если вы захотите задать вопрос подождите.
Пожалуйста до конца доклада поднимите руку мы подойдем? К вам с микрофоном чтобы в трансляции люди тоже услышали вопрос люди в трансляции пожалуйста тоже пишите свои вопросы. В чат мы будем их озвучивать спикером и отвечать на них на этом собственно особая тянуть больше времени буду и передам им english.
И микрофон всем привет очень рад вас видеть на нашем. Первом совместном мероприятию нижним новгородом авито и диджей вот хочу только тебя анонсировать что у нас будет 19 апреля офигенные событие для девушек?
Войти international бендис в кремле в арсенале.
Так что записывайтесь билеты пока еще есть еще раз рад всех приветствовать и начинаем. Давайте поприветствуем до 1 докладчика сергей боишься ну а ли там нормально слышно всем привет я чувствую что моя.
Голова как сжаты арбуз сейчас уже эта штука.
Немного давит поэтому хочу вас проинформировать об этом тоже наверное все когда приходит на к этот доклад не могут понять что сейчас будет рассказывать: Обычно ты думаешь но будет что-то нормальное либо будет какая-то дичь у меня есть предположение что смотря на название моего доклада.
Вы подумали что наверно будет к это дичь вот поэтому я решил немножко рассказать вкратце я хочу донести чем вообще может быть полезно. Разработка в open source то есть не просто вынести какую-то штуку и забыть про нее вот мы прям ежедневную свою свою работу туда.
Вынесли это ну кардинально изменило всю работу и хочу чтобы. Вы получили какой-то но новые знания новый источник для принятия возможны каких-то решений увидели поддержку. В лице нас ну и дальше это все раскрою что это значит в общий источник для принятия?
Решений я расскажу кто мы в какой команде я нахожусь и что мы делаем почему. Мы перенесли все в open source и как этот open. Source можно использовать вот команда наша на самом деле не из 3 человека из 4 4 человек недавно.
Подлетел вот как в анимация примерно и во вид отрицать android-разработчиков которые пишут продуктовый код и вот четыре из них сейчас. Они вообще не занимаются ничем продуктовом то есть мы сидим целыми.
Днями и делаем что-то и к нам приходят от чего вообще делаете за что мы платим. Вам деньги и мы защищаемся каждый день и говорим но мы приносим пользу.
Вот как это пользователь почувствует до непонятно вот ну вот мы примерно такие люди которые сидят целыми днями и помимо работы еще защищается. У тебя в глазах там у своей матери моя мать не понимает какую пользу я приношу.
Вот надеюсь вы поймёте наше направление мы занимаемся сборкой пытаемся. Ее ускорить пытаемся чтобы разработчики не страдали когда ждут показ компилируется проект помогаем писать тесты помогаем как повысить качество.
Написание этих тестов занимаемся всеми задачами которые можно назвать ключевым словом чай и помогаем релизе вид а там стабильно часто и делать этот процесс: Прозрачным если из всех этих направлений вычленить какие-то конкретные продукты.
Там ком мы называем это компоненты то 4 которые мне первые в голову пришли это тестовый runner там test framework тест impact анализ и delivery но тут сейчас! Будет поподробней поэтому пока не напрягайтесь вот что такое тестовый runner мы делаем такую штуку которая берет тесты берет какие-то.
Девайсы эмулятор и прогоняет тест на нужном девайсе но нужным эмуляторе там с нужной версии это что получилось куда-то сохраняет и потом ты можешь. Посмотреть отчет по этому тесту там тестировщик может посмотреть разработчики понять чего вообще произошло?
В момент исполнения этого теста кто вообще пишет тесты у себя в компании вам на android приложение. Вот все кто пишут тесты понимают что с пресса плаху с пресса не очень вот и мы это тоже поняли довольно давно:
И вот наверно индикатором этого всякие фреймворке. Типа какао касс пресса бариста капучино могочи на то есть все что там надо стресса и вот у нас тоже.
Есть такая обертка написано очень давно и даже в какой-то в какой-то там в буду ее перес! Пользуют просто потому что человек и завита перешел в баду и такой о надо переиспользовать:
Вот и плюс мы пишем всякие g-unit роллы если кто то не знает что такое ролл для же юнит не заморачивайтесь. Но короче просто мы пишем какие-то штуки которые помогают наши тесты удобно настраивать и запускать и удобно писать вот есть более сложная. Штука которая называется тест impact анализ кто слышал этот термин хоть раз вот что это вообще такое когда у тебя растет?
Кодовая база и растет количество тестов их становится очень много.
И ты не можешь их все прогнать за 1 ну либо можешь но это очень долго у нас. Во вид а сейчас где-то 2000 android тестов которые на эмуляторе гоняются и где-то 10000:
Unit тестов и если на паре квесте все эти тесты запускать наверно мы будем очень долго ждать. Обратную связь и есть типа техники которые помогают уменьшить количество тестов которые надо прогнать вот impact анализ вот тут принципиальная: Схема ты сделал по request поменял 3 файлика эти три файлика находятся в каких-то модулях то есть мы можем посмотреть какие реально.
Модули изменились есть какие-то тесты эти тесты связанные с какими-то модулями.
То есть они лежат там в конкретные директорию или ну или как-то с ними связаны. И вот мы делаем то что мы понимаем вот эти три файла. Измененных за деле эти допустим 100 тестов и только.
Их надо запустить и но тем самым мы можем запустить меньше тестов они там две тысячи десять тысяч unit тестов и доставка.
Под доставкой можно понимать чисто доставку в play market когда ты собрал приложение. Тебе нужно пользователям выпустить релиз и ты там можешь руками загрузить можешь какой то скрип написать:
Можешь fast lane куница использовать либо gradle плагин плюс мы еще реализовали там доставку нашим тестировщиком у нас там тестировщик хочет зайти на какое-то внутренние ресурсы скачать актуальную.
Версию приложения и что-то с ней поделать и плюс у нас еще безопасники нам мешают жить и такие отдайте. Мы протестируем насколько вы там безопасны и мы им даем тоже специальная версия приложения в которой все не так как на самом деле чтобы все? Безопасности утекали это шутка конечно вот и теперь перейдем главному пока вы все не умерли от скуки моего.
Рассказа есть вот такая ссылка вот по этой ссылке вот вы можете уже типов телефон начинать ее вбивать по этой ссылке будет находиться сейчас невероятный: Опрос очень полезны и для вас и для нас в котором мы вынесли список всего? С чем вы работаем и вы можете проголосовать если для вас это актуально и мы чувствуем:
Планируем сделать мы хотим вот понять что актуально для сообщества и сделать это удобным для них чтобы вы могли решать! Но если у вас реально есть такие же проблемы как у нас чтобы вы могли взять.
Нашу библиотеку использовать у себя вот и плюс через эту форму можно еще.
Задать вопросы в свободной форме если у вас нет каких-то.
Проблем которые там перечислено что-то интересно сейчас чтобы вы не стеснялись мы не стесняюсь что происходит вы все видите.
Да вот это примерно выглядит так вот уже голосуют люди здесь вы периоде по ссылке вот там будет такие вопросы: Вот за них можно в реал тайме голосовать и в конце я открою и раскажу!
Чё то про это и плюс у нас вот а есть отдельная секция. Вы можете подойти и к нам но вообще камней:
Всех кого увидели на фотографии и просто.
Задавать нам вопросы да все в майк это тех вот погнали дальше то я не слежу за таймингом вот и вы типа. Поняли я надеюсь кто мы и чем мы делаем бесполезные вещи и почему мы перенесли.
Это на самом деле шучу я убью убил. Всех если кто-то будет говорить почему вы перенесли.
Разработку в open source вот есть много причин я наверно вы дело 5 вот то что мне первое в голову пришло сейчас я их раскрою получаем. Дополнительную обратную связь очень сложные четыре слова но вкратце можно сказать так мы ну вот вы поняли что мы делаем что-то.
Совсем сбоку не связанное с продуктом но как-то пытаемся помогать и наши разработчики очень лояльные они с нами сидят. В одном здании любят нас мы постоянно общаемся и для них главное чтоб все просто! Работала и они не могут просто сказать но вы делаете какую-то фигню или там все плохо работает но не по есть некоторые смелые.
Вот но их немного и поэтому когда ты делаешь. Что-то в open source там очень много токсичных людей.
Которые могут те унизить прийти там чет написать есть много умных людей которые гораздо умнее чем ты которые могут прийти и сказать ребята вы сделали: Откровенную фигню и написать нам и мы ее переделаем например ну или как-то улучшим! И вот open source он как раз позволяет получить и ту и другую обратную!
Связь там критику но еще самое важное это опыт внедрение потому что мы написали. Какую-то штуку внедрили ее у себя и она работает и часто. Мы сталкиваемся с тем что мы что-то архитектурно неправильно написали и не можем это переделать.
И вот когда какая-то другая компания команда нашу библиотеку подключают они горят блин мы ее не можем использовать потому что тут тут и тут: Какие-то неочевидные не удобные вещи и вот через такой опыт внедрением на обратную связь мы можем изменять?
Архитектурно так наши библиотеки чтобы в будущем и внутри авито это могли легко использовать потому что сейчас у нас три продуктовых приложения которые живут в одном! Репозитории там авито домофон ты авто teka и они все как-то между собой перри использует код и то что!
Мы делаем они тоже перри используют если появится!
4 конь приложение мы не хотим с нуля все объяснять мы хотим чтобы они просто: Это подключили это работало на все так хотят вот следующая штука это увеличиваем весов комьюнити.
Тут не про то что мы хотим чтобы вы думали. Что мы боги программирования хотя это так и есть но я хочу в это верить и моя мама в общем мы хотим чтобы когда.
Мы сталкиваемся с какой-то проблемой я мог создать какой-то и шью допустим? В google трекере да то есть все знают там есть это гугловый библиотеки. Мы их используем мы хотим создать и шью и чтобы.
Они посмотрели на них и не подумали но это какие-то на ней мы это сергей боишься не знаю?
Кто это русское имя наверно какой то аутист и типа и ничего не сделает. Мы хотим чтобы у нас было реально к эта штука там на гитхабе о не будет там 100 звездочек и он потом да тут есть. То звездочек посмотрю я внимательно может это реально нужно что-то может это кому-то принесет пользу и это первый момент!
Второй момент это есть другие open source библиотеки которые.
Мы используем и мы часто общаемся там вышью пишем кому-то блин не работает твоя библиотека вот и он может?
За использовать допустим нашу и нам что-то написать его мы такие общаемся и это эта гипотеза. Но мне кажется должно помогать потому что мы смотрим на чуваков.
Который сидят где-то там в долине и там какой-нибудь google uber это мкад они там между друг другом перри используют.
Знают про какие-то внутренности и могут что-то хорошее сделать в общем и вот так же хотим вот это наверное. Самая важная штука она вчера родилась в два часа ночи в моем номере когда я делал прогон это то что почему в общем: Этим занимаемся на типа вот допустим представьте если!
Avitotech
Продуктовый разработчик чтобы отобразить список на экране писал бы свой рис айкью было бы не очень весело что под каждую штуку. Ты пишешь свой компонент какой-то и вот наши задачи они вроде всем нужны и не хочется сидеть. И писать одно и то же и не хочется чтобы все в своих командах!
Писали этот как бы бесполезный код хочется! Что появился какой-то стандарт сука эта библиотека.
Появилась не знаю будет это наша библиотека или кто-то другой скажет а у нас уже есть и мы возьмем ее начнем использовать в общем? Хочется чтобы эти проблемы не решались из раза в раз всеми хочется чтобы все было решено не очевидная: Штука что когда начинаешь работать на долгим ссор сам:
Ты понимаешь что ты аутист то есть тебе нужно общаться с людьми. Писать им какие то сообщения чтобы они тебя понимали.
Не думали что ты дурак то есть ты должен понимать в общем людей и они все должны понимать это такой навык. И 2 очень сильно не хватает мне лично особенно в письменном виде написать какое-то простое! Сообщение которое все поняли очень сложно и вот мы когда начали писать документацию поняли блина было бы прикольно научиться писать простые понятные.
Тексты чтоб ты скинул кому-то он прочитал и все понял вот и это ну и как бы для разработчиков с которыми мы работаем. Будет полезно чтобы они не писали тебе в swag не ходили к тебе ногами постоянно просто:
Почитали штуку и все было понятно вот еще важная. Вещь это технический pr наверное ни для кого ни секрет хотя это был щит на я фраза ну типа ни для кого не секрет. Что оболочка имеет значение и если бы мы там не провели.
Этот метод не сделали что-то в open source вы бы не имели представление. Что делают во вид и какие там есть разработчики какие задачи?
Они делают и вероятность того что вам было бы интересно что-то связанное с авито было. Бы меньше и хочется чтобы все понимали. Что нуво vita хорошо потому что мы не там хорошо чтобы все это знали чтобы если кто-то устал.
На текущей работе у него была в голове мысль о может быть прийти во vita или если у кого-то какая-то. Сложная задача он кретова можно типа в авито репозитории подсмотреть или спросить?
У ребят типа хочется что так было это и личная.
Мотивация тоже вот наверное все подписаны ну ладно не все я подписан в твиттере на каких-то чуваков там джейкоб вартанов там и вот ты смотришь на него. Он любую библиотеку делают все таки все пошел звездочек наставил забыл про эту библиотека никогда не используешь вот и это прикольное чувство:
Ты когда будешь умирать поймешь что блин вот это я молодец меня столько: Звезд на гитхабе я их какой-то смысл жизни хочется найти вот возможно какое-то признание общения. С людьми она дает какую-то уверенность потому что ну я там не сильно уверенный в себе человек.
И вот благодаря open source сообщению возможно я узнаю себе что-то новое и что я реально что-то делаю. Полезное вот теперь поставок мы поняли что вроде.
Open source это что полезное давайте поймем вот что по факту сейчас там есть у нас в репозитории как вы можете это. Использовать или нет вот как в принципе использует open source вот я выделю 3 стратегии первое это сохраняет. На будущее это когда ты вот видишь новую библиотеку жеки и ставишь звездочку и забываешь ну или в будущем когда-то.
По звездочкам и совью кто кстати когда то вот у него есть гид хоп аккаунт есть звёздочки. Он когда-то просматривать все свои звездочки думаю о ни фига мне тут звездочка.
Из крутая библиотек она дается использовать и кто так делает вот я так делаю я нашел недавно стороннюю. Приложение называется менеджер звездочек на гитхабе ты можешь взять все свои звездочки и пометить их лейблами!
И у меня теперь они просто звездочки а есть типа android и тест и там типа все звездочки которые связаны с android! Тестами это очень удобно позволяет быстрее звездочки просматривать решают текущие!
Задачи но часто реально бывает супер полезно open source который нужен всем и почему-то google его не сделал допустим какая то обертка! На 3 so clear view опять тем же по-любому никто не из-под ну ладно может кто-то использует.
Голые риса веков и он сейчас очень много? Крутых библиотек они помогают очень хорошо решать продуктовые задачи.
Ты просто берешь кута библиотеку и прямо каждый день ее используешь там контекст картины там все что угодно.
Вот есть такие штуки в конкурсе и есть что-то для общего: Развития как ты понимаешь блин это что-то интересное у меня есть свободное! Время я почитаю и возможно это мне как то пригодится то есть какой-то инженерный интерес вот и теперь давайте посмотрим чё вообще.
У нас сейчас в репозитории какие из этих пунктов можно закрыть вот наш проект он такой и сложенное простой одновременно. Но я попытаюсь сделать чтобы он был простым вот не знаю может быть он на самом деле сложно вот тут ссылочка и если посмотреть верхние уровни: Вот есть там папка sap project есть три основные.
Папки по ним видно чем мы занимаемся каждый день есть папка androidtest очевидно что там все что связано. С androidtest им есть папка griddle это там все что кит оградил плагины все что нужно там для сборки что-то такое и папка! Coleman это просто папка в которой лежат какие-то.
Общие вещи и вы можете если вас какая так в верхнем время темы интересует? Просто зайти в репозитории и посмотреть что там лежит дальше!
Мы начали писать документацию она чтобы никого не обидеть возможно не очень вот но я типа не уверен. В своих навыках написание документации но если быть. Откровенным я тут максимум одну страницу написал это в основном мои коллеги по команде!
Потому что ей ну я их в первую очередь не хочу обижать что там пока так себе но документация есть и вот. На нее ссылка тоже есть и вы можете прям заходить читать чё там есть тут можно? Даже контакт as нажать вот но это пока не самая замечательная самое замечательное что есть публичный.
Телеграм-канал в котором мы все есть и там уже девяносто восемь человек на вчерашний вечер было и вот все что в нашем. Этом репозитории есть можно там обсуждать нужно зайти на git хоп чё то там не понял пришел в канал спросил. Что то че то же документации не понял пришел туда спросил и мы там всегда отвечаем у тех у кого включены уведомления в телеграме.
Из нас еще очень важная вещь это вот как раз когда говорил что новый источник. Для принятия решений многим мне лично когда я был в команде один то есть был момент когда я работал один надо дробь.
Приложением потом у нас было двое и ты ну тебе не хватает какого-то общения там спросите кого-то совет ты не знаешь. Как принять решение в этом случае и вот наша вся вся ежедневная ежедневная разработка. Сейчас на гитхабе можно зайти в любой пол request и почитать все что мы там пишем друг другу какие замечания.
Делаем что мы отвечаем на сколько мы токсичные мужчины белые вот все это там есть и реально если у вас какой то есть сомнения в какой-то из связанных задач вы. Можете найти там для себя что то новое вот как то есть есть четыре. Основных источника и как это использовать вот в реальных проектах сейчас вот вы поняли что вот реально я пишу android с ты мне что-то.
Нужно для общего развития либо конкретную проблему решить что сейчас можно вот пока можно сделать три вещи первое: Это написать в телеграм и сказать что блин. Я хочу вот эту штуку сделать но я не понимаю как ее подключить и мы поможем и сразу будем стараться поменять.
Документацию чтобы это было доступно без нашего взаимодействия если это технически невозможно потому. Что не все наши то есть есть реально библиотека ты и можешь подключить но она.
Может не заработать потому что там что-то. Не так вот потому что может быть завязка на авито или еще что-то если вы с таким столкнетесь вы тоже можете? Написать и мы это исправим в крайнем случае можно for гнуть и ну там скопировать код и просто начать свою ветку почему.
В крайнем случае для этого у меня есть притча в общем я работал в тиньков? И у нас там была такая ситуация что там сейчас больше десяти продуктовых приложений и как-то в одном из них понадобился чат вот но его написали потом чат. Понадобился во втором приложение и ребята приходят к тем и горит нам нужен чат но вы можете его скопировать там переиспользовать его не получится.
А потом мы сделаем общий чат ну хорошо появилось?
2 chat а потом в 3 команде понадобился чат они такие приходят. Посмотрите есть чат номер один там такой функционал есть чат номер два там другой функционал.
Но вы в принципе можете какой-то из них за использовать так появился третий! Чат вот потом четвертая команда захотела чат она пришла такая блин что то мнение первый. Ни второй не 3 не нравится напишу 4 с нуля так появился 4 чат и в какой-то.
Момент ход такой блендер на 4 chateau это уже достаточно давайте! Сделаем общий и вы делась отдельная команда и начала писать 5 чат но который. Должен быть универсальный вот и потом я уже ушел я не знаю там теперь 14 до сих пор из 5-ти больше:
Но вот это про то что for кати копировать вы можете но наверное. Нет смысла поддерживать один и тот же код мы реально хотим сделать хорошо хотим отзывчивыми быть там помогать делать реально.
Чтобы то переспали за валось чтобы не приходилось делать 5 чатов вот и вот в будущем да мы хотим сделать так чтобы любая наша зависимость просто подключалась если. Вам нужно и работала ну щас там это не все зависимости вот как писать нам в телеграм-канал я осознанно:
Он нет я вру я не осознавал но ребята мне сказали что наверное сложно просто зайти в телеграм-канал учет написать все там будут стесняться. Или не понимать можно ли это спросить и я написал. 3 шаблона которых я вижу как можно просто:
Начать и у тебя вот есть конкретная проблема утечки: Это нестабильный тесты ты просто заходишь к нам в канала. Пишешь блины как в работе с нестабильными тестами вот кто-то может посмотреть в наш репозитории.
Такой блин ничего не понял что это что то вообще решает просто заходишь это за бесполезная штука я вообще.
Ничего не понимаю что вы с этим делаете вообще и мы тоже расскажем потому что мы как бы как я вам говорил в начале. Еще сами не осознаем насколько мы полезны и доказывая!
Другим и себе одновременно мы как бы будем понимать точно в чем нашу пользу вот может быть вы захотели нашли нужную!
Там библиотеку захотели ее все подключить но не поняли и вот вы можете спросить а как эту библиотеку. Переиспользовать потому что мне не получается и мы тоже поможем в общем на самом деле просто можете написать! Все что угодно можете написать куку там всем привет.
В этом чате там все что угодно мы максимально без комплексные вот это непонятный слайд я не знаю почему он здесь:
Вот и вот ссылки до 3 основные ссылки это наш репозиторий на гитхабе наша документации наш чат наверно ему презентацию. По шарим поэтому можно будет легко все сделать и да спасибо.
Всем и сейчас я покажу табло за которое мы голосовали и как обещал. Я не знаю сколько время есть когда есть вот как обещал: До из по этим вопросам которые там в топе чего-нибудь еще добавлю а вообще вот в течение дня и в течение секции:
Будем их обсуждать и все будет хорошо пока к сереже.
Счету у нас доклад на не закончится во время но вот ребята будут стоять там в холле где кофе-брейк а там есть. Доска на которой написан android архитектор ребята. Будет там можно будет задавать им вопросы течение всего дня проблемы своей файл но сейчас все будет хорошо об ты главное.
Знаешь как твоя фамилия на латинице моя.
И номер так давайте посмотрим что у нас получилось а вот топ получилась следующая хочу научиться использовать. Griddle в нашем проекте очень много во-первых нами написанных городов модулей: И вы можете как бы реально не только попытаться что то используйте.
Прям задавать у нас печать все вопросы про градов мы максимально уже много с ним работаем очень много! Много всего знаем и готовы это рассказывать можем даже в документацию это вынести наверное! Если это актуально прям вообще на изи долго собирается проект во вид а сейчас где-то 300 модулей?
Вот в нашей инфраструктуры где-то 60 модулей был этот слайд но почему-то его не стала. Его удалил вот и у нас вот есть женя.
Кривобоков сегодня он там со сборкой разбирался. И в хвост и гриву там в общем я не знаю там все вещи которые с ней можно оптимизировал и вот он может рассказать?
Очень много поэтому тоже кого беспокоит сборка мы тоже можем помочь блин:
Это очевидный ответ и даю сложно писать тесты мы научим вас писать. Тесты вы хочете автоматизировать released мы дадим вам это ну в общем вы поняли да что-то не очень получается.
Информативно подходить да просто просто подходите да сейчас. Я посмотрю может там есть свободный в форме queen дает.
Два вопроса в звездочки как понять когда разбить приложение на модуле я могу такую но мы кстати сегодня за кофе общались? Что было бы прикольно написать серию статей про много-. Модульность вообще зачем это командам когда это нужно и вот этот вопрос это подсвечивает вот разбивать приложение на модуле это.
Примерно как сделать два класса или 1 класс и у тебя все функции методы. В одном классе вот это примерно про тоже мне кажется то есть когда ты хочешь какую-то: Штуку переиспользовать в нескольких местах ну ты выносишь.
Ci cd
Я в модуле как единый функционал и это первый кейс второй кейс все мы зависим от griddle а возможно. Когда-то будем зависеть от большого и они пропагандируют просто модули чтобы быстрее собирался проект поэтому второй сценарий использовать.
Модули если у тебя большой большой проект и он медленно. Собирается и сейчас в сети есть доклады где ребята рассказывают как много- модность влияет.
На сборку вот наверное это основные до сценария звездочки в git хоп решают ну наверное что-то!
Решают вот просто в кито хобби на звездочке завязаны такая механика как типа про молот библиотеки то есть если твоя библиотека? Набирает звездочки и и выдают в сад жесты по поиску и поэтому звездочки. Помогают на начальном этапе как минимум что кто-то.
Случайно тебя на гитхабе найдет вот там году вышел в топ гарри дал не задрал до griddle наверное я отвечу так что если сравнить разработку типа.
Связано с крылом и разработку связаны с андроидом мне больше нравится делать плагины чем activity и фрагменты. Я бы так назвал что этот мир он как бы больной но вот это вот activity oncreate тоже надоедает верхней вопрос пересказы.
Как ты такой же как ты пришел к успеху конкретном: Если это успех то конкретно моя история такая.
Что моя история я много работал наверное. У меня болит спина зрение упало поэтому.
Я бы задумался на вашем есть так и там внизу. И кстати тебе надо будет из этого выбрать лучший вопрос да это правда что лучше всего использовать?
Одно активности все стали фрагмент я не знаю ну и типа я и так и так делал мне нравится наверное работать.
С одной activity но это вводит ограничение я знаю я знаете против попыток вывести. Какое-то правило и пользоваться им не думая. Потому что это скучно то есть вы такие для себя открыли что вот подход.
Какой-то ну где 1 1 activity и много фрагментов он работает он классный и вот надо так все делать итак. Все будет хорошо но так просто скучно вот иногда просто хочется!
Подумать блин а вот что если по-другому сделать и поэтому я всегда наверно. За то чтобы в разных проектах пробовать разные всегда переосмысливать свои опыты и тогда наверное у вас появится какое-то.
Свое мнение и вы может захотите вы поймете что не то не то неудобно и напишите? Свою библиотеку и выложите open source вот объект рик блин насколько я понимаю это немного про разное но мы используем раб электрика тесты. Я не помню используем ли мы power мог ну наверно тоже используем в общем раньше раба:
Лек track еще года два-три назад был очень неудобным постоянно ломался. Сейчас я насколько знаю его google поддерживает.
И у нас с ним вроде никаких проблем. Нет поэтому рыба лек так это хорошо powermac это скорее индикатор того что у вас что то не так в коде и вы делаете.
Что-то не так или поэтому если вам что-то надо протестировать и без power мог никак то можно его использовать а если подумать зачем: Тут вообще power мог то лучше но это переписать так чтоб он не понадобился вот я думаю теперь надо выбрать. Там и там еще вопрос вот почему форк и принимаете ли вы ниже!
Почему форк вот кстати да что у нас со стороны мемберами у нас сейчас это тоже! В процессе решения у нас большой проект и мы его собираем сейчас на нашем себя и внутри авито и поэтому.
Если кто-то создаст п р то он может внести какой-то код который запустится внутри vito и он будет можете что-то. Там не secu на сделать поэтому пока мы не принимаем пол request: И и думаем как сделать так ну типа в общем купить себе свой сервер который будет не внутри:
Авито чтобы было еще проще и все могли даже кантри beauty но пока у нас нет пользователей создавая это маловероятно? Что кто придет такой сейчас я вам напишу пацаны кода вот поэтому мы надеемся?
Это никого не оттолкнёт но если кого-то отталкивает тоже пишите мы ускорим этот.
Процесс но лишь у нас как раз есть время на последний вопрос который там внизу появился и на этом закончим кстати остальные доклады. Будем принимать вопросы в микрофон и мы дарим за лучший вопрос банда рак поэтому. Ну давайте вопросы я тут сломал всем систему послушать голоса людей про проблемы с доставкой и выбирай лучше там понеслась то все в общем.
Давайте два вопроса вот эти просто уже обсудим там не затягивать. Я не буду ничего выбирать вот тут лайки есть лайки все сказали?
Вот бы на него имя кто задал этот вопрос об держи уже все времени нету на сейчас будет менять.
Следующий докладчик подходите к сергею издавайте другим докладчику можно будет задать. Вопрос все всем спасибо мы буквально нам надо 5 минут. Чтобы переключить на следующего докладчика далеко не уходите скоро продолжим да и давайте еще а ну сервис этап и собственно.
Следующий так представьтесь пожалуйста это наш коллега из нижнего. Новгорода из-за компаний мира вот я не буду про доклад никаких подробностей рассказывать вот поприветствуем андрея. Привет меня слышно отлично меня зовут андрей томлинсон как уже сказали я работаю в мера занимаюсь разработкой приложений под android сегодня.
Мы с вами будем говорить о motion way out о том как он может вам облегчить жизнь при разработке. Анимации интерфейсов будет много анимаций но прежде чем начнем давайте небольшой опрос:
Кто здесь вообще знает что такое моушен way out меньше. Но и на а кто уже пробовал его в каких-то примерах. Использовать там хотя бы в тестовых как-то потрогали в реальных приложениях вот он энтузиаст.
И который не боится альфа и бета версии отлично ну в целом мой доклад как раз больше.
Будет полезен тем кто что-то знает о муж но я вот что-то уже пробовал но не знает или не пробовал как но не никогда.
Не делал реальные интерфейсы какие-то и может быть даже не понимает как его полезно.
Применить как например у меня было когда первый раз увидел этот инструмент и но все остальные я думаю тоже найдут.
Что-то полезное чтобы вы понимали где нужно проснуться коротко сегодняшний: План сначала базовой информации для тех кто совсем не в курсе потом посмотрим как работать с motion сценами:
Выберем наиболее подходящий нам вариант и будем его использовать сегодня потом основная часть где мы будем создавать. Реальные интерфейс и поэтапно добавляю какие-то опции аргументы усложняя: Наши вещи но в конце если останется время еще дополнительные фишки.
Будут и пара идей для дизайна ну конечно плюсы и минусы и решим с вами где все-таки. Стоит применять этот инструмент а где он избыточный что же такое мощной?
Out google его анонсировал впервые в 2017 году но до сих пор он еще находится в бета-версии в целом можно сказать что. Основные функции у него уже стабильные ну конечно это еще не релизный вариант что вообще google хотел добиться. Создавая этот новый инструмент неужели нам мало было инструментов android из анимации кто делал анимации представляет какой там зоопарк иногда даже сложно выбрать:
Первое что он решил это вынести все это настройка. Анимации skoda в конфигурационные файлы но это не только?
Чтобы вам просто поменьше кода писать это еще потому что они хотели прекратить motion & decker туда весь графический редактор который должен работать конфигурациями второй момент что. Действительно инструментов куча некоторые из них выполняют одни и те же задачи не совсем понятно даже какой применить поэтому они хотели. Создать некий такой современный инструмент объединяющий множество функционала?
До заменить layout transition транзишен менеджер частично координатор layout в чем-то покрыть ну и обычной property анимации: Объект анимации вот это все тоже покрыть этим инструментом это все хорошо кроме того.
Что заменить старое они конечно решили надо добавить.
И новое они внедрили туда возможность добавления ключевых кадров в процессе анимации.
Чего раньше не было управление прогрессом анимации это что можно привязать жесты непосредственно к управлению вашей анимации то есть какие-то клики scroll и слайд. Это такая базовая информация с ли простыми словами рассказывать о том что такое мышь ну я вот. Пару слов о состоянии редактора на сегодня он в!
Релизный android студии недоступен но в канале был девы уже можете пощупать кое-как. Его в принципе базовый функционал работает то есть какие-то state и вы там можете создать!
Да с переходами между ними элементы расположить можете но вот если захотите что-то по-сложнее поработать с ключевыми кадрами то тут уже у вас будут проблемы. Пока вот эта часть очень нестабильно работает но мы надеемся.
И верим google нас порадует поэтому пока работаем по старинке в классическом варианте с xml никами самый ушлый. А вот это не что иное как просто ли я вот наследник constraint а и в нем никакой анимации но не с точки.
Зрения вот xml и не происходит вы просто располагаете там view также как располагали их constraintlayout сюда важно чтобы в росту view. Были указаны орешнике насчет привязок и расположение это на самом деле по на ваш выбор вы можете?
Как в самому ялте это делать так и в motion сцене а вот motion.
Сцена это такая важная часть это по сути непосредственной спутник motion layout а где происходит вся магия.
Вся настройка анимации именно там вы будете описывать состоянии свои переходы привязывать жесты то есть вот анимация именно там именно?
С этим файлом мы в основном сегодня мы будем работать то есть точки зрения кода мощного. Я вот мало чем отличается да просто указываете? Ссылайтесь на свой машин сцен касательно motion сцен в принципе есть два основных?
Варианта на данный момент вот без редактора: Как с ними работать первый классический им но он потом впоследствии будет задействован мощная.
Гитаре в чем тут суть по сути вы создаете переход где указываете хочу из одного состояния? Перейти в другое эти состояния вы прописываете прямо в этом же motion сцене с помощью constraint сетов constraints эта это некие такие наборы свойств. Line их для ваших фивах где расположена какие размеры куда привязана после!
Такой слепок с вашего йавата ну немножко в измененном виде то есть набор свой сделаете для начала. Набор свойств для конечной позиции и ваш транзишен сам прочитает как надо их перенести если сможет конечно что здесь на что надо обратить.
Внимание вот именно в этом способе помимо обычных свойств и злая а то вы можете еще добавлять кастомные атрибуты? Подробно них я расскажу позже но на текущий:
Момент важно понять что эти атрибуты вы не сможете написать просто выявить это именно фишка вот такого способа. Создания motion сцена что тут можно добавлять эти кастомные атрибуты позже увидим еще один важный нюанс при создании сайтов.
Таким образом если вы допустим motion выявить уже разметили всю вашу сцену и разрисовали потом просто для этого в.ю. решили один параметр здесь изменить. Перетрется все что вы написали для этого в you в motion выявить это надо учитывать.
Когда вы это делаете и чтобы этого частично избежать google предлагает вот такие группы тегов где вы можете менять не все свойства: Перетирать а перетирать только группу например хотите изменить только виде билете указывайте только группу визе без properties этом указываете визе бал также полезно может. Быть свойства дерев constraint вам где вы указываете!
Другой constrain сет какой-то описанной из него все свойства копируется и вы меняете только? Он большую часть которую надо изменить когда. Сцены не сильно отличаются касательно этого варианта подытожим ну главный плюс это кастом атрибуты.
Что можно использовать конечных сценах минус я думаю вы уже могли предчувствовать. Что это совершенно не наглядно то есть представьте.
Что вас какой-то сложный layout и вы его чисто в коде вот эти constraints все привязки. Делаете и сложно будет такую красивую какую то анимацию таким образом написать потому что пока не от редактора! Чтобы этого избежать можно использовать второй вариант пока выглядит все так же но только в constraint сетах вы используете непосредственно.
Layout и не амиду ну да стартовых конечных! Все так вы используете не constraints этого я у то пишите их обычным способом с графическим редактором!
Все удобно накидываете минус больше файлов но как минимум один. Можно заменить поскольку а можешь ну я вот это constraint. Уже чуть лучше стало главный плюс конечно наглядность вы делаете это состояние так как вы делали до этого все свои разметки основной минус?
Avitotech on tour
Отсутствие возможности кастом атрибута подложить но это решается и мы в следующих примерах с вами.
Увидим как транзисторов есть и другие свойства но документацию сейчас мы не будем перечитывать наша основная задача на сегодня это ключевые кадры и работа. С жестами на этим мы и будем заниматься сейчас основной части когда будем разрабатывать интерфейсы давайте начнем с первого? Примера это такой типичный вариант с лопающегося ту борода на какого-нибудь profile screen а вот по сути.
Когда мы как бы выглядит не очень сложно идея сразу понятно но если вспомнить например что надо было сделать в классическом коллапсу у бори. Чтобы добиться такой анимации или более сложный где нелинейно происходит изменение то сейчас мы с вами увидим насколько? Здесь меньше усилий вы потратите прежде чем создавать вообще любую анимацию.
Нужно понять что происходит на экране здесь. Схема в общем то стандартная мы должны определить начальное положение конечная каким образом он осуществляется все изменения.
Между ними и третье это то что нам нужно понять. Что провоцирует нашу анимацию какой-то жест клик там может быть на какой-то кнопки и так далее. Вот и давайте разберем видно что изначально у нас есть цветная шапка то есть развернется у нас есть цветная шапка аватарка какой-то.
Тайтл все это начинает нас схлопывается вверх уходить исчезать а сверху в это время проявляется постепенно тулбар вместе с новым тайтлом: Также еще можно заметить что меняет цвет кнопка бэк но и все это провоцируется с кровом листа давайте начнем эти крайние.
Состояния мы рисуем здесь вот основная задача корректно от рисовать вот эти вы я вот и чтобы transition автоматически! Правильно все про анимировала соответственно если вы знаете что ваша вы знаете что ваша шапка должна уползать.
Вверх то вы ее вверх суда и перри привязываете. Вот если знаете что элементы должны сейчас но делайте.
Их невидимыми в конечном состоянии менять меняться цвет меня эти цвет и так далее то есть все это прочитали продумали и пробуем привязать транзишен. Посмотрим что получится из коробки транзишен написали сказали хочу чтобы это работало.
По жесту свайп вверх и смотрим что получается с пока все нормально но вы можете заметить что сейчас будет эффект. Для лист будет скроле цао шапка не будет двигаться или наоборот лист не скроется.
Шапка резко схлопывается то есть что-то работает не правильно на мой взгляд. Это на самом деле просто бага текущей версии бета но как это поправить на данный момент нужно добавить?
Аргумент touch pen крайне как вы сейчас!
Увидите анимацию вас поменялось все стало работать практически как вы ожидаете в чем суть стать н крайне. Согласно документации этот параметр меняет вашу анимацию и скорости выполнения: Таким образом как будто бы вытянули бы за один из краев указанного view то есть в touching рейде вы указывайте usa которые.
Типа вы тянете таченко сайт его сторону здесь сторона не указано потому что топ здесь сработал. По умолчанию касательно вот это view это не значит. Что ваш touch будет выглядеть так как будто вы вот прям действительно коснулись там верхней стороны листа и начали тянуть вас работает.
Любом месте но именно по расчету анимации по скорости. И заполнения относительно вашего движения вот этот параметр будет меняться но здесь: Он использован большей части чтобы просто починить вот этот!
Косяк со со сколом теперь ничего никуда не пропадает и все скроется по жесту как и планировалось давайте проанализируем: Что ж у нас сработала из коробки вы помните. Что мы просто накидали начальный конечный vaio утки 0 itransition 0 не писали видно что позиции.
Элементов сработают по умолчанию constrain привязки изменится размер элементов тоже будут. Меняться прозрачность и вези билете если вы хотите чтобы объект просто фрейдом и сейчас используйте invisible если чтобы схлопнулся: По скиллу ее сейчас в своей дам то голову.
Это то что получилось сама давайте посмотрим что не сработало самого видно что кнопка: Бег не перекрашивается хотя мы tint накидывали а еще видно вот здесь такой сумбур из объектов. Сразу два тайтла у нас там аватарка?
Просвечивает то как-то стрёмно и все выглядит мы хотим лучше так как у сына маминой подруги чтобы было попробуем: Добиться этого начнем с простого покрасим кнопку здесь как раз и понадобится те самые кастомные атрибуты про которые я сказал.
В чем суть очень похожи на объект аниматор мы должны мы используем какой-то параметр да и просто присваиваем? Ему значения для этого параметра должен быть написан сидр у этого в работает точно также как субъект аниматором в нашем случае ковер фильтры покрасят.
Иконки справа вы увидите какие еще аргументы можно использовать какие типы значения можно здесь использовать помимо этого вы можете покрасить например background или текст.
Кавер вот текст коварном пригодится в следующих примерах обратите на это внимание?
Что произойдет а также так давайте посмотрим внимательнее что здесь не так не так здесь то что мы с вами это все написано для constrain.
Сетов а мы выбрали с вами другой способ создания motion сцен без constrain сетов он просто лейаута! Рисуем и аргументы атрибуты кастомно использовать ним нельзя но нам могут помочь ключевые кадры изначально. Они как бы сделаны чтобы менять какие-то промежуточные состояния анимации но никто не мешает вам использовать их на начальном.
Конечном кадре пожалуйста делайте крайне кадры бэк батон и красите вашу кнопку. Смотрим что получилось пойдет цвет будет меняться отлично при этом заметьте вам не надо писать никакие кастомные были вейперы чтобы там избежать! Каких-то паразитных цветов при изменении цвета так же будет и с цветными.
Кнопками то есть все сработает из коробки но вот эту часть мы как бы еще с вами не поправили: То здесь видно что анимация не синхронизировано все происходит равномерно одновременно и накладывается друг на друга мы хотим сделать круто. Чтобы сначала скрылась одно потом постепенно проявилась другое как был изначально примере и тут тоже пригодятся ключевые кадры если простыми:
Словами наша задача использовать их таким образом чтобы скрыть какой-то элемент чуть раньше до какой-то там под задержать например. Сделать прозрачность у тайтла на восемьдесят пятом кадре 0 чтобы он скрылся пораньше либо аватарку за скелетону ляпом на шестидесятом?
Кадре прозрачность тоже поменять вас мог возникнуть. Вопрос а почему здесь какие появились альфа или скейлы и до этого я говорил что visibility просто меняете на invisible вагоны все это сработает из коробки но google.
Почему то решил что вот в ключевых кадрах не будет.
Работать везде белить ее надо для этого применять! Альфу и скейлы и тогда все получится то что вы ожидаете.
Здесь сейчас вы увидите что ничто не накладывается все складывается. По очереди схлопывается помедленнее будет вот то есть аватарку.
Уже схлопнулась до появления тулбара текст тоже туда зашел под тулбар ничего не уложилось в принципе можно лучше но не сегодня сегодня. У нас на это нет времени касательно этого примера еще один интересный. Аргумент поведение интервал из be he wears скардино торгуя у то наверное многие из вас знают что такое ну вдруг для тех кто не слышал!
Или не видел это когда у вас есть slope вычистил. Бар вы пролистали вверх но при скроле вниз вас шапка вылезает сразу. По первому жесту они дожидается возврата к 0 этому что здесь важно то что этот аргумент в принципе в каком-то.
Виде появился мощного я у тебя значит google все-таки. Намерен частично заменять координатор layout этими анимациями раз он его сюда добавил подытожим в первую часть мы увидели что муж но я вот умеет анимировать. Из коробки сам как привязать жесты как использовать кастом атрибуты в частности для работы с цветом зачем.
Ключевые кадры и вот центр rose by heather тоже посмотрели пример давайте: Глянем второй пример он специально мало чем отличается от первого чтобы сфокусировать ваше внимание вот на этой части с тайтлом то что. Это тоже очень часто кейс для многих интерфейсов где нужно переместить.
Тайтл изменить его размер и цвет на вот этим мы сейчас и займёмся пробуем нарисовать наше состояние? Видно что мы просто перед привязали тайтовым!
Изменили его размер и текст и попробуем запустить поглядеть что из коробки выполняться видно что текст за ними. Рвался на плане позиция до позиция сани мира валось но цвет и размер не поменялись касательно цвета:
Я говорил то же самое с кастом атрибутами просто их используем и все у вас отлично перекраситься. А вот с размером сейчас разберемся подробнее в чем тут суть текст says the same и 1 мысль что вам может прийти:
В голову также использовать кастом атрибуты чтобы поменять. Текст айс но если вы это сделаете что вы увидите на этот задержка будет заметно или нет но на реальном приложении. Отлично видно что анимация выполняется с такими рывками says итеративно.
Выставляется и это выглядеть не очень красиво анимация или органа более того прямо на том же билде просто перри открыв activity вы можете получить! Вот такую фигню у вас просто текст будет пропадать обрезаться.
Это связано с чем при изменении размера контейнер тексты. Не меняется и google android при рендеринге просто может решить. В определенный момент увеличив текст об я не упираюсь в этот контейнер я переносится перенесу на новую строчку.
И все это выглядит конечно но недопустимо для какого-то продакшен варианта что открыл работает не открыл не работает? Как-то странно более того в этом способе есть еще один интересный глюк если вы просто! Всп размеры перенесете из layout а вам уж на сцену они у вас будут отображаться гораздо больше чем связано тоже неясно наша задача решить проблему!
С плавностью анимации попробуем изменить скейл нашего view как мы видим это сработает анимации стала более плавно и никаких обрезаний текста. Здесь не происходит минорные замечания что нужно не забыть уменьшенный скейлы в последнем кадре прописать иначе вас к дефолту? Размеру все начнет растягиваться а касательно как бы в минусах этого.
Варианта на самом деле этот вариант тоже не идеальный потому что контейнер у него тоже не меняет свои размеры и ваш объект просто. Скейлится внутри если у вас центровая привязка как у меня здесь вас останутся по денги по бокам и чтобы корректно привязаться там каким-то левым. Объектом к бартон у вам придётся поиграть с морщинами этого ну такой немножко костыль но тем не менее по визуальной составляющей.
Работает как бы так как мы и хотели знаю может здесь кто то знает какой то еще способ как размер именно текста за анимировать но я очень тоже. Не знаю что найдете скажется давайте еще немножко углубимся в такое война и задротство персики. Pixel perfect слева вы видите то как у нас действует анимации.
Сейчас да она на самом деле она равномерно. Выполняется линейно но хотим мы так как справа чтобы она чуть быстрее заползал автоломбарда пока это думает если с точки зрения! Анимации говорит что здесь мы хотим получить чтобы наш объект какой-то завершил:
Свою анимацию чуть быстрее 100 кадра чуть быстрее конца анимации на этим мы будем заниматься: На чтобы это сделать надо понимать что можешь в ялте вы можете менять координаты объектов! Не только в абсолютных величинах но и в относительных.
Для этого используются такие координатные системы координат всех у всех у них оси измеряются от нуля до единицы грн против.
Привязано к вашему муж но я вот у как к базовому view дельта располагается в диапазоне от начального положения вашего. Объекта до конечного и посвятив почти как дельта: Только у него усик соединяет начальное и конечное положение вот как бы понимаю как они располагаются!
Вы можете для разных кейсов по-разному менять свои координаты в относительных величинах если посмотрите на посылать их внимательно? Вы увидите что это почти наш случай только там кнопка в другую сторону текст в другую сторону уезжает! И все что нужно сделать это добиться чтобы наш объект.
Уехал в единицу по иксу не в сотом кадре в каком-нибудь 85 что мы реализуем в ключевых кадрах и получается именно тот эффект которого мы добивались.
Из примера два мы поняли каким образом можно анимировать текст размер?
Текста как изменить относительное положение объектов и для чего вообще нужны вот эти системы. Координат как их применить давайте посмотрим на наш следующий пример это что-то вроде интерфейса youtube и а где есть scroll листы и такой виджет: Который будет раскрываться сейчас на весь экран по нашим удача на картинка в картинке.
Также анализируем что здесь должно происходить нижняя.
Панель должна скрыться вверх а вот этот виджет просто растягивается на весь экран и почти все так просто. Только тут есть еще один нюанс мы хотим добиться того что вот этот во первых чтобы все строилось и сзади до независимое.
Что вот этот имидж раскрывался сначала по ширине а потом бы высоте неравномерно сначала сторону но давайте все поэтапно сначала рисуем такие же разметки. С учетом того куда у нас должно растягивается и на это дает нам гарантию что google сделает все сам за нас все здесь прорисовали.
Сдвинули кинули так смотрим принципе в далеком приближение то что мы и хотели может даже невооруженным взглядом и не видно что не так при этом опять обращаю? Внимание что мы просто написали два лейаута как было как стола и создали транзишен.
Между ними и просто сказали давай по свайпу его двигай чтобы у нас сзади scroll все наши элементы:
Работали независимо нам надо ограничить регион в котором действует на штат для анимации для этого используется? Используется touch 3g найди параметр и мы указываем только. Вот этот топовый контейнер с имиджем да чтоб только там работал так это и дает.
Нужный эффект также вы можете заметить ну покрайней мере в реальном приложении. Вы бы это заметили что когда вы отпустите сдачу. Вас так вязкое медленно завершается анимация этого дефолта vaio скорость в машину ялте если вдруг хотите ускорить сделать более динамично:
Уменьшаете параметр макс что тогда все будет речи просто тут на проекторе с задержкой на самом деле все гораздо быстрее. Это то что у нас получилось слева.
То что у нас получилось сейчас справа то что мы хотим получить здесь как раз показана разница между равномерным раскрытием картинки по всем параметрам. И раскрытием сначала в ширину потом высоту если разложить на свойства объектов то видно здесь. Что что нам нас сделать каком-то там двадцатому кадру ширину почти до максимума растянуть объекта.
Android development
Попробуем создать такой ключевой кадр где на двадцатом. Кадре мы ширину в процентах делаем 85 что из этого выходит ширина действительно? Увеличивается вот только центр как двигался равномерно из левой точке в центральную верхнюю так и двигается.
И соответственно шимича просто вылезает из контейнера это не то что мы хотим чтобы это исправить надо подвинуть центр имиджа вместе: С расширением ширины добавляем сдвиг по иксу здесь в дельта координатах. Это работает кстати и получим ожидаемый эффект сейчас получил получили посмотрели как завершить о и изменить.
Скорость анимации после отпускания то чтобы все у нас более отзывчиво было и как работать с шириной объекта еще и компенсировать. Его передвижением центра 4 пример чуть более искусственной но на самом. Деле он вытекает из предыдущего если внимательно посмотреть у вас мог возникнуть вопрос а что если мы хотим сделать этот раскрывающийся.
На полный экран виджет к отдельным фрагментам что там свою какую-то логику прописать до соответственно при изменении объектов из нашего. Основного класса то есть вот если разбить здесь как у нас есть activities. Motion ну я в этом где раскрывается этот контейнер.
Да там смысл тот же раскрывается какой-то контейнер а внутри! На самом деле лежит фрагмент покажется фрагмент 2 видно что вместе с вашим движением.
Внутри 2 фрагмента происходит свой анимация подчиняющуюся тоже ваше мужество но здесь помимо этого еще и есть и смена фрагмента это как дополнительная фишка давайте. Подряд разберемся сначала с передачи прогресса в другие виджеты тут нам впервые понадобится написать. Код можно сидеть в любом ушной аута прогресс в диапазоне от нуля до единицы также если что можно и стартануть любую анимацию.
К любому сайту но вот нам прогресс. Важнее здесь это так для общей информации можно задать listener где все стоит и будут.
Слушаться и так же есть вариант с триггером.
О нем я чуть подробнее скажу важно что мы можем слушать стоит и для многих лидеров кстати если кто. Не знал есть адаптеры которые позволяют в переопределять не все калмыки.
А только нужные чтобы пустых восходе не было удобно. Использовать по поводу передачи прогресса что мы делаем слушаем текущий прогресс получаем доступ к другому ушной аута и просто с этим туда как вы будете получать в другом фрагменте это.
На ваш вкус можете там через интерфейс посетить можете через какой de guitare взять.
Его не важно по сути здесь основная задача именно то что в тот нуж но я вот посадить прогресс из нашего motion way out тоже. Самое можно сделать не обязательно для разных фрагментов это может быть просто.
Какая-то более глубокая иерархия вашим одном вилл потому? Что можешь ну я вот он действует только на прямых чертов? С плоской иерархия если вы вдруг по каким-то причинам сделали вложенную.
То автоматом не сработает а это вам поможет все синхронизировать по поводу триггеров. Так они выглядят в xml по сути триггер это некая функция которая сработает на определенном ключевом кадре по умолчанию? В таком виде они заточены на вызывание.
Функцию views в чем здесь соль в.ю. эта функция вызывается когда при проходят анимация вот этот ключевой: Кадр ульев эти функции должны быть прописаны в самом классе и более того. Они еще должны быть без аргументов на самом деле во всех примерах.
В интернете пока только скрывает floating action bottom с помощью этого этой вещи и честно говоря салюту. Даже и не знаю для чего еще это может быть полезно вот именно в таком виде даже если там extension напишите для везде билете.
Но вот пока это максимум что мне пришло в голову то есть такая вариация ну сомнительная но это не значит что триггер? Плохое моего выбрасываем я покажу как мы будем его использовать только перед этим пару слов вот об этом свойстве триггер снег это свойство. Описывающая диапазон вокруг этого ключевого кадра внутри которого триггер повторно не сработает это сделано чтобы избежать частых?
Срабатывание триггера когда пользователь будет вас в районе вашего ключевого кадра пальцем дробится. Слишком много тоже может пригодиться а теперь!
Как триггеры будут использованы у нас у нас в лице мире есть кал бег на триггер мы можем посмотреть. Прямо его айдишник то есть понять какой триггер сработал увидеть в какую сторону:
Происходит анимация и выполнить нужное действие в нашем случае мы показывали делали смену фрагментов на это может быть абсолютно любая функция. Которая вам понадобилось в коде каком-то моменте вашей анимации под конец этой части небольшая дополнительная фишка не обязательно использовать только один транзишен вашей motion сцене их может. Быть множество в частности они могут быть еще и связаны между собой это могут быть части 1 одного жеста вот например слева выше?
Ведь выдвигается панель она может зафиксироваться в промежуточном состоянии стоит 2 и дальше пройти в третье: Состояние полностью раскрыта и это делается вот через два таких транзишен а с одним и тем же жестом просто плавные.
Переходы в отличие от ключевого кадра в чем разница в чем ключевой нельзя использовать. В ключевом кадре вы не можете остановить анимацию когда отпустили палец это только в фиксированных стоит их может происходить не обязательно чтобы: Ваши транзишен и были частью одного жеста вы можете 2 transitions сделать просто автоматическим как в примере из баду туториала.
Где они свои поля карточки не доводят свои понты состояния? Два и после этого просто вас карточка автоматической. Анимации улетает за экран но они презентации будет пошарь иной.
Вы сможете подробнее это посмотреть там будут еще примеры того по 4 части смотрели как поработать из кода для чего нужны ли scenery:
Как их использовать как передать прогресс в другой кувшин way out для чего нужны триггеры и как их применить. Например в коде и пару слов о нескольких транзишен угол и вот этот слайд на последок я добавил чтобы просто. Дать вам еще каких-то идей для того как можно делать анимации интерфейсов с использованием мощного я вот тут видите.
Вариации та же картинка в картинке какие-то collapse toolbar и различные причем вот здесь. Отмечу вот эта анимация в шапке не знаешь притормаживает она реализована тоже муж но я у там это не приготовленная от дизайнера анимация. А просто вот так же из двух сцен анимированные объекты с представьте если бы вам раньше.
Дизайнер сказал я вот те не буду готовить такую анимацию.
Ты и сам нарисую выбивала далеко не? Послали а с машину java там в принципе не так и смертельно. Это то есть если только с выдержки у вас есть то пойдет сделаете бага drop.
That уже обрати внимание бак дроп это новый ей паттерн от материал материал дизайне для него нет еще компонента готового. От google но муж ну я у там спокойно.
Вы его реализуете ну и вот работа с карточками кто-то даже карусели делает. Всякие ботом шитые новейшие драйверы тоже можно еще нет примера можно ведь не только полный экран на использовать машину я вот чтобы какую-то глобальную.
Сцену анимировать никто не мешает ой там в листе вам тоже сделать с помощью. Motion ул я вот и какие там свайп ту что-то реализовать.
Давайте концу двигаться какие же положительные стороны у этого инструмента но лично я по крайней: Мере вижу на мой взгляд этот инструмент довольно прост на старте то с него легко пойти его концепция понятно будущем?
Когда будет editor у него ещё и огромная визуальная отдача будет принципе она и сейчас есть если делать вот таким способом. С не надо что-то там с цифрами какими-то. Работать куда-то перенаправлять какие-то параметры и не дай бог у вас анимации будет нелинейная вы взбесить.
Из тут смысл ясен кода меньше да это тоже хорошо качестве наш код от лишних настроек все в xml то что отлично работает ну не ответь.
Но достаточно хорошо работает автоматическая анимация между двумя сценами просто. По транзиту много чего из коробки делается сразу это шикарно.
Более того но вы можете сказать что в transition менеджера что же была сцена были но здесь это делается лучше например? Анимация цвета у вас работает без дополнительных его литров а размер текста ну хоть и не идеально но анимируется без написания собственного transition? В транзишен манджари пришлось бы руками это все писать еще из таких как бы уникальных преимуществ работы:
Жестами то что тут все сразу привязана к какому-то скролла просто расширяет на мой взгляд потенциал у этого способа. Анимации ключевые кадры выставления прогрессом это что редактор в будущем все таки появится на надеемся пока его нет можно сказать. Что это минус будем работать с сырыми конфигами действует.
На прямых челнов но это решаемо как мы видели не идеальная анимация размера текста и вот тоже немаловажный момент что инструмент. Все еще в быть и не надо как бы совсем: Уж питать иллюзии что он совсем там идеальный без без ошибок.
То есть в трекере много ошибок есть я бы сказал так вся базовая функциональность. У него работает довольно хорошо и возможно только какие-то особые аргументы либо не ожидаем и работают либо неправильно чем уже и специфические ваш.
Кейс с тем больше вероятность что вы встретите какую-то проблему но вот для тех примеров что я показал сегодня для каких-то. Еще основных уже работает довольно стабильностью то есть где то можно попробовать и в продакшен и для каких-то.
Экранов применить а теперь где применить по сути как с любым инструментом.
Не надо впадать форматов фанатизм какой то типа.
Google сказал это круто и модно давайте его пик нём везде где только можно лично.
Я бы например не стал его использовать если вы просто хотите у одного объекта какую-то одну property. Про анимировать какой-то вот мега простую анимацию такую сделать.
Либо изменив там везде белить у вас должен пройти какой-то транзишен по исчезновению! Элементов то что проще сделать через layout транзишен это который. Понимает анимейт твоя очень же своя ведь если помните или транзишен фреймворк здесь имеется!
Ввиду бегин делает транзишен где вы просто меняет свойства: Объекта он сам транзишен делает то есть где вот это проще конечно.
Лучше пока может применить старые инструменты мощная вот на мой взгляд не целится пока вы где-то enter транзишен и и шарит элемент transition то есть. Это как бы здесь тоже пока главную роль ведут главную роль занимает.
Различных фреймворк а вот где я бы стал использовать сейчас или потенциально в будущем? Это в любых переходах между двумя сценами то что раньше вы делали транзишен фреймворком. Сейчас отлично сделает сама ушной аутам более того его возможности как увидели гораздо шире потенциально вы можете там еще более.
Крутую анимацию накрутить и не сильно запариться везде где нужны свои паи scroll и тоже. Есть потенциал этого инструмента в скобках видите ей паттерна и которые связанного с этими жестами!
Диск как надо правильно понимать я не говорю что если вам нарисовали ботом щит стандартные дизайнеры давайте скорее его муж ну я у там рисовать нет так.
Делать не надо стандартный элемент используем стандартно но если. Вы видите он что он кастомизированный и какой-нибудь вот collapse toolbar чтобы или кастомизировать сложную анимацию нелинейную движением с кучей объектов. Представьте сколько времени и сил вы потратите прокидывая все вот эти вот изменения а если соответственно можно выявить вы сделаете гораздо быстрее слива.
Для вас лично проще написать на ушлый а вот чем кастомизировать вот это стандартное решение тогда подойдет ну и конечно все уникальные преимущества мужья. У то также как бы направляют вас к тому чтобы его применить для этой задачи вот это лично.
Мой такой итоговый список куда стоит куда не стоит здесь вы можете? Посмотреть какие полезные ссылки с другими примерами сверху мой сэмпл где есть текущие примеры некоторые адаптированные из вот этих и еще кое что если интересно?
Презентацию по шарит можно быть кликнуть контакты на этом все спасибо за внимание спасибо андрей мы будем мы будем принимать.
Вопросы ты запоминаешь чтобы потом выбрать лучший я постараюсь спасибо за очень интересный доклад. Как раз занимаюсь в проекте анимации меня возникла мой вопрос во первых как с производительностью. И потреблением батареи вотума уж мы вот-вот за батареи честно.
Не следил но по визуальной производительности я каких-то лагов не замечал вот в этих примерах где она свайп:
Вот эти элементы анимируются причем но я говорил. Что там есть сэмпл где в шапке много элементов было и я их баня и анимируются. Прямо сами муж ну я у там то есть визуально.
Не было замечено но тестов в специальных я не проводил спасибо там был пример с youtube лэйк? Приложения можно на него можно да конечно да вот что это за цифры магические откуда их взять от процента! Или еще справа я вижу картинку уходит за пределы боялся сначала сейчас когда анимируется давать посмотрю он не хочет нам показать вот она вышла как его глаза.
Шилась я здесь просто немножко до поленился на самом деле вот в первом примере этого нет не думаю что: Кто заметит вот здесь этого нет я здесь лучше подогнал скажем так вот цифры на самом деле.
Подбирал на глаз то есть я просто здесь.
Вот конкретно слайде я просто показал принцип что мы до какого-то: Не полного размера расширяем наш вью и двигаем его тоже не до конца смысл если разбираться в цифрах торсен:
Twice это как бы его процентная ширина от начального состояния довод его финального. То есть он финально будет вот так растянут по всей ширине и я его типа. На 80 процентов растягивая от урс яндекс.
Android разработка
Это ну как я показывал до этого. Как я показывал до этого перемещения по оси x в нужной системе координат здесь используется по умолчанию дельта. Система координат поэтому просто по иксу как бы до его финальной точки то есть дельта но у нас от начальной:
До конечной и он просто подвинулся по иксу до до середины спасибо последний вопрос извините пожалуйста: Я правильно понимаю чтобы ваш проект уже использовать мощные которые на продажу как бы:
Не на самом деле с дизайнером работали. Попытаемся моих как бы перестроить потому что у них у них есть опасения но раньше. Как всегда ничего не придумают в девелопера такие ну и долго.
И сложно мы делать не будем и пытаемся донести что сейчас вроде уже можно можно давайте придумываете но поскольку open source. Я думаю все кто работал понимает что до анимации там время доху и деньги. Доходят дай бог там где то в конце то здесь такие нюансы друзья:
Да если уже дискуссия давайте euch широкие во время значит брейка сейчас следующий вопрос нас отсюда! Привет спасибо за доклад вопрос такой у тебя тоже использовали мы ушел я вот но столкнулись с такой.
Интересной штукой что когда используешь больше трех к атрибутов он иногда падает хорошей ни разу вообще не видел: За все время работы но я работал с беты-3 из бета 4 с более ранними я не работал? Но есть возможно в каком-то особом кейси но у меня натыкались на коне делали нет нет не был the cookies именно несколько?
В одном прямо для одного возможно просто в одном у меня действительно не было столько было много разных.
Новых для разных их окей и второй вопрос вот вот этот транзишен когда есть маленький фрагмент открываешь там видосики. Можно играть чтобы прямо время раскрыть я так понимаю с видосиками это все зависит от вашего плеера то есть здесь. Просто изменяется рамки вашего контейнер если ваш плеер поддерживает вот.
Этого динамическое изменение размеров контейнера то все будет о'кей вопрос больше мне кажется ну я в интернете видел точно: Примеры где у людей видео воспроизводилось а в похожих анимациях да да да но там не совсем youtube кейс был но смысл тот же картинка в картинке. Раскрывалась я уж не знаю не помню они там их за использовали или что другое вот там то есть вопросы.
Спасибо за доклад вопрос такой поддерживается бенч и жесты пин жест нет сейчас не поддерживать из коробки. Там только клик и свайп однонаправленный жест ещё такой вопрос вот наскок вообще нормальная практика.
Привязываться к фрейм позицию то есть ну там с одинаковой скорости: Будет такой анимации проигрываться на разных девайса еще раз к композицию flame позиция. Есть там на двадцатом кадровика ширину там поменять на 20 ну как сказать это же вот ваша анимация на фиксирована от 0 до 100.
И это как бы некий процент на котором вы должны что-то изменить то есть заранее эту хореографию. Прописали с дизайнером и вы знаете точно где что должно скрыться от девайса это не зависит.
Вот там же палец двигалась разной скоростью вашего анимацию и все скрывалась? Одновременно например одевайся уже 120 держится у них там и 60 кадров в секунду 120 секунды и у них там оператор можно фреймрейтом как бы самого крана. Не связано то есть это какое-то внутреннее грузы до этого просто?
Внутренняя такая относительная шкала воспроизведение вашей анимации от начала. До конца в этом она по силам работает везде ещё вопросы есть у кого есть. Я знаю кто метит он уже вопрос интер поля tor можно подключить какой-нибудь другой?
А сейчас хороший вопрос там есть из коробки. Разные интер поля тары типа такое esit оу да вот это все это точно есть по моему был способ подключить свой честно я? Сейчас подзабыл с нтв вы просто в этом докладе интер:
Поля тары решил исключить по-моему было да да да да! Да было вы его там прямо функции прописывается в xml не очень. Удобно но это было просто прописывается вот этой математическая функция как у вас будет изменяться пожалуйста давая никаких метров порошкового.
Трансляция идет последний вопрос не туда просто снова продолжается дискуссия по этому хотя бы ее в микрофон давайте чтобы она это на первом? Ряду прогноз был можно ли использовать интер? Палят из transitions фреймворка и я не верю что прям тот же класс вы воткнете потому.
Что варю я видел как это делается в xml вы прямо там пишите условно чуть ли не математическую? Функцию который описывается ваша но сама интерполяция где какой кадр должен куда сместиться:
Да знаете если вопросов больше нет давайте поблагодарим еще раз андрея за отличный доклад и андреев кому мы отдадим! Привязываю выбор очевиден самого внимательно окай держи пожалуйста сейчас у нас будет.
Перерыв можно перекусить пообщаться ребятами из платформы нашей в в той зоне сюда возвращаемся в 4:30 продолжаем.
Доклады далеко не уходите люди в трансляции также не отключайтесь мы скоро вернемся друзья.
Продолжаем наш митап и собственно докладчик тоже и завита андрей. Данилов и кстати как и сергей хотя он работает с ним в разных командах андрей также не занимается продуктом совершенно поэтому он собственно сегодня: Расскажет нам про дизайн систему андрей давайте всем привет меня зовут андрей данилов работаю компания vitra и занимаюсь.
Дизайн системой собственно сегодня ней пойдет речь я расскажу. Чем это вообще делаем какие технологии используем схеме проблемы сталкиваемся и зачем.
Зачем это все вообще нужно но перед тем как начнем у меня вопрос! К вам как по вашему мнению чем занимается команда дизайн системы.
Или чем должна заниматься что первый поход голову дизайном картинки компоненты окей да на самом деле я просил. Целую кучу знакомых коллег и все они считают что мы либо красим? Кнопки ли бы мы вообще ничего не делаем.
Что очень далеко от истины потому что ну никто бы не стал выделять бабла на отдельную команду без каких-то.
Внятных целей а у нас эти цели есть их 2 это консистентной и управляемость что имеется ввиду консистентной этапа?
Единообразия в первую очередь система единообразие а я то есть внешнего вида иначе говоря. Всякие цвета размеры шрифты компоненты по приложению должен выглядеть одинаково и то же самое касается и x а то есть поведение.
Также должно быть одинаковым на всех сторонах приложения ну наверно не стоит объяснять зачем это вообще. Нужно но может возникнуть вопрос ну типа я нормально.
Адекватные разработчики я все делаю по макетам откуда вообще возьму возьмется ни консистентной? А на самом деле каждый раз когда вы пилите новые краны или там. Редизайн какой-то делаете она вас просто накапливается и происходит примерно то же самое что и сатир долгом только:
Если стив долгом вы все понимаете что здесь делал фигура а там вообще говно! Код и нужно повесить тут ушки нужно потом все это дело как-то исправить то сколько?
Системность и такого нет и она просто копится: С годами и все то есть если вы посмотрите. На те экрана которые выпилили там скажем два года назад и сравнить с тем экраном которые вы сделали вчера вы заметите.
Как же сильно не могут отличаться особенно если это не супер важны с точки зрения бизнеса экран. Ситуация также может ухудшиться если у вас сменился дизайнер каждый: Новый дизайнером как разработчика приходит считаю что все что он делал?
Видео:Android MeetupСкачать
Но как бы не очень сейчас он сделал зашибись возможно так и происходит. Но это только накапливать некая систем то есть потому: Что он сделает явно что-то отличающееся от того что уже было и это проблема не надо решать.
Вторая цель это управляемость управляемость первую очередь касается каких-то базовых атомарных вещей типа цветов. Шрифтов и размеров и на самом деле управляемости такой научный термин а использоваться в теории автоматического? Управления можете не читать даже определение кратко суть такова если все вы можете вернуть как было значит система управляема.
Логично что когда дело касается android то управляемость у нас есть всегда ну или практически всегда. Так что с управляемостью нас как скульптуры не бывают. Отсутствие культуры бывает либо низкое либо высокая так из управляемость она может быть либо хреновый когда мы вынуждены.
Пробегаться по всему приложение чтобы поменять там не знают цвет заголовка кнопки например либо на может быть хорошей когда мы меняемся в одном. Месте скажем время быть стиле и все становится везде хорошо а также на может быть идеальной когда мы меняем один раз на для нескольких платформ.
Скажем для android ios сразу короче говоря чем меньше действий нужно сделать.
Для смены параметров во всем приложения тем выше управляемость. Может возникнуть вопрос ну типа зачем это надо а не делала в чем проблема сильно коррелирует. С консистентную то есть если у нас есть хорошая управляемость мы можем нивелировать consist.
Не консистентной сразу поменять все на многих храмах и развязать руки своему. Дизайнеру который не хочет делать не консистентной ему приходится поддерживать уже тот и месте дизайн те сотни кранов которые уже есть и поэтому делаю сейчас:
Не так хорошо как мог бы с управляемостью. Можно сразу все поменять и сразу будет приложение модом красивость и такое собственно в этом.
В этих целях одно из таких основных отличий команду и дизайн стрима других то есть ну знаете есть продуктовый команда. Который что-то делает для пользователя платформенной которые дело что-то для разработчика и есть команда?
Дизайн системы которая делает и для разработчиков и для дизайнеров то есть мы как-то должны. Балансировать между интересами разработчиков и дизайнеров и выглядит выглядит это примерно вот так ok чё нам вообще помогает в нашем нелегком: Деле ну в первую очередь эта библиотека компонентов я думаю библиотека.
Компонентов есть у каждого из вас приложение в каком-то виде в общем случае это выглядит примерно так разработчика нужно напилить какой-нибудь экран и надо. Сделать kin two юхи и он смотрит ну типа будут этим you happy использоваться если нет оставляет фичи модели а если можно то кладет библиотеку компонентов.
Ну кажется что все ок но на самом деле эти компоненты бесконечно копятся и в итоге?
Вас папка с билете компонентов крайне жирная плюс добавляются очевидные.
Проблемы ну то есть не контролируем изменит компонента.
В первую очередь каждый разработчик должен что то там еще допилить что немного отличаться того что есть заходит в уменьшить уже компонент допиливает какой-нибудь. Метод а потом еще еще еще в итоге в компонентом расстаться с дефектами где-то он ломается? И так далее в общем все плохо и множественной форте разработчик иногда лень разбираться или он понимает что сейчас очень по меня это все поломается он просто копирует.
Имеющейся компаниям переименовывает его меня и такую фигню типа цвета и вот здрасте новый компонент готов никакой управляемости при этом нет инцидентности. Нет вообще одни проблемы ну и не всегда понятно если подходящих компонента есть ваш братюни разработчик должен будет съесть вашу библиотеку? Компонентов и искать какая же из этих 10 кнопок ему все подойдет и подойдет.
Ли вообще и хорошо если он будет это делать а не на перед одиннадцатую кнопку логично что valve то мы тоже: Прошли через весь этот ад и заканчиваться он всегда одним.
И тем же ваша библиотека компонентов просто умирает то есть конечном итоге вы понимаете что там настолько. Уже помойка что проще ее забыть как страшный сон сделался заново хорошо в итоге компонента не прекратится объявляется новый. Модуль в котором все должно быть хорошо но хорошо там не будет вы все тоже самое только:
Позже как вы думаете сколько итераций google это компонентов было волита кто думает: Что 2 о никто не думает а кто думает что три кто думает что 4 а кто думает что.
5 слушайте в нас совсем плохо думаете мы все-таки как-то учимся на своих ошибках на самом. Деле у нас сейчас только третья итерация были за компонентов но мы сделали выводы на своих ошибках к чему мы пришли ну во первых все компоненты должны иметь. Четкую спецификацию для дизайнеров и разработчиков и в этой спецификации?
Должно быть черным по белому написано что компонент умеет делать. Он не умеет делать он должен делать где он может использоваться где он воспользоваться не может убили дико компонентов обязательно: Должен быть года умер если за библиотека.
Компонентов никто не следит туда как раз будут пытается не контролируем изменения неконтролируемой форки так далее так что ну и плюс человек точно будет знать какие. Компоненты вообще есть он подсветят это вам на пол request их скажу зачем вы 11 кнопку напилили. Уже есть готовый и вот спорить и и короче:
Говоря если у вас нет куда вы не то библиотеки компонентов найдите ответственно ну или хотя бы крайне библиотеку компонентов к если эта часть. Дизайн систему должен пушек дизайнер иначе чуда не произойдет потому что дизайнера порой?
Трудно объяснить что не нужно из этого остов в 10 дбм лепить новый компонент давайте уже смиримся с тем что есть и используем имеющихся но другой. Дизайнер может прояснить что все в голове другого дизайнера так что если у вас есть команда. Не системы ваш дизайнер должен быть проактивным он должен бегать и промывать мозги всем остальным дизайнером как делает?
Надо как не надо в противном случае вы так и будете любить бесконечной форте почти. Одинаковых компонентов еще одна штука так который у нас есть это дизайна он нас лежит также в моно.
Репе и суть того что это просто приложение. В котором есть все вообще в юхи которые есть? Приложение перри использован с реальными примерами использования.
То есть если какая-то муха есть то будет точно показано все ее поведение это могут посмотреть дизайнеры это могут быть посмотреть разработчики. Все отлично разработчикам особенно хорошо это по сути получается как документация то есть можно залезть посмотреть пример?
Использованию скопировать к себе что там поменяется зашибись: Работают ну и конечно дизайна должен поддерживать темы разных приложений если вы шарите были всех компонентов на несколько приложений или вас в одном.
Приложении несколько тем это удобно и компоненты могут очень сильно отличаться по внешнему виду поэтому это у кого оправдан.
Андроид разработка
Вторая вещь которой мы занимаемся эту рефакторинг. Всяких базовых сущность то есть то есть шрифтов размеров. И прочего она но перед тем как рассказать что конкретно мы там делаем.
Надо рассказать о масштабах от того с чем мы имеем дело ну во первых у нас моно репе. Реально 3 приложения ни одно это не только вид это еще домофон то фототека во вторых у нас 313 продуктовых модулей. И 69 модули в гитхабе в git commit а то о чем сергей мышцам рассказывал.
На первом докладе а там в основном мы на рейке почти. 900 тысяч строк кода и около 60000 гитхабе плюс почти? 1902 был ресурсов и почти 1600 a way out ресурсов.
Но вы наверное поняли каково делать рефакторинг lavita на самом деле чтобы хоть как-то облегчить себе жизнь у нас есть довольно. Хитрая схема она выглядит примерно так то есть нас есть какие-то платформы?
Независимые спецификации которые вынесены в джейсон там как раз сети цвета размера и прочее мы это джейсон кормим отдельной! Проги которые у нас написано на джесс.
И она свою очередь получаемых генерирует уже что-то платформа зависимое для ios и android соответственно для ios. Xml отдается свифт файлы ну естественно дизайн таким вот эта программа. Она все генерит не только для разных:
Платформ мной и в пределах одной платформ для разных тем как это выглядит вообще!
Ну например есть coin стиль типа праймари лардж мы указываем что там высота. Должна быть такой the background должен быть там таким-то в нормальном состоянии в подсвеченном состоянием. Сзади сцепленном состоянии какой должен быть цвет реплей так далее а скармливаем получаем?
Уже платформа зависимый класс который вполне себе можно сразу вставлять использовать ну кажется все просто какие плюсы. Такого решения но во первых идеальную управляемость мы меняем только taken и а дальше все сама генерится простоит надо вставить и все короче говоря: У нас изменение по сути в одном месте весь be better place генерируется.
Бойлер plateau там просто дофига вот представьте себе есть стиль кнопки у стиле?
Кнопки есть там три размера это уже перемножается есть еще целый куча тем иначе говоря там реально сотник сомелье плюс еще цвета там генерируются:
И так далее руками то делать практически невозможно на большом проекте а вот когда все генерируется все хорошо а какие! Минусы ну во-первых никто кроме дизайн системы не понимает до конца как. Это работает и как вносить изменения ну то есть мы не то чтобы было чем людей всегда разработчик может у себя там в фичи.
Моделью как-то все делать локально но когда надо выносить какие-то! Изменения на уровень всего проекта то приходит к нам и говорят но типов помогите позязя то он сделает все это тут мы становимся каким-то. Бутылочным горлышком но в принципе такие задачи возникают не часто.
Поэтому в принципе с этим можно жить но и требует серьезной доработки для автоматизации процесса потому. Что сейчас это сделано далеко не идеально по факту нас есть три репозитория а мы что то пусть. Он сначала дизайн taken и потом запускаем это локально получаем xml свифт файлы и потом мы вынуждены еще пол request.
Оформляется в ясной репозитории андроидный на самом деле довольно долго явно можно было бы автоматизировать но пока. Что ничего нет собственно что мы делаем по самому. Рефакторинга чтоб все было хорошо и вообще идеально работала во первых для поддержки несколько тем нужно использовать атрибут.
И везде где только возможно вынести вообще весь hard кого-то с проекта. Требуется ну весь хардкот тех же цветов вынести почти невозможно но можно сделать от по максим опять же перевести в атрибуты.
Но и для темная тема а также нужно! Будет что то дорабатывать потому что не всегда можно обойтись одними атрибутами кстати вы используете атрибут а в проекте кто использует так ну не так много.
Вашингтоне использует просто не надо то граждане используйте что-то за последнее время все стали клин архитекторами. Все знают там соль и там отличием выпьем я им и так далее кто-то может даже баба мартин оно начитает но когда дело доходит до его я это. Вроде тоже дополнительный слой абстракции которые соответствуют да и solid:
Вы можете подменить реализацию все у вас будет. Хорошо но всем наплевать все любят караколе цвета а потом это дело.
Фиг подхватишь как работают с атрибутами ну обычно просто создается базовой тему в ней описывается. Базовые атрибуты а потом уже в конкретной теме вы их просто?
Перри определяете ну вот здесь например просто переопределены серые цвета работать в принципе сначала. Непривычно придется написать какими такие аппараты и методы но в конечном итоге работа будет не сложнее чем с обычными цветами то есть особой! Разницы написать контекстом red color и указать идентификатор цвета не сложнее чем написать концерт гадко робота например указатель нотификатор атрибута зато это все будет!
Зависить от темы перекрашиваться когда надо и так далее с xml им еще удобнее работать просто ? к и атрибут подтянется!
То есть и тут написано black но блин в светлый. Цвет в темной теме например этот блок может быть в этом легко в этом довольно удобно.
Какие минусы ну во-первых многим попросту не привычно просто надо взять и привыкнуть уже наконец а если не за ложится. На атрибуты в начале рефакторинг долго в шов вы понимали вави то я уже показывал. Там типа 1100 play all the в тысяча девятьсот дрогнул ресурсов.
Чтобы это дело а три факта риц и не потратить. На это всю свою жизнь мне пришлось обложить в питоновские скриптами!
Здоровенными и где то за неделю еле-еле это удалось но опять же мы самого начала. Стреляли себе в ногу используя хардкорные цвета не работает до 24 пил вектор драббл. Атрибут а если там есть fill type или хоть один градиент это на самом деле большая проблема потому что во первых android!
Студии не идеально когда вы кормите свою бляшку перегоняется.
Вектор драббл она вам этот fill type подсунет часто там где он не нужен и можно и но при этом:
У вас атрибута там в vectra дров был работать не будут даже ссылочные цвета не будут и там реально превосходит а иногда!
Этот скилл так можно убрать иногда визуального редактора вам покажут:
Что выбрали fill type у вас все поломалась самый тупой что иногда он этого не сделает. А будет показывать что все хорошо вы скомпилить и а ваша vector2 угол превратился в тыкву это очень грустно.
С градиентами вообще ничего до 2 4 пи не работает он только хардкоре и никак иначе причем hard ходит. Если нужно например для поддержки тёмной темы приходится.
Использовали firelit и весь хардкот копировать в папку скажем double. Night в принципе жить с этим можно.
Но если еще несколько тем для нескольких тем придется делать то же самое но с другой стороны тут особых проблем нет переключением! Все равно займется сам android и как бы об в принципе общем все что нужно знать про тёмной темы то квалифаер. Might и данная тема все я не знаю чем там иногда целыми.
Докладами рассказывают на самом деле все просто на самом деле мало мало. Сделать все хорошо нужно еще сделать так чтоб никто ничего не сломал это тоже на самом деле большая проблема у вас у каждого!
Наверно фирм есть кое-то текучка новые люди приходят старуху это так далее и новые людям! Не очень-то понимают как принято работать почему.
Есть те или иные решения не просто работа так как привыкли и никакие он вардинге тут не помогут потому что человек. После он вардинга забываются сразу собственно от поломок логичнее всего использовать unit тесты и ой тесты ну наверное их и так плюс минус:
Все используют их я не все знают мы также используем. Активно линд аулы и скриншот на и теста собственно в первоочередной рима ленте линд у нас используется для запрета hard кода.
Цветов xml то есть всякие цвета android color white или там решеточка ф-ф-ф-ф-ф-ф:
Не прокатит такую они сразу просто поваляться на этапе туре квеста. И запрет hard кодов 1 типа color white! Или collapse там парс colors ким the hard кодом ну понятно зачем это делается хардкор от каждого.
Цвета не будут перекашиваться никогда и это в принципе сама.
По себе проблему также есть проблема в том что если вы используете всякие цитате по которые начинаются собак android то стоит? Помнить что некоторые венгры их весело переделывают например на comin samsung. S4 можно увидеть что android color white будет не ф-ф-ф-ф-ф-ф-ф 5 5 5 то есть внезапно?
Вы смотрите на одном девайсе у вас и серая они бела как должно. Было быть ходят легенды также что на каких-то хуев ских планшетах android.
Color транспорт зачем-то сделали тупо белым короче эта боль и хардкорный свято вообще никогда не стоит никому использовать а сам по себе ленты. Довольно простое занятие то есть по факту все в логик и вот в одном методе в котором! Мы получаем нужную ноту и поставка работаем с ней как строку за строкой проверяем что-то вообще есть если вы нашли?
Предмет того что вы искали сразу выкидываете какие ошибки и так далее какие плюсы это дешево в разработке если вы будете писать. Кастомный линд вряд ли вы потратите больше.
Денька 2 даже слегка до этим не занимались инструмент гибкий.
Линд может не только подсказывать что у вас здесь какая-то. Фигня но также предлагать методы решения и линд он отрабатывает еще самой студии наверняка вы видели android ские ленты который. Желтым подсвечивают какие-то проблемные вещи а иногда красным вот все то же самое.
Можно сделать самому это удобно и ну и линд работает как локально так и на сей всегда можно. Если что и локального запустить особенно если проект небольшой но есть минусы на большом проекте проходит link нереально долго! И сильно жрать ресурса чтоб вы понимали в авито сборка холодная минут 15 идет ollin.
Проходит еще дольше а часто у меня лин просто подвисает?
И можно ждать часик можно ждать 2 и как-то при ждал не помогло в общем на маленьких проектах это еще прям хорошо.
Заходит на больших это только вот на этапе pull request родят она сияет но он проводится там. Все хорошо на локально никак практически невозможно прогонять только!
Конкретный лин то есть линд написали думаете.
Что все хорошо сейчас буду прогонять только его а нет конкретно лин прогонять нельзя приходится прогрессии android ленты вообще. Это долго а чтобы было быстро можно использовать standalone линд но он работает. Только с конкретными файлами а на уровне проекта вы там нифига не запустить!
И потому что как только standalone винт увидят что это graduate проект он сразу выкини вскипает ограду проект давайте. Запускаете gradle линд а меня оставь в покое это тоже как бы не очень удобно а еще одна вещь которую.
Мы используем скриншоты и тесты и тут хотелось бы вспомнить что если вы видели хоть какой-нибудь. Доклад от авито вообще на любую тему всегда есть какие-то к это список был шитых слов я думал что меня это минует. Но нет я тоже вычеркну ее отец и вся инфраструктура а окей скриншот.
На тесты многие люди не очень да кому понимают как они работают есть? Несколько деталей во-первых обычно покрывают скриншот ными тестами компоненты они экраны ну то есть вы конечно можете.
Покрыть экран скриншот ным тестом но это примерно то же самое что написать здоровенный тест спотах сотня. Cert of этот тест будет гораздо чаще падать просто потому что вы что-то изменили они потому:
Что вы что-то поломали короче говоря любуется на поддержку! Тратить значительно больше времени чем могло бы быть скриншота сами. По себе pixel perfect ну типа миллиона запустили миллион раз такой же результат.
С этим никаких проблем нет но логично что они требуют эмуляторы по сути: Является инструментальными тестами и ожидаемый плохо работа: С анимациями потому что создается в результате скриншот но тест обычно по игрушка не gif . ну что поделать а на рынке.
Сейчас по сути только одна такая известная валите-ка для скриншот ных тестов это библиотека от facebook! Который так и называется скриншот с android на самом деле она не плохая у нее есть удобный синтаксис?
Локально все работают из коробочки умеют работать с несколькими девайсами делает не только скриншоты но и репорты даже правда. Report отстойный в том плане что там даже нет сравнения вы не увидите учетом оси поломалась. Там будет только сам скриншоты все но там зато есть рекорд в котором есть всяких самый параметр и это прям прикольно иногда:
Это можно использовать так что если нужен reporting придется еще в речку харуми вставлять в которых разработал со скриншотами тестовых. Обычными но умеет делать хорошие reporto coins пример тесту можно посмотреть.
Motion layout
Тут вообще никакой магии нет получаем контекст и с контексте своим контексте wrapper чтобы просунуть туда текущую тему создаем кнопку прокидываем. Атрибутом тот стиль который должен быть применен указываем layout-параметры с этим какой-нибудь текст ну все потому я этим и записываем в итоге.
Получаем просто скриншот кнопки все как бы мог а у нас на самом деле гораздо больше. Всего тестируется очень много всяких состояний я пытался все сюда. Ставить устал так что общем это все что мне было не лень запилить и выравнивать как это вообще!
Все работает запускается тоска градова коннектор androidtest она в свой черёд прогоняет сами тесты в результате самих тестов все скриншотов скидываются в один zip-архив? Как только все завершено это zip-архив улица к вам знаком распаковывается и сравнивается. Если нужно получить эталону то все происходит тоже самое только сравнение.
Нет и скриншота летят сразу в папку с эталонами скриншотами!
Требует библиотека питон 27 я честно не очень понимаю зачем использовать питон 272 к 20 уже вроде как он древне как что-то от мамонта. Но в общем страны решения еще использовать! Белека пилу ну самим питоном ну как бог в принципе она работает поэтому чего жалуюсь с девайсами естественно используется android debug bridge.
И он требует явного серийник идентификации девайса а в чем проблема. У нас на себя и крутится там скажем 50 эмуляторов и они все одинаково не ходи на. Косе реал и так далее мы допустим на 50 муля тори прогнали:
Все тесты вроде все хорошо zip-архив лежит там мы запускаем то запускается тоска чтобы все это с пулить уже на комп и внезапно!
Оказывается что он обращаться не к 50 аккумулятора а к первому а там нифига нету там этого zip-архива нету брать: Нечего тест упал проблемы пришлось все это? Переделывать я переделал следующим образом то есть эталон и теперь лежат в папке.
Android с таз с то есть мы не перегоняем их на комп а наоборот закатываем вместе.
С тестом на девайс и когда но отрабатывай сам тест то есть скриншот и появляются. Уже на самом девайсе эталону тоже уже есть на девайсе а потом не просто:
Сравнивается ну с пудингом тоже все просто забираем скриншот из девайса и все в папку css сравнивать скриншот вообще дико полста достаточно: Png воткнуть bitmap и в принципе все дальше можно. Написать обычный сердце и использовать дефолтный метод бит на cms он в принципе идеально работает прямо как швейцарские?
Часы там начал чтобы придумывать не надо короче мы это втащили и что получили а любые изменения внешнего вида компонентов сразу? Видны на пол request то есть ли было spool request поваляться либо вы увидите!
Что скриншот перри генерале и увидеть рай без этим скриншоты механизм. Пока работает в режиме минимуму produce но требует значительных доработок то есть сейчас нам приходится делать. Локальный эмулятор например который точная копия эмулятор на себя и в противном случае теста.
Проходить не будут нет внятного reporting и потому что тот который был от фейсбука но она так.
Не очень полезное да еще вдобавок с питонов связываться совсем не хочется! И по сути то что было в и звучной либби на питоне выпилено полностью ну и есть проблемы: Сейчас git lfs кто не знает о to be the large file system кратко суть такова.
Если вы будете тяжелые файлы кидать в итоге тут станет плохо для этого есть отдельно гитлер факту large file system который умеет работа. С тяжелыми файлами и все там вроде. Хорошо она есть нюанс на сервер сойди сложно сделать хук который.
Будет смотреть что общем все правильно это тяжелый файл и не нужно его.
Класть как обычный в детей а локально это сделать можно но трудно удостовериться? Что все разработчики взяли и поставили себе git lfs локально то есть если кто то где то про вафли вы не сделал этого:
То придется потом либо оставлять все как есть либо пытаться за историей это удалить файл это каждый раз так себе квест ok в принципе. Это все что я хотел рассказать какие итоги итоге по дизайн системе главные цели это управляемостью консистентной дизайн.
Системы это не только библиотека компонентов но также сопутствующей инфраструктуры инструмента то есть все наши тесты ленты и так далее все тоже. Как бы части дизайн стен организационно вас не выйдет ничего за дизайн системой. Без инициативы со стороны дизайнера то есть как бы не нужно все это брать на себя лучше взять хорошего дизайнера чем можно вообще вынести.
Из доклада если у вас даже нет дизайн системы?
Будете к компонентов умрет без владельцев кода поэтому опять же нужно хоть кого-нибудь на это дело назначить нужно стараться использовать атрибута. Самого начала можно всегда использовать линд но он слишком требователен к ресурсам и наверное.
Имеет смысл использовать только на себя и ну и скриншот но из тесты могут сильно упростить!
Жизнь но вряд ли вы возьмете и легко и затащите то есть некоторые.
Фирмы а знаете перри валюта они используют эту самых и обычным вылетят.
Локально но локальная ясен пень никто не будет ничего. Прогонять потому что зачем мы так вроде можно кушать это все и забыть о интегрировать не так просто и придется решать многие. Проблемы окей в принципе все и опроса давайте во-первых благодарим андрея за класный:
Доклад и собственно начнем вопросы разные библиотеки для яблочников и android: Чиков коробки разные по идее должны быть по внешним видом смысле библиотеки. Ну вот яблочники допустим привыкли к своим яблочным менюшка не имеем у нас одев идея идея в том что мы стараемся.
Стандартизировать по максимуму дизайн между андроидом и а я сам а тогда получится шоу человеку. На своем телефоне у него все программы однообразные а ваша витовская программа она будет свой стиль ну скажем сейчас в целом концепция. Дизайна на android айос она почти одинаково уже то есть да у нас есть.
Платформа независимости но их не так много и ну как можно них не фармить особенно!
Что не стоит так часто играть трудно сказать я думаю?
Сотни я просто вот открыл приложение ресайклер фильтры я вижу боковое меню а потом а потом можно зайти в какой-нибудь. Там не движение жку увидит что там есть всякие экраны отдельно каталога новостроек.
Всякие сравнения там явно и за скотом? И еще crying фигня то есть экранов реально?
Много но пользователь не видит их я просто думаю я посмотрел так 5 экрана не-не-не-не-не-не-не-не. Мы бы очень хорошо железы было всего пять:
Экранов нет там банально выложить какой-нибудь объявление! Например на авито через приложения там там там еще и какой-нибудь сервер!
Driver you a и много чего другого.
Слушая на тестах вот этих снимков экрана да тут автоматически прогнал для одного: Телефона а вдруг вот картинка на одном телефоне нормально.
А с другими разрешением экрана там все уехала ну а что мешает. Использовать на но там в текущем решение тоже можно использовать несколько разных эмуляторов. С разными решениями тебя и так далее то есть это вообще не проблема.
Но на самом деле чаще всего ломаются цвета поэтому не знаю насколько полезно использовать экран удобно.
Можно поближе микрофон пожалуйста для каких кейсов удобно использовать. Этот скриншот на и когда мы например перегенерируем вот эти дизайн taken и можно там где-то. Ошибиться и там ни знака это не тот свет случайно поставить на какой-то конкретный стиль ну блин все может бы глянуть в итоге мы увидим.
Это и на самом деле скриншот на тесто нас уже не. Раз спасали то есть иногда не знаю отель factory coins.
Цвет поменяешь но где-то забыл атрибуты наоборот. От фактов и тогда просто видно что цвет не совпадает: И все мне там под капотом там супер простая вещь просто юшка думал из в любой вьюшки можем взять ее сохранить:
Bitmap ну вот так и происходит то есть на этом там переопределения там plain. На тестовом трейды создаются сами скриншоты вьюшки по сохраняется в bitmap и все но bitmap соответственно сохранить как png никакой. Магии там нет еще вопрос то есть по факту ты не совсем скриншот это скорее просто юху в bitmap перевели.
Да можно всегда пообщаться позже если что так что а как вообще выбирается owner вот этой дизайн системы? И какие у него задачи получается он full-time сидит кнопочках нет но на самом деле.
Тут если у вас есть команде занят систем это конечно только. Команда дизайн системы будет ответственна за общие компоненты перри использован. Если у вас команде за ним системы нет то игры просто нужно хоть кого-то назначить ну по принципа не знаю кто может привела инициативу.
Или кто плохо себя вёл и не знаю пока хотите просто с дизайном ты забудешь!
Потом как с базы общаться ну это какие-то издержки not я не знаю команда спидов например не помню.
Когда к на последний раз писала не только gradle лезут никто. Их не шемет за то что вы там кроме своего горла ничего не знаете но вот у нас примерно шанс всякий случай уточнил: Что команды спитакци ускорением приложение интерфейс вопросы еще если вопросов больше нет андрей выбери лучший?
На самом деле мне понравился вопрос про то как создаются с вами скриншотов на самом деле это интересный правильно опрос. Вот пожалуйста на первом а да да да да да да да да да не вот туда подарочек забирай давайте:
Поблагодарим адрес еще раз за доклад и у нас собственно. Сейчас еще один небольшой перерыв до пяти тридцати можно пообщаться с ребятами со спикерами как раз уточнить. Многие вопросы поиграть в кито перекусить и так далее тому подобное.
Возвращаемся сюда в 17 30 у нас будет последний?
Доклад кирилл розов из android брат каста расскажет нам про котлин картины не уходите далеко друзьям и портал.
Нажми таб и у нас собственно последний доклад в программе это специальный. Гость из белоруссии кирилл давайте поприветствуем и кстати тем всем кому этого всего будет мало у нас еще в программе. Есть автопати в баре я об этом расскажу?
После этого доклада а сейчас собственно слова кирилл кирилл жги всем привет как ваши настроением вы ещё в силах: Замечательно прекрасно такое настроение как будто выучишься уснуть давайте активней но последний доклад это всегда не просто я прекрасно.
Вас понимаю тоже постараюсь побыстрее сегодня я расскажу про к рутины мой доклад сегодня будут больше построен на том чтобы: Рассказать почему их стоит использовать почему они подходят для android вот просто!
Прекрасно но для начала хотел бы узнать вот кто из вас использует арык джаву в проектах держите держите руки поднимаете. Выше вот это не стыдно это нормально хорошо давайте теперь кто использует к рутину в проектах вот рук меньше.
А кто знает про к рутины рук чуть чуть! Больше это хорошо вот именно поэтому сегодня мой доклад направлен. На то чтобы рассказать про это побольше чтобы донести до вас зачем это нужно возможно что-то вам частично!
Будет известно но я надеюсь что новое вы точно почерпнете вот меня зовут кирилл. Я android-разработчик в компании humans тут нет юмор тут нет это такой сервис по поиску работы месяца схожи с фрилансом работаем. Мы в сша скорее всего вы нас не слышали здесь но помимо ясно и работы у меня есть как бы моя такое личное хобби который плотно переросло.
В мою вторую жизнь это телеграм-канал android бродкаст который потом перерос подкаст который.
Уже перерастает видео совсем недавно вот вышел новый эпизод буквально вчера мы поговорили с командой котлин мобайл multi-platform а то куда развивается.
Котлин multi-platform и когда он победит флаттер вообще я уже был здесь полгода назад кто видел этот доклад накопленное влево и замечательно там. Я рассказал про best practices и для тех кто уже знал к рутины. Но я решил немножко откатиться назад из начать с первого шага не с третьего вообще если рассмотреть современную мобильную:
Разработку под android мы именно говорим в канонах таких прекрасных которых идеализированных я сюда только тестирование добавил принципе:
Она выглядит вот как то так кто использует.
Continuous integration
Скажем 4 из семей технологию себя в проекте но большинство да вот принципе все это у нас собирается мы делаем: Свое мобильное приложение все у нас идет но проблемы в сро не избавляются то есть мы живем с теми проблемами. Которые у нас были больше десяти лет назад при самом запуске:
Первым android что это это жизненный цикл это ограничение по выполнению операции на каких-то! Потоках это боль с activity фрагмент кто не страдал от activity fragman поднимите руку ты их не использовал до на самом деле это боль и одна! Из самых таких нам больших проблем во всем этом в том что android из детей решение наверно начали.
Появляться совсем поздно этого джетпак поначалу часть это решать но часть проблем все равно осталось не решена и если принципе еще посмотреть: Вот так скопом взять на современные мобильные телефоны чего сейчас вот железо представляет мобильный телефон!
А в плане возможности что мы можем использовать это огромное количество ядер обычно 4 даже скорее 8 причем. Это еще big little архитектур где у вас несколько блоков несколько блоков и озер это большие экраны. Куча оперативки это короче постоянное подключение к интернету конечно:
Туча приложений которые вы поставили сами еще которую: Vendor решил что вам они нужны и вы не можете их удалить из всего этого а что же такое чё-то зависла приза. Это эпичная ее прогонялся мы прикольно что она работала спойлеры!
Да вот и в принципе все это вырастает в определенное ограничение который мы должны сплю и и ограничения и возможности.
Которые можем использовать конечно мы можем использовать множество? Озер и выполнять кучу операций у нас куча оперативы и мы можем ее расходовать как хотим и не бояться на моем орелики но с этим!
Одновременно с этими возможностями у нас растут и обязательства так как экраны больше мы должны показывать больше данных соответственно. Больших загружать так как больше приложений работает.
Одновременно у нас больше нагрузка на процессор и соответственно меньше времени.
Ну и конечно у нас есть наш я не знаю это сказать real-time world в котором мы постоянно получаем какие-то! Нотификации уведомления twitter facebook вконтакте в сок нам сыпят и это тоже соответственно работа которой. Выполняется на устройстве чтобы все это делать мы должны.
Как бы эффективно решать вот так что такую что-то все они не мой день волнуюсь сильно. Вот вообще если поговорить пророка рутины в целом если взять разницу между подходами к рутин.
И потоками в чем они дают преимущества основная. Основное преимущество крутин в том что они умеют использовать ресурс.
Эффективней как это выражается если рассмотреть вот пример того что у нас есть к рутина и java поток:
Но мы рассматриваем это не в плане как примитивов а именно в плане как каких-то контейнеров для выполнения синхронной задачи вы давайте. Так об этом говорить если мы хотим запустить еще одну какую-то дополнительную задачу. Если мы сделаем это java потоке она у нас станет в очередь проблема это связано с тем что java:
Поток когда он чего-то ожидает он блокируется и он говорит даже он говорит системе если даже ничего не делал. Говорит нет подожди я вот дождусь неважно сколько и только потом ты можешь меня загрузить соответственно это выгружается в очередь и чтобы от этих очередей:
Избавляться все приходили к компьютерам в картинах все работает немножко по-другому в картинах? Если вас приходит новая работа система может понимать что сейчас у меня есть не загружены ресурс то есть дрова поток который не загружен он сейчас просто.
Я вот и прочим я могу пока к рутина! Ожидает результат отдать ее выполнится то есть фактически за единицу времени я могу. Более эффективно распределить все ресурсы с этим понятно это под капотом это не важно важно концепция важно не реализация.
Это это доклад реклама это доклад не технические подробности и там уже за рамками немножко. Поговорим если посмотреть также отличием java экзекьютора то в чем есть отличие если вы запускаете. Задачу java экзекьютора и она опять же простаивает.
Разница ее в том что она будет простаивать и ждать и займет полностью этот поток до его выполнение. В отличие от к рутины которая если она простаивает то она может найти любой свободный ресурс на котором.
Может продолжиться это опять же показывает как множество java потоков.
Примитивных вот которые на уровне g bm могут эффективней при использоваться к рутинами. Чем через api отрядов следующим важным моментом является страх чуют kong оренсе вообще это просто это такой пример:
Из бег туч вернуться в прошлое да спасибо вот прям туда мы создавали когда-то в андроиде старым. Там два у нас были sing тоски было нечто подобное той 5 тыс как правильно мы должны были делать мы создавали какую-то?
Асинхронную задачу сохраняли ее в переменной и когда нам больше не нужно было мы это консоль или если вы этого не делали: Поздравляю вас memory leaks но примерно это все выглядело так почему это нужно было делать?
Ну потому что если у вас операция например которая привязана к выгрузке данных. Которые связаны только для отображения на текущем экране и в принципе когда экран закрывается этого?
Больше делать не нужно то соответственно чем задачу выполнять до конца можно. Тоже остановить для любителей рыкса я тоже сделал пример есть такой же не называется к компу композит disposable кто его использовал вот это в принципе такой? Вариант решения от рыкса то есть вы свои все задачи просто связь закладываете в контейнер и в какой-то.
Момент можете из него вы примерно этот код выглядит так не придирайтесь я не пытался достичь идеала но. Выглядит это все ну так себе есть к рутины укоротил есть такое понятие крутин.
Скол пав на основе его ариэль ну то есть это и есть реализация страх. Чуют конкуренции то есть все задачи у вас связано с определенным скопом то есть рубля каким-то жизненным.
Циклом в котором выполняется это синхронно сдача для которого она нужна и тут как раз та жизненный цикл: Вот этот очень важен потому что в андроиде.
Очень много компонентов жизненным циклом это activity фрагменты в you модели и сервисы и прочие прочие компоненты которые.
Вас могу жить на про там пока живет сессия или на какие-то другие time. Live и и плюс вы это можете определить вон в картинах это будет выглядеть.
Реализация примерно вот так то есть вы создаете к рутин скоб у картин скол по вызываете какую-то задачу. И соответственно потом в конце останавливайся выглядят лучше да нет та же самая фигня. До фигню продаю правильно дело в том что на самом деле вот.
Этот код выглядит так потому что life сайкл столб и уже in the green:
И в джетпак в стандартные activity вот то что вы знаете в комп от activity фрагмент.
Activity во фрагмент и везде это уже интегрина и вы легко можете это использовать помощь. Скотту с вас никогда не будет моим великой вы всегда будете там где нужно вы не выйдете никогда за пределы того чего вам нужна для view.
Моделей прочего тоже все есть мы с вами это обязательно рассмотрим чуть позже следующая? Классная штука это для любителей рыкса чисто кто любит строить. Цепочки можно поменять ваш обзоров был на flow на холодные цепочки.
Которые обрабатывают тоже постепенно у них есть поддержка всех вещей. Куча операторов выглядит это вот таким образом любители рыкса вам нравится ну по-моему та же херня!
Давайте будем честны вот прелести и не только в этом тасс во-первых 1 прелесть заключается в том что попробуем разобрать вот на таком примере: Для думать актовый зал державу фильтр оператор наверное практически один из самых базовых на уровне! Smap вот который использовали что есть по себе фильтр оператор.
То есть это выполнение какого-то условия она возвращает true или false!
Для элемента и соответственно включается дальше в цепочку или не включается вроде бы выглядят довольно. Просто да как вы думаете сколько нужно.
Строчек кода чтобы реализовать страны рык джаве этот оператор но если мы используем рюкзаку для синхронных то есть стандартные!
Стримы это про то что операторы для коллекций а у нас 8 джавы на андроиде нету настолько на появле появится. В android граждан плагине 40 но зачем она нам нужна но это кстати про это проговорим вот так вот выглядит оператор.
Фильтр no rx я очень сильно упрощал код сжимал все то есть в реале если старцах посмотреть вот это из-за рубежа? Вы 2 код это порядка 50 строк самое интересное если вы еще разберетесь все почему здесь этот код написан. Я вам java я бы очень хотел с вами обсудить потому что я не все понял то есть особо написать?
Правильный оператор нужно хорошо разбираться в джаве и понимать на каких концептах она строится и как правильно должен работать. Оператор ну конечно сейчас я буду продавать flow вот как тот же оператор выглядит на flow кастомный то есть с этим. Намного проще разобраться и намного проще написать и вам не нужно думать ни о каких особенностях подхода круто плюс пол это.
Огромный пласт свечей она поддерживала нас построен: На основе крутим поэтому он является с интегрированным:
С языком с компилятором и во время компиляции код оптимизируется который там делается риджа вы никогда так не сможет потому что это сторонняя библиотека. И не имеет никакого отношения компилятору высокий performance есть еще очень классно архитектурное решение которыми. Позволяет вам легко создавать свои операторы и вообще не почувствовать.
Разницу между своим или чужим оператором то есть это сделано очень классно и прямо вот можно даже как руководство. Брать потому как делать красиво extension by star hi текстуру в вообще выпей своем для будущих решений также важным моментом.
Есть то что вы легко можете мигрировать сыр и java или project реактор на этот: Подход причем там даже настолько это сделано что некоторые операторы в котле в код inflow. В картинка routing flow они называются по-другому чем в рэк джаве но операт но создатели?
Фреймворка специально добавили с такими же названиями эти операторы пометили. Как deep реке это что за меня то есть фактически если вы поменяете обзор был на flow? У вас все останется работать точно также отец просто.
Будут кидаться предупреждение что вы используете не те оператора и вам лучше поменять на каноничные ну и конечно для. Тех кого важно быть призер ушло у таку проблемы нет потому что бык прошёл это то что у к рутине из коробки вообще. Принципе за их концепции performance кому важен performance потрясающе мобильные разработчики собрались никому не нужен performance есть такой один принцип который.
При дамах нельзя называть если посмотреть на перфоманс вот есть стандартные такая scrabble game test для реактивных подходов rhex rhex. Java далеко позади открутим flow достигается это не за счет какой-то! Магии прочим опять же потому что все построено на ин лайне кода на очень эффективном взаимодействии с компилятором это позволяет очень вставлять код вместо.
Вызова экономить как раз набор инструкций и расход по памяти в регби чтобы понимали у вас при больших цепочках. Это просто как такая матрешка в flow у вас прямой код как стоит машина? Которая выполняется очень эффективно и хорошо и за счет этого она тоже достигает больших преимуществ поэтому цифры впечатляющие то есть это ни одна.
Не две секунды это практически победа в два раза нет. Ни не ни в одном а немного- не многопоточные это нам это раньше они были на на немцев:
Они были однопоточный но уже scott ian один 360 многопоточной? Стали друзья давайте без вопросов без микрофона пожалуйста то в трансляции вообще непонятно на что отвечает я буду повторять вот теперь.
Мы короче скрестим к рутины с андроидом и джетпаком и получим большую любовь сначала мы поговорим. Про view model кто юзает архитектор компания вообще. В целом вот да это хорошо для всех тех кто юзает это как я уже говорил google добавила стандартную поддержку?
К рутин и есть такое расширение в нем отдал столб который дает он специально. Соответствующий к рутин скол с помощью которого вы можете легко запускать к рутину и которая знает в какой. Момент нужно остановить операцию какому моменту и продолжить то есть это связано.
С жизненным циклом you модели прямо когда она создается каротин skype стартует и когда происходит он clear он конце. Лица что-то вообще как это под капотом работает это работает очень?
Хитро мне захотелось вам рассказать там я специальная реализация картин skype?
Гол забил к рутин скоб он стандартный просто он клал забыл потому что реализует интерфейс к зубу все единственное в чем его особенность.
Но google было бы не google если бы сделала и пьяни сделав:
Себе паков поэтому чтобы все это хранится во вью модели. В каждое не добавили новую маму внутри. В которой они могут хранить севилью значения.
Вот хорошо это или плохо я не знаю раньше и когда если кто-то. Был в сентябре я говорил что этого не нужно делать. Сейчас моя мой взгляд немножко поменялся потому что то разработчики к рутин говорят что лучше чтобы к рутин.
Скобы были явно задействованы при старте крутили чтобы прямо вызвали такой так арутюн столб . launch они каким-то образом. Просто lauch когда у вас в зис есть к рутин скоб новая live data волшебное.
Continuous development
Такой генератор в чем ее особенность то есть вы можете вызвать функцию live data которая принимает? Лямбду в которой вы можете иметь значение это не что похожа на на обзор был на какой-то секунд с которым вы можете иметь. Значение возвращает он обычную life дату но внутри у вас есть возможность.
Выполнять suspend функции как то происходит на прием могу вызвать какую-то suspend функцию получить ее результат и потом проведите и значение вот когда это может. Быть полезно ну например когда у вас при старце если синхронной операция выполняется вот или ждать она доставляется. К вам довольно быстро хорошо и через love дату как все привыкли.
Делать все используют life дату кто нет классно я тоже думаю отказаться! Нет не настолько не настолько крайние меры вот что из себя эта функция под капотом представляет она довольно.
Простая то есть у нее есть принимается. К только рутин контекст который содержит параметры для выполнения к рутины.
Тайм-аут и вот тут немножко хак опять почему он нужен я объясню сейчас следующим слайдом это визуально будет намного проще! И потом есть непосредственно блок который выполняет котором выполняется. Ваша какая-то suspend функция или их множество эта функция является функцией расширением клайв дать life дейта:
Скоб что на себя представляет этот интерфейс нем есть три метода имеет он позволяет про иметь значение имеет source это фактически и менсет. Life дату туда в конечную и подписываться на нее на обновления то есть это примерно как будто вы передали life дату напрямую просто отложено с помощью? К routan ну и стандартная возможность это получить последнее значение.
Которое в этой локации было получено возможно это вам пригодится вот теперь мы перейдем в чем хитрость того тайм-аута. Который был когда стартует наш live data которую мы создали с помощью этой функции она начинает запускать она начинает: Сначала период с выполню стали наш код внутри раньше когда-то если он не успел.
Выполнится мы запускаем execution потом что-то у нас идет и в какой-то момент live data становится инактив там не знаем все об серверы! Пропадают она снова смотрит выполняется ли сейчас тот блок с кодом который мы передали.
Если выполняется тут вступает в роль тайм-аут вот этот вот тайм-аут который есть параметрам. Почему он нужен это довольно банальна и решение потому что когда. Мы переворачиваем девайс live data становится инактив!
И сразу же актив его чтобы она не остановилась при смене конфигурации мгновенно. Вот этот лайфхак и нужен был то есть фактически там он по дефолту. Стоит 5 секунд но этого выше крыши чтобы переждать переждать пересоздания.
Вот дальше мы снова проверяем выполняется ли наш блог следующем степом проверяется активно ли она снова возможно. Пока у нас блок выполнялся мы ждали выполнение тайм-аута на снова крут life дата стала активной если нет то мы отменяем execution блока. Если да то мы продолжаем двигаемся дальше key примеры.
Использования этого они довольно разнообразны вообще их там множество. То есть например можно сделать что вы связываетесь на одну life дату иметь эти какие-то значения позже можете например делать какие-то периодически апдейт! Его тут пример у меня получается live data с юзу рейде потом я создаю лови дату в которой буду?
Делать запросы я начинаю делать запросы мечу значения!
И делаю далее следующий пример это можно сделать! Ретро in из быков полисе то есть у меня есть какой-то блок который постоянно пытается выполнить запрос пока он не будет. Успешным выполняется блоками эти значения если все успешно он метит что успешно если происходит ошибка соответственно?
Я откладываю выполнение на какое-то время и выполняю. Снова есть еще пример с тустеп тустеп запросам из репозитория то есть когда например! Сначала пытаемся анны мы кидаем стоит у лоудинги потом мы пытаемся стянуть.
Данные спеша если заказе равных нет ничего мы пытаемся стянуть из сети вот то есть это опять же на этот кейс. Работает так и этот волшебный пример он показывает что вы можете иметь life дату то есть я забираю напрячь. Что-то и из рума например какой-то тяжелый запрос при большой базе данных не знаю когда это бывает этот:
Source и вничью на него к рутина автоматом крутим на него life live data автоматом будет подписываться и если будут приходить. Обновление от этой порученной love dat и они будут перекидываться и сейчас со следующим шагом что-то выкачиваю там из какого-то.
Ebay и сохраняю базу данных и апдейт мне придет. Потому что я подписался именно life дату которая была у меня исходной. Все будет прекрасно вот помимо всего этого чтобы все это работало еще прекрасней?
Есть возможность flow и live data конверсии друг: Друга то есть вы можете полученный flows конвертировать в live дату и обратно life дату сконвертировать flow следующем степом который идет таким важным:
И интересным и the lifecycle кто использует у себя при нем имплементации. Кто может опеле что-то live sites like a low нерф.
Вот это эпик хорошо вот вам это будет полезно и принципе полезно всем lifecycle а есть такие три расширения функции ln created and started.
Иван результ они соответственно выполняют какие-то suspend функции на соответствующий соответствующие события жизненного цикла ну то есть? Одноименный помимо всего этого еще можно и слайс aiko получить картин.
Скоб копаемся в начале показывал пример со старших con carne си вот на этом свои базируется и 5 вот этот: Полученный нами lifecycle крутин скоб он позволь имеется себе несколько функций который позволяет. Запустить картину зависимостью жизненного цикла как это вообще нам может помочь для чего это нужно если взять.
Такой банальный пример то есть мы можем запустить какую-то картину только в момент когда.
Наш ю ай покажется на экране это воин старту мы выкачиваем какие-то элементы и просто о как они вы качались мы должны отрисовываем на экране но отрисовка.
Нам же будет не нужно если уже произошел он стоп верно-верно соответственно нам нужно будет hands лиц и благодаря вот этой интеграции launch and started.
Наша картина будет сама консоль лица и знать с какой момент!
Нужно отрисовать или в какой нет вот пример. Немножко надуманный так делать не нужно вот эти операции должны быть во вью модели не делайте. Так это прям я просто не знал какой пример придумать лучше это было проблемно на самом деле вот но интеграция.
Не останавливается вообще вот на этих трёх вещах базовых. Который показал уже давно есть интеграция врум как и suspend функции так и flow кто уже ты успел использовать замечательно есть интеграция! Сварг менеджер то есть work менеджер тоже можно делать suspend.
Функции и в принципе таких вот артефактов которые содержат интеграцию с картинами довольно много: То есть все что gtx и она в себя уже включает эти интеграции поэтому обязательно свои проекты подключайте ktx самая грустная. Штука на подключается appcompat appcompat ktx к вам не подключается и это грустно каждый раз приходится все подключать цепочка.
Руками вот но помимо стандартных библиотек всё не ограничивается.
Например сейчас есть очень классный laughter для картинок мы его используемся уже в продакшен проекте coil кто слышал.
Про эту библиотеку кто пользовал какие впечатления вот это m&o концепция сам основная. В том что оно построено полностью на основе к русины пиа их единственно что мнение.
К рутины это а и а ну просто к рутина его пока нет и работа с ней одно прям удовольствие она полностью на код линии она поддерживает dsl и. Это фактически очень схожа с галой нам просто в немножко другом стиле работать.
С ним для котлин найти в стиле это прямо вот закачаешься. Я прям каждый раз испытываю немного удовольствия. Как работаю с ней потом есть библиотека.
Flow бантинг для тех кто любит rx бандунге.
Кто-то таким обмазался вот есть они я ладно промолчу ну я просто считаю что водка. Я просто видел такие приложения которых шло от view полностью до конца цепочка. Рыкса и потом обратно вот этим виа еще архитектуры были недоимки когда только?
В одну сторону цепочка уходила люди потом не могли из этого выбраться это как ипотека в которую ты в лес и: Не можешь никогда за ней расчитаться то есть это было примерно так. И в принципе в с помощью этого flow можете то есть за бензин и ивенты стандартные прокидывать их дальше-то учитывать!
И показал что есть колб и как подписываться то принципе это все складывается довольно легко то есть можно.
Сделать немножко в другом стиле то есть эти подходы могут быть разные но тут принципе уже как вам захочется с этим работать. Ну естественно retrofit не знаю android-разработчик у которого бы не было retrofit.
А вообще принципе не зная разработчика android? У которого проекте бы не было кода джейка.
Бартона по-моему там уже волос и должны! Написать что buy google and jake world он вот но в принципе не всегда можно найти полностью адаптер. На любой подход это нормально то есть не все этим запариваются некоторые.
Пишут только на java код и не все котлин френдли к сожалению пока так но написать адаптер для любого любой асинхронной. Операции то есть stories to операции результат который вам приходит не сразу можно вообще абсолютно? Любой направо даже можете написать адаптер для того чтобы перми шин запрашивать через успел функцию в андроиде крите дайте мне перми шим запускайте.
Suspend функцию вам приходят результат то есть даже на таком уровне его тогда кстати life cycles колпака рутин skype начинают прямо вот. Шикарнейший образом играть мы недавно это проделали но я это.
Мы это проделывать а позже чем я делал доклад.
Поэтому не внес вот как это все будет адаптироваться самое главное. Вот но если посмотрите пример то есть это об это какая-то синхронная. Операция в вакууме то есть она примерно имеет всегда такой вид то есть несколько это метод execute:
Туда передается call back и что-то в callback приходе.
Там обычно это уведомление о том что операция. Закончилась и закончилась ошибкой или была отменена для того чтобы сделать адаптер для нее мы просто создаем функцию например.
A white это такой стандартный нейминг в принципе если у вас есть идеи лучше можете. Пробовать свои нечем вас не ограничивает потом мы должны вызвать специальную функцию suspend к рутин функция с usb otg арутюняна приостанавливает выполнение к рутина. И будет дожидаться когда какой-то синхронный вызов вернет обратно результат.
А в параметрах она передает continued шинкансен больше это способ ваш общаться с к рутиной которую которой приостановила сейчас: При выполнении вы возвращаетесь чуть чуть не результаты такой мостик ну и потом соответственно я просто вот запускаю свою операцию:
На to sing у неё был метод execute я создаю call back и соответственно вон комплит вызываю резьбу и возвращая результат. Если ошибка то резюме с exception теперь.
Главный вопрос на сколько слайдов вы от меня отстали хорошо давайте дальше но я еще забыл про call back! On консалт и тут применяется немножко другая! Стратегия то здесь уже в отличие от suspend к рутин нужно.
Вызывать suspend конце лэйбл к рутин и передается уже консолей был кантину: И шин он абсолютно похож с той разницей что у него. Появляется метод концу с которой может сказать что ваша синхронная операция отменилась и к рутины с которой вызвалась эта функция:
Ее тоже нужно отменить и остановить выполнение всего синхронного кода то есть это сводится к вызов одной операции? В нужный момент стримы данных то есть три мы данных нельзя по крыс обычный suspend функция ну потому.
Что suspend функция она возвращает либо успешно либо не успешно то есть одно значение опять же я сделал примерно 5 стрима вакууме то есть! Она выглядит как то так всегда ну похоже на риджал чтобы:
Для него сделать адаптер тут уже нам нужно будет?
Делать все через flow и опять же мы можем создать функцию а быть ее называют с flow и для того чтобы сделать мозг между нашим стримом и: И flow нам нужно вызвать специальную функцию call back flow call back flow она дает нам специальный такой продюсер скоб который является мостиком между! Flow и между нашим кодом через который мы можем выкидывать данные наружу ну тут все принципе очень похоже то было как с и воет функций то есть я.
Создаю call back в нем будут против паца соответствующие.
Вызовы в калмыки соответствующий вызова каротин скал по и в принципе. Все нечего тут подписываюсь и у меня начинается и месяца цепочка важно что здесь есть продюсер.
Скальпе можно подписаться на то когда он закончится почему это важно потому что вам нужно отписаться. В вашем исходной и синхронной операции на поставку данных потому что возможно кто-то снаружи. Остановит к рутину а вы все так же будете.
Иметь значение у вас будет crash потому?
Что вы попытаетесь займитесь значение во flow которое. Было закрыто снаружи поэтому не забывайте обязательно это делать ну конечно что дальше хочется все хочет это за интегрировать в архитектурном сделать крутой архитектуру на картинах вот.
Такой пример архитектуры был когда появились орки также components! Кто видел эту картинку вам оно понравилось когда вы ее увидели в первый.
Раз да что-то такое было что похож. Google чет у нас обманывает вот и там все было построено на лайв батах кубиках и взаимодействие. Стандартных компонентов но понятно не рекламировали свой стек но life да ты мне никогда не нравилась потому.
Что live data она хорошо ложится на модель когда.
Ты взаимодействуешь с данными для юной но в принципе для бизнес-логики они считают что правильную.
Что она проходила так не очень хорошо ну и соответственно как мы сделали мы сделали все по простому все времена. Поменяли в сон эрик джаву вот но чувство того что мы делаем?
Что-то не так и чувства совершенства понимала. Что эры java путь в никуда и мы решили переделать сон и к рутины но проблема в том что той даты в сро не смогли избавиться: Вот проблема в том что сначала у нас не было flow потом!
Flow появилась она мы уже не могли этого сделать вот но в принципе на код ленком вот в 2019 году кто-нибудь смотрел доклад.
Романа елизарова прошло а вот там вот был такой интересный спойлер. Что ребята работают над тем чтобы сделать интеграцию:
Flow для ю ай для event bass для для ивентов. Для state of и проще то есть фактически. Они заменят life дату и вот это уже на пороге.
Прям мы уже даже у себя я вот уже экспериментировать чтобы самим написать это и заменить и принципе получается?
Довольно неплохо и даже удобней потому что возможности по коммуникации через flow и channel? И котовске к в картинах намного больше.
Чем слайда ты потому что слайда той этот всегда боль концу жестко прибито гвоздями и ты прям. Вроде вроде как бы хорошо но ходишь по костру и в принципе тут можно убрать life дату все это вот здесь. Подумать на что заменить и в принципе здесь все заменяется.
На на все что нам нужно стоит flow которые. Будут event флауи channel и и в принципе у нас будут полностью архитектура вся на картинах который? Позволит нам через все слои взаимодействовать и убрать вообще зависимость от платформы потому что крутин это не является:
Платформенная вещью этапа это фича языка единственное. Что здесь проблема кто знает может что здесь.
А не life сайкл здесь остается одна часть которая меня мучает до сих пор а не настолько. Взаимодействие с ромом и своим сервисом и о а его остается старым дубовым на основе и java потоков и secu ты raw и учитывая чтобы получить. Полную эффективность прямо от и до нужно иметь возможность работать с картинами на всех слоях то есть чем больше у вас крутим.
Чем меньше варшава экзекуторов и java трудов: Тем эффективнее ваш код и вот как раз та котлин x и а она выйдет в этом году я надеюсь что она: Позволит нам избавиться полностью уже от этой прослойки повысят производительность прямо до конца это уже будет точно я вот буквально вчера.
Я записал подкаст ребятами из на бал мультиплатформа не сказали что котлин! Дата дата times и котлин а и они будут в этом году релизнут и вот так что ждем если подвести!
Все итоге принципе что получается если уже на андроиде котлин форштаг от линкору teen first это уже то что прям стучится они официально. Пока об этом не сказали но думаю ближайший гугла и изменить эту ситуацию его признают потому. Что столько сколько google и команда джет пак делает для интеграции кору since.
I happy они не делают ни для чего больше тот же рекс и посмотреть.
Сколько лет вы существует какая популярность у комьюнити но чет почему-то ничего. Не не старались там сделали пару мостиков такие ну все дальше все за вами во вторых это очень классно интеграция? С котлин наверно из моих уст это будет звучать не очень интересные прекрасно потому что я тот человек который.
Фанатика тлена но я считаю что возможность иметь нативный подход который связан с языком на глубоком.
Уровне и может использовать полностью возможности не только на уровне написание чего-то именно. На уровне компилятора это никогда ничего не сможет подобного достичь другая библиотека ну для тех. Пор пока не появятся код линком полер плагины но до этого еще долго 3 фича наверное которая сейчас будет очень важно для бизнеса.
Эта поддержка multi-platform и сейчас для бизнеса. И в принципе вообще направлении даже разговаривать 5 организаторами конференции они говорили что они сейчас активны и но доклады смотрели прочим потому что ох multi-platform.
И вообще принципе каперии использованию коды между платформами растет даже можете посмотреть на тот же бурный старт. Флаттера кто не знает про флотар вот то есть.
Про farther знают все хотя мне все его используют котлин multi-platform это тоже что активно развивается. В jetbrains даже выделили отдельную команду мобайл multi-platform для адаптации: Этого fmv даже не фреймворк это это как-то для улучшения пользовательского опыта с написанием приложений с при использовании кода между.
Android ios я очень надеюсь что ждет пока он полз станет multi-platform и в принципе остается только и вас ников убедить. Это самое сложное вот на этом у меня все всем большое спасибо. Спасибо кириллу мы успели до того как разрядит собой!
Передать передатчик вопросы спасибо за доклад под капотом мы можем сделать отдельным отдельную серию этот отдельный этап из четырех докладов на тему на самом: Деле рассказать как работают к рутину под капотом это довольно. Не просто в силу того что мало того что эта часть на уровне компилятора адаптации кода плюс то как пишется библиотекой.
Подход то есть в первую очередь пока про это нужно понять что это немножко другой подход: То есть ну нужно для меня было самое сложно вкрутим их это сломаться в плане привычного. Асинхронного подхода с java модели на к рутины и фактически к рутины простым?
Способом говорят что это такое замена callback hello когда у вас кот идет не ступенькой: Такой а выравнивается весь и под капотом работа чистым через continued шины я я наверное: Все детали не расскажу но мы вот записывали подкаст блин прямо рекламу за рекламой мы за я записывал эпизод?
Подкаста с эмиром ими усманов он занимается как раз та написанием компилятора к рутинно джаве. И вот если хочешь узнать ты прямо напиши он довольно отзывчивость. И расскажет прямо до таких деталей что ты не сможешь спать примерной система!
Да да да да да то есть за распределение:
Как будет выполняться к рутина как вообще стартует как она приостанавливается как она продолжит свое выполнен.
Отвечает крутим dispatcher это такой фактически менеджер который управляет его выполнение здесь возникает вопрос запуске скомпилирован года какой огромный запас. Но нет я вот тоже так думал я узнавал эльмира он сказал нет на самом деле таит и который мы имеем через же дикий это что мы можем использовать. На уровне байт-кода она совсем разное на уровне байт-кода можно использовать намного больше я понимаю и вот в момент когда он операционная!
Система за заказывать дополнительные потоки допустим тяжелой нагрузки не возникает ли вот здесь самый главный проблем.
Нет можете партой статус на на одном.
Потоке даже будет переключаться выполнять сахар если самый простой пример взять же с джесс работает на одном потоке к рутины джейс работают на одном потоке. Там нет многопоточности вообще но они асинхронные могут быть параллельными при компиляции дарта вгс вот:
Эта проблема она очень серьезная и как бы под неё бьются отдельные обработчики но target не поддерживается это вообще. Скотт линдос это целая беда да мы можем по это поговорить но там прям. Я не знаю это больно да спасибо за доклад а приходилось ли пользоваться приходилось ли пользоваться чернилами и если да то когда до приходилось.
Пока не появились flow но с приходом flow channel is a lie и утилитарными то есть фактически? Сейчас челы используются только для там ну для той задачи для которые!
Изначально предполагались для синхронизации между к рутинами. То есть когда у вас параллельно не работаю чтобы синхронизировать данные либо они используются под капотом у flow и это. Так и останется сейчас у даже и 5 которой была старая с операторами все на все депре кейт этом.
Прямо говорится используется flow и ч начинал это наверное самый популярный способ который мне остался пользуется братка скинул. Когда мне нужно из нескольких источников прокидывать во вне в несколько flow прошу спасибо за доклад вот ты говорил про синхронные а его и то есть понятно: Что например вот сеть ходить там retrofit сок степи они там аджарских поток халат.
Кейтон например есть он вроде полностью на картинах да он он использует и о под собой прочим да да да но есть но у них.
Есть кейтор android там клиент и он сам он patcon под собой под капотом у качестве типе держит. Это мне-то всего то есть и а его там дядя честно не очень! Уверен по поводу насколько то моего используя просто не копался в сердцах и тора не смотрел поэтому?
Не могу сказать но вот хороший point еще я не знаю вообще как они используют код linux и а потому что она multi-platform но она так. Немножко под застыла в развитии а фича в том что как только ты обновляешь какую-то библиотеку до следующей версии. Котлин считаешься все нужно обновить потому что сейчас multi-platform?
Не встретив ни встал и они могут носить брейки чем и поэтому то есть нужно обновлять все сразу и вот мне очень интересно! Как то там происходит у нас еще один вопрос: Отсюда кирилл спасибо за доклад очень интересно вопрос такой как свиньи теста мир стоит когда используешь к рутина особенно когда проверяешь интеграцию нескольких.
Слоев приложения и в каждом например своей крутин скоб и вот насколько усложняется unit-тест ну тут короче какой подход используется. Используются то что нужно дали верить все dispatcher.
И через единое место свое какой-то не использовать. Dispatcher класс а через свой какой-то и в uni тестах они просто подменяются на блокирующие плюс для каррутерс юань связанными частями jetbrains. Google сделали специальную библиотеку котлин эйк аскорутин тест который содержит себя специальные dispatcher и которые позволяют вскипеть d и который позволяет.
Приостанавливать выполнение картины продолжать чтобы провести какой-то тест и с main потоком умеет подменяется вы прочим тасс эффективно опять же работать спасибо за доклад связанных. С членами какой наиболее правильный способ для реализации из объектов в стиле крутим громко? Сцену но там есть чем чем ls3 там есть три типа чину love а4 лад 4s но для бродкаст.
А только три работает и вот фактически бродкаст channel и с разные capacity? To с разной политикой обработки входящих ивентах и то есть вот соответственно разные объекты по поводу его deprecated методов!
Чинов то есть их надо преобразовывать flow и уже в своем коде сейчас через ну например.
Сброд каас кинулась свелось к тому что у вас происходит вот у вас изба руках чем раньше. Было принцип скрип шины и пошли операторы сейчас происходит с flow она конвертится flow. И работается через него а вот сама концепция flow оно не противоречит.
Какой-то изначальной концепции крутин где такой тип асинхронный ход а тут ага я же гры java мне не не та книжка. В том что гарантируется порядок исполнения все эти концепты они загружены то есть flow это не изменение какой-то.
Концепции ли концепция параллельно это и пи ай в реактивном стиле которая построена поверх? К рутин и последний вопрос по поводу оконцева perish но я видел там показалось как делать вызов у самой картины console. А если наоборот к рутину отменили каким образом отменить операцию внутри если а если отменяется канадская раза пера если отменяется.
К рутина в силу того что в код клин крученых реализовано страх четком карен все у нее все каскадом пойдет вниз. От мнения и соответственно и верха но даже пойдет ну зависимости от того какая jobo используем супервайзер. Жопы или job для взаимодействия с принтом то есть но они полностью все это обрабатывалась truck seat конкор нести как роста.
За это отвечает и все корректно поддерживает плюс есть разные способы. Настроить это эффективно нас еще один вопрос отсюда а как обстоят.
Дела вот с поддержкой на ios там же тоже сейчас одна поточность союз были проблемы. До была короче проблема раньше что к рутины там работали но работали только в один поток для мобильников!
Это был вообще смерть потому что они еще этот мой это еще был и main поток то есть да поэтому: К рутинным там вообще не место было но с 13 60 они сделали.
Их многопоточные и это как бы приоритет для команды прочим то есть они пинают немцев но в ней тебе есть часть сложностей. Связанных с тем что определенный с мемори модель.
Определенные требования к тому как должно происходить работу. С данными из нескольких потоков с одними и теми же данными и короче куча куча.
Других особенностей которые накладывают ограничения и сейчас там даже они говорят про то что возможно будут пересматривать memory модель.
Чтобы сделать ее не такой строго и дать больше вас возможностей разработчикам. А вот 13 этаже до 13 61 сейчас стабильность с уже 13 70 должно. Подходе там просто ешь и это не закрыта:
Поэтому нет они уже делали все то есть они над этим работали. Даже вот это было одно из таких важных вещей для людей плюс до этого там уже была библиотека. Стороннего автора который сделал поддержку многопоточности это было просто не на уровне.
Компилятора и прочим а именно такой снаружи но вы сейчас уже на уровне. Компилятора сделано пока хотя нет на этих они уже работают о новом бы кэнди компилятор у них там supreme.
Прекрасно в этом случае здорово давайте поблагодарим еще раз кирилл за отличный. Доклад кирилл выбери вопрос который тебе больше.
Всего понравился на все вопросы замечать который больше всего понравился. Господи сейчас я сосредоточился ну да на вернут на поточность но и оси само их наличие такой отлично кто задавал вопрос мы туда передадим.
Друзья да наша если у вас остались вопросы я буду наступать и подходите и отвечу: Вот отличный подводка к автопати которая дальше.
Тем кому мало кто хочет пообщаться кириллом и задать? Больше вопросов парк миль минина 18б так что ждем значит тех кому не хватило: Митапа а так спасибо вам большое что пришли сегодня можно поаплодировать себе потому что вы классные спасибо вам мы вам закинем обязательно форму обратной?
Связи очень просим вас ее заполнить нам важно реально ваше мнение о том как все сегодня прошло собственно. На этом у меня все спасибо ребятам из же день жизнь его спасибо авито.
Close.