Недавно Google выпустил гайд по тому, как правильно подходить к архитектуре UI слоя. Держите хорошую статью с обзором сильных и слабых сторон этих рекомендаций. И помните, что архитектура должна в первую очередь не соответствовать написанным кем-то универсальным правилам, а решать ваши специфичные задачи.
https://www.droidcon.com/2022/01/14/sending-viewmodel-events-to-the-ui-in-android/
https://www.droidcon.com/2022/01/14/sending-viewmodel-events-to-the-ui-in-android/
droidcon
Sending ViewModel Events to the UI in Android
It’s been almost a year since I wrote an article on how I handle the communication pattern of sending one-shot actions from an Android view model to it’s associated view such as a fragment or activity.
Вместе с релизом Kotlin 1.6 был представлен новый Gradle-плагин Kover, измеряющий тестовое покрытие Kotlin кода. Он все еще экспериментальный, но в целом его спокойно можно использовать в своих проектах. Держите статью с хорошим обзором его интеграции с проектом и GitHub Actions.
https://lengrand.fr/kover-code-coverage-plugin-for-kotlin/
https://lengrand.fr/kover-code-coverage-plugin-for-kotlin/
Julien's DevRel corner
Kover : Code Coverage plugin for Kotlin
Kover is a code coverage tool for Kotlin. It's still in incubator phase but I took it for a spin and it is already very useful as part of local or CI workflows! In this article I go through the setup and some of my favourite goodies of the tool.
А раз уж мы заговорили про GitHub Actions, то вот вам еще один классный инструмент, который позволяет настраивать воркфлоу с помощью Kotlin DSL вместо YAML.
https://github.com/krzema12/github-actions-kotlin-dsl
https://github.com/krzema12/github-actions-kotlin-dsl
GitHub
GitHub - typesafegithub/github-workflows-kt: Authoring GitHub Actions workflows in Kotlin. You won't go back to YAML!
Authoring GitHub Actions workflows in Kotlin. You won't go back to YAML! - GitHub - typesafegithub/github-workflows-kt: Authoring GitHub Actions workflows in Kotlin. You won't go back to YAML!
Представьте, что вы разрабатываете библиотеку, которая под капотом работает с одним или несколькими сторонними сервисами. Например, GitHub или AirTable. Вы хотите спрятать от пользователя сложность взаимодействия с их API и дать ему простой интерфейс, но абстракция протекает из-за ошибок и исключений, которые могут генерироваться этими интеграциями. Держите статью про основанный на монадах подход, который позволяет аккуратно процессить эти исключения на уровне библиотеки.
https://www.cortex.io/post/how-we-expect-the-unexpected-in-kotlin
https://www.cortex.io/post/how-we-expect-the-unexpected-in-kotlin
www.cortex.io
How we expect the unexpected in Kotlin | Cortex
`IntegrationValue` is a type that can return any value but encapsulates all possible errors from 3rd party integrations. It allows us to handle expected and unexpected exceptions and errors gracefully and surface clean error messages to our customers when…
Большой гайд по организации certificate pinning с учетом разных версий Android.
https://www.guardsquare.com/blog/how-to-securely-implement-tls-certificate-checking-in-android-apps
https://www.guardsquare.com/blog/how-to-securely-implement-tls-certificate-checking-in-android-apps
Guardsquare
How to Implement Android TLS Certificate Checking | Guardsquare
Learn how to avoid potential android TLS certificate issues and tighten the security process using android certificate transparency in an application.
В начале прошлой недели я шарил гайд по работе с Baseline Profiles. А тут и кейс-стади от Google Maps опубликовали, которые, благодаря этой фиче, ускорили время старта приложения на 30%. Кайф!
https://android-developers.googleblog.com/2022/01/improving-app-performance-with-baseline.html
https://android-developers.googleblog.com/2022/01/improving-app-performance-with-baseline.html
Android Developers Blog
Improving App Performance with Baseline Profiles
Or how to improve startup time by up to 40% Posted by Kateryna Semenova, DevRel Engineer; Rahul Ravikumar, Software Engineer; Chris Crai...
А вы занимаетесь оптимизацией времени запуска своего приложения?
Anonymous Poll
31%
Не оптимизируем
38%
Иногда оптимизируем, но сильно не заморачиваемся
12%
Регулярно оптимизируем и следим за изменениями
20%
Посмотреть результаты
Спасибо всем, кто поучаствовал в недавнем опросе подписчиков! Как и обещал, среди участников провел розыгрыш билетов на Android Crew (их получают @mikhailzisman и @Froyder) и книги "Код: Тайный язык информатики" (она улетает @dosssik). И несколько интересных фактов из опроса:
👀 31% подписчиков – сеньоры, а 56% работают в IT больше четырех лет.
📖 Три самых запрашиваемых темы – Kotlin, архитектура и Tips&Tricks по разработке.
😞 Наименее интересная тема – кроссплатформа.
Всем победителям скоро напишу в личку, а всем остальным – много любви и благодарностей!
👀 31% подписчиков – сеньоры, а 56% работают в IT больше четырех лет.
📖 Три самых запрашиваемых темы – Kotlin, архитектура и Tips&Tricks по разработке.
😞 Наименее интересная тема – кроссплатформа.
Всем победителям скоро напишу в личку, а всем остальным – много любви и благодарностей!
podlodka.io
Онлайн-конференция Podlodka Android Crew, сезон #13
Недельное мероприятие от команды Podlodka: ежедневные интерактивные сессии в Zoom по актуальным проблемам Android-разработки, нон-стоп общение с экспертами и звёздами индустрии, закрытое профессиональное сообщество в Telegram.
Отличный материал про использование профилировщика Perfetto для анализа того, что происходит и сколько времени занимает при выполнении каких-то действий с приложением. Помимо общей инструкции по использованию, разбирается как сделать отчет более читаемым с помощью логов.
https://py.hashnode.dev/tracing-main-thread-messages
https://py.hashnode.dev/tracing-main-thread-messages
P-Y's blog
Tracing main thread messages in Perfetto
This blog shows how to see what the main thread is doing in Perfetto traces by leveraging a seldom-used Looper logger API.
Задумались о переходе на Jetpack Compose? Тогда вам обязательно нужно попасть на новый сезон Podlodka Android Crew, который начинается 14 февраля! Всего за 5 дней вместе мы составим подробный пошаговый план перехода на Compose.
Вы узнаете как перевести UI приложения с XML и AppCompat на Compose, посмотрите на практические кейсы и набитые шишки экспертов, разберетесь с навигацией, анимацией, узнаете, как правильно сохранять состояние в приложении и всем, что необходимо для комфортного перехода. И все это в формате воркшопов с множеством кейсов-примеров, которые вы сразу сможете применять.
Всего на Podlodka Android Crew выступит больше 10 спикеров, среди которых Павел Стрельченко из HeadHunter Group, Антон Шилов из Badoo, Андрей Шиков из Facebook, Алексей Гладков из Леруа Мерлен, Миша Левченко из Auto.ru.
Чтобы купить билет, заходите на наш сайт! Успейте купить пока действует специальное предложение для early-bird — только до 2 февраля! Ждем вас на борту!
Вы узнаете как перевести UI приложения с XML и AppCompat на Compose, посмотрите на практические кейсы и набитые шишки экспертов, разберетесь с навигацией, анимацией, узнаете, как правильно сохранять состояние в приложении и всем, что необходимо для комфортного перехода. И все это в формате воркшопов с множеством кейсов-примеров, которые вы сразу сможете применять.
Всего на Podlodka Android Crew выступит больше 10 спикеров, среди которых Павел Стрельченко из HeadHunter Group, Антон Шилов из Badoo, Андрей Шиков из Facebook, Алексей Гладков из Леруа Мерлен, Миша Левченко из Auto.ru.
Чтобы купить билет, заходите на наш сайт! Успейте купить пока действует специальное предложение для early-bird — только до 2 февраля! Ждем вас на борту!
podlodka.io
Онлайн-конференция Podlodka Android Crew, сезон #13
Недельное мероприятие от команды Podlodka: ежедневные интерактивные сессии в Zoom по актуальным проблемам Android-разработки, нон-стоп общение с экспертами и звёздами индустрии, закрытое профессиональное сообщество в Telegram.
С февраля вам обязательно нужно заполнять «Google Data Safety Section» при обновлении приложения, и указывать, как вы работаете с пользовательскими данными. И если про свое приложение все относительно понятно, то со сторонними SDK могут возникнуть проблемы, особенно если в их документации пока нет ни слова про персональные данные. Держите поддерживаемый сообществом реестр информации про популярные библиотеки.
https://github.com/Privado-Inc/SDK-Privacy-Report
https://github.com/Privado-Inc/SDK-Privacy-Report
GitHub
GitHub - Privado-Inc/SDK-Privacy-Report: Privacy details of SDKs for Apple Privacy Nutrition & Google Safety Section disclosure.
Privacy details of SDKs for Apple Privacy Nutrition & Google Safety Section disclosure. - Privado-Inc/SDK-Privacy-Report
Основной сценарий использования Kotlin Multiplatform – это выделение какого-то компонента бизнес-логики в общий модуль, который затем шарится между платформами. С таким подходом хорошее тестовое покрытие становится важным вдвойне. Держите очень подробный гайд по тому, как подойти к тестированию мультиплатформенного модуля – разбираются и юнит-тесты, и контракты.
https://akjaw.com/testing-on-kotlin-multiplatform-and-strategy-to-speed-up-development/
https://akjaw.com/testing-on-kotlin-multiplatform-and-strategy-to-speed-up-development/
AKJAW
Testing on Kotlin Multiplatform and a Strategy to Speed Up Development Time (2023 Update)
Automated tests are an integral part of developing software, they help catch bugs before they reach the users and save developers time by cutting down manual testing.
Если вам когда-нибудь нужно будет реализовывать полнотекстовый поиск – посмотрите на новую библиотеку lucilla.
https://github.com/haroldadmin/lucilla
https://github.com/haroldadmin/lucilla
GitHub
GitHub - haroldadmin/lucilla: Fast, efficient, in-memory Full Text Search for Kotlin
Fast, efficient, in-memory Full Text Search for Kotlin - GitHub - haroldadmin/lucilla: Fast, efficient, in-memory Full Text Search for Kotlin
Чистый код – это очень расплывчатое понятие (как и архитектура, кек). В каком бы контексте оно не использовалось, полезно пытаться выделить конкретные качества кода, о которых идет речь: читаемость, переиспользуемость, консистентность, тестируемость. Посмотрите на неплохую статью с критикой термина и пополните свой словарик для комментариев на code review.
https://www.steveonstuff.com/2022/01/27/no-such-thing-as-clean-code
https://www.steveonstuff.com/2022/01/27/no-such-thing-as-clean-code
➡️ Делаем оффер iOS- и Android-разработчикам за один день. Приглашаем в команды Мобильного банка, Тинькофф Инвестиций, Тинькофф Бизнеса и еще трех проектов.
Вы — в течение одного дня общаетесь с нашей командой. Мы — делаем оффер, если работа подойдет вам по условиям, а задачи — по скиллам.
🖇 Все будет онлайн, 19 февраля. Заявки принимаем до 15 февраля включительно. Подробности и регистрация по ссылке: https://l.tinkoff.ru/offer-mobile
Вы — в течение одного дня общаетесь с нашей командой. Мы — делаем оффер, если работа подойдет вам по условиям, а задачи — по скиллам.
🖇 Все будет онлайн, 19 февраля. Заявки принимаем до 15 февраля включительно. Подробности и регистрация по ссылке: https://l.tinkoff.ru/offer-mobile
Есть бесконечность подходов к тому, как организовать навигацию в Compose проекте. В статье рассматривается большая часть из них, в заодно и систематизируется в виде списка критериев выбора подходящего решения.
https://commonsware.com/blog/2022/01/22/navigating-compose-criteria.html
https://commonsware.com/blog/2022/01/22/navigating-compose-criteria.html
CommonsWare: Android App Development Books
Navigating in Compose: Criteria
There are lots of solutions for navigating between
В следующий четверг, 10 февраля, ребята из VK проводят Android митап с темами про работу с GraphQL, реверс-инжиниринг мобильных приложений с помощью Frida и интеграцией общего SDK сразу во много приложений.
Регистрация с доступом к чату и викторине – здесь, а трансляции можно дожидаться вот тут.
Регистрация с доступом к чату и викторине – здесь, а трансляции можно дожидаться вот тут.
vk.company
VK / VK Tech Talks · Android
10 февраля в 18:00 приходите на митап от команды VK. В этот раз поговорим про разработку на Android.
А вдогонку – разбор одного из подходов, с навигацией через стейт ViewModel.
https://medium.com/@ffvanderlaan/navigation-in-jetpack-compose-using-viewmodel-state-3b2517c24dde
https://medium.com/@ffvanderlaan/navigation-in-jetpack-compose-using-viewmodel-state-3b2517c24dde
Medium
Navigation in Jetpack Compose using ViewModel state
In this article, we will show an example of using a ViewModel to initiate navigation in Jetpack Compose. For this, we use navigation state…
В последних версиях Android довольно сильно изменилось поведение диплинков. По ссылке – обзор этих измений и план по тому, как адаптировать к ним ваш проект.
https://doordash.engineering/2022/01/25/your-deep-links-might-be-broken-web-intents-and-android-12/
https://doordash.engineering/2022/01/25/your-deep-links-might-be-broken-web-intents-and-android-12/
DoorDash
Your Deep Links Might Be Broken: Web Intents and Android 12
Get ahead of the behavior changes in the latest Android 12 update by fixing deep links with web intents in this guide
Пошаговый гайд по реализации автоматического импакт-анализа для тестов. Это техника, которая позволяет запускать только те тесты, которые тестируют затронутый изменением код. Авторы говорят, что в их случае экономится около 30% времени прогона.
https://habr.com/ru/company/citymobil/blog/647519/
https://habr.com/ru/company/citymobil/blog/647519/
Хабр
Импакт-анализ на примере Android-проекта
Одной из самых дорогих по времени операций на CI-сервере является прогон автотестов. Есть множество способов их ускорения, например, распараллеливание выполнения по нескольким CI-агентам и/или...