Продолжение серии статей про техническое устройство Fleet – новой IDE от JetBrains. В этой части рассказывается, как работает редактор кода, его рендеринг и какие структуры данных используются под капотом.
The JetBrains Blog
Fleet Below Deck, Part II - Breaking down the editor | The Fleet Blog
This is a multipart series on building Fleet, a next generation IDE by JetBrains. Part I - Architecture OverviewPart II - Breaking down the editorPart III – State ManagementPart IV – Distributed Tr
Большой разбор того, как Anvil делает проще работу с Dagger:
- Хорошая поддержка модуляризации
- Уменьшение времени сборки
- Кастомные плагины
- Хорошая поддержка модуляризации
- Уменьшение времени сборки
- Кастомные плагины
Medium
Dagger + Anvil: Learning to Love Dependency Injection on Android
Dagger + Anvil has been working so well for us at Tonal that we wanted to share our learnings with the Android community.
Смотрите, какая кайфовая анимация и параллакс у карточки на Jetpack Compose! Код можно посмотреть тут.
Twitter
Prafull Mishra ⚒️
Here's another cool (or hot?) #JetpackCompose post 🔥🔥 An interactive parallax effect that rotates around in response to user's input gesture!🤩🎉 What do you peeps say? (Inspired from a Procreate+Playground post by @VPoltrack ) #AndroidDev #Kotlin #Android
Альфа-Инвестиции приглашают iOS/Android-разработчиков на One Day Offer 19 марта. Все этапы интервью – за один день, оффер — за сутки. Ваш уровень – middle/senior, опыт в коммерческой разработке – от двух лет.
Подать заявку
Подать заявку
Подборка частых вопросов про то, как писать Gradle плагины, разбор разных подходов к их реализации и типичных ошибок.
А если вы взялись писать свой плагин, то вот еще один материал про то, как его протестировать с помощью фреймворка TestKit.
А если вы взялись писать свой плагин, то вот еще один материал про то, как его протестировать с помощью фреймворка TestKit.
GitHub
GitHub - jjohannes/gradle-plugins-howto: How to write Gradle plugins - answers to common questions and alternative implementation…
How to write Gradle plugins - answers to common questions and alternative implementation solutions - jjohannes/gradle-plugins-howto
Вам приходилось писать собственные Gradle плагины?
Anonymous Poll
4%
Да, часто
15%
Да, но всего пару раз
13%
Только игрался с API, ничего серьезного не делал
59%
Нет
8%
Посмотреть результаты
Работа со скроллом в Compose не совсем очевидна. В статье автор делится тем, как правильно определять текущую позицию и скроллить к определенному элементу списка при появлении клавиатуры.
Хабр
Погружаемся в работу со скроллом в Jetpack Compose
В этой статье я хочу поделиться опытом работы со скроллом в приложении, написанном на Jetpack Compose. Какое-то время назад я решил, что надо попробовать Compose в деле и начал делать pet project...
Гайд по работе с Glance – новым фреймворком для создания AppWidgets и Tiles для Wear OS, построенным поверх рантайма Compose.
Medium
Demystifying Jetpack Glance for app widgets
We recently announced the first Alpha version of Glance, initially with support for AppWidgets and now for Tiles for Wear OS. This new…
Meta добавили в Infer новый статический анализатор, который умеет находить дедлоки в Java коде без его запуска. Ключевая особенность в том, что он хорошо умеет работать с огромными кодовыми базами. Особенно рекомендую почитать подробную бумагу с деталями реализации алгоритма его работы.
Engineering at Meta
An open source compositional deadlock detector for Android Java
What the research is: We’ve developed a new static analyzer that catches deadlocks in Java code for Android without ever running the code. What distinguishes our analyzer from past research is its …
Если вы страдаете от долгого времени сборки, то вам могут помочь эти советы:
- Часть 1
- Часть 2
- Часть 3
- Часть 1
- Часть 2
- Часть 3
Medium
10 ideas to improve your Gradle build times [Part I]
Reduce your Gradle build times on android & non-android projects with these great ideas
Изменениями модификатора
graphicsLayer
в Compose можно добиваться разных кайфовых анимаций. В статье на гифках показывается, какие эффекты вызывает изменение каждого из его свойств.Medium
Have Fun With Jetpack Compose GraphicsLayer Modifier
Create interesting animation with GraphicsLayer Modifier
Barista – обертка над Espresso, упрощающая написание и поддержку UI тестов. Среди ее фичей:
🤝 Много хелперов, делающих код поиска и взаимодействия с элементами более читаемым
📝Автоматический скролл перед взаимодействиями с View тогда, когда он необходим
🐞Простая настройка стратегий поведения для flaky тестов
🤝 Много хелперов, делающих код поиска и взаимодействия с элементами более читаемым
📝Автоматический скролл перед взаимодействиями с View тогда, когда он необходим
🐞Простая настройка стратегий поведения для flaky тестов
Medium
Barista — Enjoyable Espresso Android UI Tests
Barista makes developing UI tests faster, easier, and more predictable. Built on top of Espresso, it provides a simple and discoverable…
Команда Dropbox рассказывает, как они переписывали фичу по автоматической загрузке фотографий в облако с C++ на Kotlin. Архитектура дизайнилась с учетом следующих требований:
📌Надежность работы в бэкграунде
📌Скорость загрузки фото и низкое потребление ресурсов
В статье рассказывается, как конкретно выбирался стек технологий, с какими проблемами столкнулась команда при реализации модуля, его тестировании и выкатке.
📌Надежность работы в бэкграунде
📌Скорость загрузки фото и низкое потребление ресурсов
В статье рассказывается, как конкретно выбирался стек технологий, с какими проблемами столкнулась команда при реализации модуля, его тестировании и выкатке.
dropbox.tech
Making camera uploads for Android faster and more reliable
«Лаборатория Касперского» ищет C/C++ Developer for IoT (mobile)
Работа в «Лаборатории Касперского» — это не только масштабные задачи, но и приятные бонусы: бесплатное обучение, расширенный ДМС со стоматологией, спортзалы прямо в офисе, а еще — программа релокации для кандидатов из регионов и не только.
Если вы:
— имеете опыт программирования на Dart\Flutter;
— умеете программировать на C/C++ или Java/Kotlin;
— пробовали себя в мобильной разработке (Android\iOS) или хотите сделать это направление приоритетным,
то переходите по ссылке, чтобы ознакомиться с подробной информацией о вакансии и присоединиться к команде лучших экспертов.
Работа в «Лаборатории Касперского» — это не только масштабные задачи, но и приятные бонусы: бесплатное обучение, расширенный ДМС со стоматологией, спортзалы прямо в офисе, а еще — программа релокации для кандидатов из регионов и не только.
Если вы:
— имеете опыт программирования на Dart\Flutter;
— умеете программировать на C/C++ или Java/Kotlin;
— пробовали себя в мобильной разработке (Android\iOS) или хотите сделать это направление приоритетным,
то переходите по ссылке, чтобы ознакомиться с подробной информацией о вакансии и присоединиться к команде лучших экспертов.
careers.kaspersky.ru
Карьера в ЛК
Карьера в Лаборатории Касперского
Реализация гибкой стратегии кеширования запросов при работе с GraphQL – нетривиальная задача, ведь каждый запрос может включать в себя как кешируемые публичные, так и некешируемые приватные данные. В статье приводится пример того, как можно разбивать такие запросы на несколько частей и мерджить их с помощью Kotlin Flows.
Google открыл доступ к API для получения данных Android Vitals. Из идей, как его можно использовать:
💡Поднять свой кастомный дэшборд про качество приложения, добавив туда данные из багтрекера, саппорта и аналитики
💡Настроить алерты в мессенджере по изменению нужных вам метрик
💡Залить данные в DWH, чтобы использовать их при проверке будущих продуктовых гипотез
Документация API
💡Поднять свой кастомный дэшборд про качество приложения, добавив туда данные из багтрекера, саппорта и аналитики
💡Настроить алерты в мессенджере по изменению нужных вам метрик
💡Залить данные в DWH, чтобы использовать их при проверке будущих продуктовых гипотез
Документация API
Android Developers Blog
Access Android vitals data through the new Play Developer Reporting API
Posted by Lauren Mytton, Product Manager, Google Play Quality is foundational to your game or app’s success on Google...
Вышла новая предрелизная версия Kotlin 1.6.20-RC с исправлениями багов в компиляторе и интеграции с Gradle.
Попробовать ее довольно просто, инструкция здесь.
Попробовать ее довольно просто, инструкция здесь.
GitHub
Release Kotlin 1.6.20-RC2 · JetBrains/kotlin
Changelog
Compiler
Fixes
KT-51352 "ClassCastException: class ScopeCoroutine cannot be cast to class Iterable" caused by coroutines and context receivers
KT-51271 "ArrayIndexOutOfBou...
Compiler
Fixes
KT-51352 "ClassCastException: class ScopeCoroutine cannot be cast to class Iterable" caused by coroutines and context receivers
KT-51271 "ArrayIndexOutOfBou...
Merge queue – это практика работы с Git, которая облегчает жизнь с большим количеством веток, в которых меняются одни и те же файлы.
В чем суть проблемы – у вас может в один и тот же момент времени висеть сразу несколько веток с зелеными тестами относительно текущего состояния main. Но как только одна из веток будет слита, все остальные станут красными.
Merge queue решает проблему следующим образом. Все PR попадают в единую очередь. Валидность кода в PR проверяется относительно main, в который будут слиты все предыдущие ветки из очереди. Если PR остается зеленым, то он сольется автоматически. Если нет – то либо заблокирует очередь, либо будет автоматически выкинут из нее.
В чем суть проблемы – у вас может в один и тот же момент времени висеть сразу несколько веток с зелеными тестами относительно текущего состояния main. Но как только одна из веток будет слита, все остальные станут красными.
Merge queue решает проблему следующим образом. Все PR попадают в единую очередь. Валидность кода в PR проверяется относительно main, в который будут слиты все предыдущие ветки из очереди. Если PR остается зеленым, то он сольется автоматически. Если нет – то либо заблокирует очередь, либо будет автоматически выкинут из нее.
Runway
Merge queues: An intro for mobile engineers | by Runway
As a mobile engineer, it’s quite possible you’ve never used, or even heard of, merge queues. This might be due in part to the fact that mobile teams traditionally move a bit slower than their web counterparts (merge queues are more often employed by teams…
Пример использования Kotlin DSL вместе с Kotlin Scripting для того, чтобы реализовать удобный трекер личных финансов.
scastiel.dev
Combining scripts and DSLs is Kotlin’s most underrated feature
The more I play with Kotlin, the more convinced I am that a combo of two of its features is vastly underrated: first, the ability to create domain-specific languages (DSL), thanks to some syntactic sugar; then, the ability to write scripts and create interpreters…
Android разработчик, разрабатывающий приложения на Compose, попробовал SwiftUI и написал хороший пост со сравнением двух фреймворков. Отличий не очень много, но в целом разрабатывать под SwiftUI проще, так как он заточен под одну конкретную платформу.
Medium
SwiftUI vs Jetpack Compose by an Android Engineer
If you think it is a good idea to use Jetpack Compose (or any other multi-platform UI library like Flutter or React Native) to build an…