Size: a a a

Android Live 🤖

2021 January 19
Android Live 🤖
​​Удалёнка зарубежом
#stream #youtube

Одним из «трендов» ушедшего года можно назвать удалённую работу. Многие компании, которые никогда не нанимали удалённых сотрудников сейчас охотно это делают, а разработчики, которым по душе был офис привыкают к новым правилам... 🙄
Тем не менее, вопросов остаётся много, особенно если вы хотите работать удалённо с зарубежной компанией.

Давайте вместе погрузимся в тему удалёнки и поговорим о ней с разработчиком, который последние 3 года работает на зарубежные компании — Артур Бадретдинов.
Сейчас Артур является Android Team Lead в компании Squire Technologies, а за свою удалённую карьеру посетил 24 страны!🤯

Как найти такую работу, как платить налоги, как привыкнуть к разнице в часовых поясах, какие особенности в менталитете есть при работе? Эти и другие вопросы мы обсудим на YouTube канале Android Live во вторник, 26 января в 18:30.
А ещё, вы можете задать интересующие вас вопросы в форме.

Ссылка на трансляцию тут. До встречи! 😉
источник
2021 January 22
Android Live 🤖
​​На чём писать код для Android?
#benchmark

Скорость разработки напрямую зависит от машины, на которой установлена среда разработки: ведь с повышением сложности проекта растёт и время его сборки, а чем шустрее работает машина, тем больше кода мы можем написать.
Да и опытные разработчики не по наслышке знают, как много Android Studio съедает ресурсов. 🙄

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

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

Ссылка на репозиторий тут, там же и инструкция по тестированию своей машины. А тут можно почитать уже финальные результаты и решить для себя, что же прикупить для улучшения качества своей работы.
источник
Android Live 🤖
А на какой операционной системе вы работаете?
Анонимный опрос
48%
Windows
35%
Mac OS
17%
Linux
0%
Другое (сообщите в ЛС)
Проголосовало: 1299
источник
2021 January 24
Android Live 🤖
​​Android Dependency Analyzer
#tools

Ресурс, который поможет проанализировать размер зависимостей в Android-проекте: ведь размер приложения — это важная метрика.

Следует сделать два простых действия: перейти на сайт ➡️ Droidanalyser, ➡️ ввести необходимую зависимость. Опционально можно ввести адрес репозитория.

Например, можно понять, что androidx.appcompat:appcompat:1.2.0
занимает около 380 килобайт в проекте.

🔻К недостатку можно отнести относительно медленную скорость работу ресурса.

Уверен, что после анализа зависимостей вы будете внимательнее относиться к тому, стоит ли заносить в проект какую-то новую либу. 👌🏻
источник
2021 January 25
Android Live 🤖
​​Инструменты для Room
#tools #comments

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

🔹Roomigrantинструмент, который позволяет автоматически генерировать миграции для Room, используя compile-time генерацию кода. По сути, библиотека использует созданные Room схемы и делает миграцию на их основе. Не уверен, что библиотека сделает всю работу за вас, но уж точно поможет автоматизировать эту рутинную работу

🔹RoomExplorer — быстрый viewer базы данных вашего приложения в отдельной Activity. Кроме этого, можно писать запросы для базы данных и видеть результат их работы. По сути, дублирует инструмент из Android Studio, но может быть полезным в случае работы с тестовым билдом.

А какие инструменты для улучшения работы с Room вы знаете?
источник
2021 January 27
Android Live 🤖
​​Podlodka Android Crew 3 сезон

Ребята из Podlodka снова делают конференцию для Android-разработчиков. На этот раз нас ждут две недели, которые разделены на секции UI и алгоритмов.

На первой неделе рассмотрим UI: лайфхаки верстки, Constraint best practice, анимации, дизайн-системы, рендеринг UI на уровне системы. Выглядит всё довольно интересно, ведь с вёрсткой мы сталкиваемся на практике очень часто, но даже в этой области всегда есть куда расти.

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

Начало конференции — 1 февраля, а билет сейчас стоит 3900 рублей. Подробнее о программе конфереции можно почитать тут, там же можно приобрести билет.

Для подписчиков Android Live есть две крутых новости.
Во-первых, вы можете получить билет бесплатно, просто оставив свой ник в Telegram в форме до этой пятницы 29 января 18:00. Розыгрыш проведём в этот же день.
Во-вторых, есть промокод на скидку 300 рублей при покупке билета — ANDROID_LIVE_DC3.

Кстати, если вы выиграете билет в розыгрыше, но предварительно купите билет, то вам вернут за него деньги, так что нет смысла тянуть с покупкой до пятницы 😉.
источник
Android Live 🤖
​​Проясним TransactionTooLargeException
#theory

Существует ряд ошибок, которые сложно поймать при разработке или тестировании. TransactionTooLargeException относится к ним: он может не появиться каждый раз во время написания кода, но способен испортить жизнь пользователям во время использования приложения. Дополнительной проблемой является stack, который появляется после этого краша и не несёт информации о том, в каком месте приложения случился crash.

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

Кстати, одной из главных оптимизаций является передача небольшого количества данных через Bundle, но уверен, что это вы и сами знаете 😉.
источник
2021 January 28
Android Live 🤖
​​ WorkManager 2.5.0
#updates #jetpack

Вышла новая версия WorkManager — 2.5.0. Что нового:

▪️управления процессами для установки фоновой работы. Полезная штука, если ваше приложение активно использует несколько процессов, и таким образом можно улучшить производительность фоновых операций. Для этого добавили новый артифакт: androidx.work:work-multiprocess:2.5.0 и метод для установки процесса по умолчанию для работы;

▪️повысили стабильность старта JobService из ActivityManager;

▪️ уменьшили размер буфера повторяемых задач с 7 дней до 1 + продолжительность keepResultsForAtLeast. Стоит быть осторожным, если вы выполняете свои задачи раз в несколько дней;

▪️добавили WorkManager Inspector, что на мой взгляд очень крутое обновление. Пока только в alpha версиях Android Studio, но уже выглядит обещающе и улучшит процесс отладки фоновых задач.

Подробнее про изменения можно почитать тут.
источник
2021 January 29
Android Live 🤖
​​​​Результаты конкурса Podlodka Android Crew — 3 сезон
#конкурс

Итак, пришло время опубликовать результаты конкурса, который был описан тут.

В конкурсе принял участие 61 человек, при помощи генератора случайных чисел был выбран победитель — @max_ultra, с чем я его поздравляю! 🎊

Видео с выбором победителя тут. Обязательно участвуйте в новых конкурсах!
источник
2021 February 01
Android Live 🤖
Жизнь разработчика в Германии
#интервью #экспаты

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

Как всегда, она получилась объёмной и отвечает на все вопросы, которые вы задавали (и даже больше). Не скупитесь на лайки, потому что это мотивирует искать для вас авторов, а авторов — писать статьи. 🙃

Ссылка на статью тут, а вы обязательно пишите обратную связь в чат или мне в личные сообщения.
источник
2021 February 02
Android Live 🤖
​​Kotlin Delegation
#kotlin

Kotlin delegates — одна из самых недооценённых фич языка.
Для многих разработчиков они кажутся сложными, а также многие не знают, для чего именно им нужно писать свои собственные делегаты. 🙄
Но на практике Kotlin delegates оказывается весьма полезной фичей, которая упрощает код и делает его более читаемым.

По сути, делегат передаёт обращения get()и set() к свойству: причём достаточно, чтобы у класса были методы getValue() и setValue() с определённой сигнатурой, без переопределения какого-то интерфейса.

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

Ну и не забывайте про документацию, где можно также вдохновиться полезными примерами. ✌️
источник
2021 February 04
Android Live 🤖
​​Подробнее про Paging 3
#jetpack #room

Библиотека Paging 3 помогает отображать большие списки в RecyclerView. Сейчас она в статусе alpha, но уже хорошо работает.

Отмечу явные плюсы:
▪️поддержка Flow и Coroutines. Ну и кроме этого есть поддержка RxJava и LiveData, если она вам нужна;
▪️полностью написана на Kotlin;
▪️поддержка разделителей, статусов загрузки, состояний ошибки;
▪️интеграция с Room. Добавлю, что интеграция работает также и при использовании RawQuery из Room. Эта интеграция заметно упрощает работу с Paging 3.

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

Добавлю также один баг, который важно учитывать при использовании Paging 3. Эта библиотека работает некорректно, если поместить RecyclerView в ScrollView. Будьте внимательны при использовании!
источник
Android Live 🤖
​​Kotlin 1.4.30 и новый компилятор
#kotlin

Сегодня вышла новая версия языка Kotlin. Появилось достаточно много изменений: ▪️inline-интерфейсы;
▪️изменения в работе inline-классов;
▪️поддержка JVM records.
Полный список изменений можно найти тут.

Плюс к этому JVM IR backend компилятор перешёл в стадию beta 🎊.
О новом компиляторе говорят уже давно, и вообще он обещает быть интересным. Однако, для начала, надо убедиться, что он достаточно стабилен для public релиза. И это то, где вы можете помочь ему стать лучше 📈.

Сделать это достаточно просто:
1️⃣Включите новый компилятор его в своём конфиг файле и соберите проект хотя бы раз. В идеале включить его по умолчанию для вашего проекта, потому что не только сборка, но и дебаг имеют значение в этом тестировании.
2️⃣В случае если будут баги, то можно репортить их в Youtrack или публичный Slack Kotlin.

Давайте вместе доведём новый JVM IR backend до стабильного состояния!
источник
2021 February 05
Android Live 🤖
​​Как попасть в FAANG?
#youtube

Разработчикам знакома аббревиатура FAANG: это первые буквы названий известных нам Facebook, Apple, Amazon, Netflix и Google. Работа в этих компаниях — достойное продолжение карьеры и цель для многих девелоперов.

Но есть много вопросов:
▪️какой уровень знаний должен быть, чтобы попасть туда?
▪️как проходит этап собеседования?
▪️как правильно «продать себя» компании и не прогадать с зарплатой?
▪️какие есть особенности в корпоративной культуре?
▪️как вообще найти подобную вакансию?

Вопросов много, а ответы в сети есть не на все. 🤷🏼‍♂️
Исправляем эту досадную оплошность и поговорим с сотрудниками этих корпораций, готовыми поделиться опытом.

Наш спикер — Инесса Бухонова, работающая Web-разработчиком в мадридском Tech Hub Amazon. До этого она 7 лет занималась разработкой под Android.

Увидимся 13 февраля в 18:00 по МСК на YoutTube-канале Android Live.
Ссылка на трансляцию тут, а у вас есть возможность задать свои вопросы тут.
источник
2021 February 08
Android Live 🤖
​​Модуляризация Android-приложений
#architecture

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

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

Во второй и третьей частях рассматривается пример ручной и ленивой илициализации модулей их их сбрасывания.
источник
2021 February 09
Android Live 🤖
​​Фидбек о канале. Пожалуйста не проходите мимо этого поста.

Всем привет. Это @al_gorshkov, автор этого канала и мне нужна ваша помощь.

Мне супер приятно получать от вас обратную связь в личных сообщениях. Это мотивирует и даёт понимание того, что то, что ты делаешь — не зря. И сейчас мне хотелось бы чуть больше понимать, в какую сторону двигаться дальше.

Я создал небольшую форму с вопросами о Telegram и YouTube каналах. Пожалуйста, ответь на вопросы, ведь всё анонимно, а заполнение займёт буквально 2 минуты. А мне даст мотивацию радовать вас еще более качественным контентом на канале. 🤝

Давайте вместе сделаем Android Live ещё лучше!
источник
2021 February 11
Android Live 🤖
​​KMM, Swift UI и Jetpack Compose
#compose #kmm #crossplatform

Мы с вами уже не раз обсуждали Jetpack Compose на канале, и даже провели шикарную live-coding сессию, которую можно посмотреть тут.

Кроме просто замены xml-подхода в нативной разработке, Compose отлично стыкуется с KMM и UI-слоем для Android. Ну а для UI-слоя на iOS подходит Swift UI, который тоже является декларативным фреимворком.

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

В любом случае, статья даёт возможность пощупать классные технологии. А запустить приложение, написанное при помщи Kotlin на iOS — бесценно.😁
источник
2021 February 12
Android Live 🤖
​​Как сделать адаптеры в RecyclerView лучше?
#kotlin #recyclerview

При написании стандартных адаптеров в RecyclerView, мы часто сталкиваемся с дублированием кода. Особенно это заметно при использовании разных ViewType. Думаю, что многим знаком подобный код:

if (things.get(position) is Duck) {
   return TYPE_DUCK
} else if (things.get(position) is Mouse) {
   return TYPE_MOUSE
}


То есть при добавлении нового элемента в список, нам нужно менять адаптер в нескольких местах.

Существует несколько способов улучшения работы с адаптерами:

1️⃣ Использование layout в качестве идентификатора. Стоит помнить, что layout — это уникальный int, который можно использовать в качестве идентификатора. В этой статье автор предлагает использовать TypeFactory, где можно перечислить всю логику работы с идентификаторами для адаптера, и в случае добавления нового элемента – просто дописать строку в этой Factory. Хороший подход, который можно улучшить и использовать без добавления библиотек.

2️⃣ Использование Delegate для описание логики ViewHolder. Второй подход схож с первым. Можно прописать всю логику для работы с ViewHolder в одном классе Delegate. Потом просто регистрировать подходящие делегаты для нужного адаптера, не думая про имплементацию. Почитать подробнее про подход можно тут и уже есть библиотека, которую стоит изучить прежде чем затягивать к себе в проект.

3️⃣ Использование библиотек. Во втором подходе уже был описан пример созданной библиотеки, но кроме неё есть ещё их огромное множество. На мой взгляд, удачная библиотека описана в этой статье и называется Kiel. При помощи Kotlin DSL наш адаптер становится компактным, а кроме этого мы можем использовать библиотеку как с Paging Library, так и с Diff Utils. Стоит обратить внимание и применить подобный подход для своих приложений, если вам нравится DSL.

А как вы улучшаете свои адаптеры?
источник
Android Live 🤖
Как попасть в FAANG. Перенос на 27 февраля
#youtube

Друзья, у нас появились некоторые изменения, связанные с предстоящим стримом, описанным тут. Вместо 13 февраля в 18:00 по МСК, стрим пройдёт 27 февраля в 18:00 по МСК.

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

Положительным моментом является то, что вы можете задать ещё больше вопросов про работу в этих компаниях 😉.

И извиняюсь за этот перенос🙏.
Telegram
Android Live 🤖
​​Как попасть в FAANG?
#youtube

Разработчикам знакома аббревиатура FAANG: это первые буквы названий известных нам Facebook, Apple, Amazon, Netflix и Google. Работа в этих компаниях — достойное продолжение карьеры и цель для многих девелоперов.

Но есть много вопросов:
▪️какой уровень знаний должен быть, чтобы попасть туда?
▪️как проходит этап собеседования?
▪️как правильно «продать себя» компании и не прогадать с зарплатой?
▪️какие есть особенности в корпоративной культуре?
▪️как вообще найти подобную вакансию?

Вопросов много, а ответы в сети есть не на все. 🤷🏼‍♂️
Исправляем эту досадную оплошность и поговорим с сотрудниками этих корпораций, готовыми поделиться опытом.

Наш спикер — Инесса Бухонова, работающая Web-разработчиком в мадридском Tech Hub Amazon. До этого она 7 лет занималась разработкой под Android.

Увидимся 13 февраля в 18:00 по МСК на YoutTube-канале Android Live.
Ссылка на трансляцию тут, а у вас есть возможность задать свои вопросы тут.
источник
2021 February 16
Android Live 🤖
​​Миграция с SharedPreferences на Jetpack DataStore
#jetpack

Новая библиотека от Google призвана заменить уже давно знакомую библиотеку для хранения небольших данных — SharedPreferences.

Она существует в двух версиях: Preferences DataStore и Proto DataStore. Первая — даёт возможность хранить и получать доступ к данным по ключу, не требует предварительной схемы данных и не предоставляет type safety. Вторая — требует предварительную схему данных через protocol buffer, но при этом предоставляет type safety.

Почему же Google покусились на давно известную библиотеку? Главная проблема — это то, что при чтении данных из SharedPreferences необходимо открыть файл, где хранятся эти значения, и теоретически это может привести к ANR, если вызвать чтение из UI-потока.
Также в SharedPreferences нет type safety, что может привести к ошибкам во время работы приложения и крашам.

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

В целом, пока эта библиотека в alpha-версии, поэтому стоит внимательно тащить её в основной проект. Уже есть обёртки для RxJava 2 и 3 версии, если вы используете эти библиотеки. Но если думаете мигрировать — вот краткий гайд, который расскажет, как это сделать. Выглядит достаточно просто, поэтому проблем быть не должно. 🤞🏻
источник