Запуск third-party инструментов из Android Studio
В Android Studio можно настраивать External Tools – по сути, запуск любого стороннего исполняемого файла с аргументами с помощью иконки в тулбаре или хоткея.
В Android Studio можно настраивать External Tools – по сути, запуск любого стороннего исполняемого файла с аргументами с помощью иконки в тулбаре или хоткея.
Как CompositionLocal может помочь с аналитикой
CompositionLocal – это API в Compose, который позволяет получить доступ к каким-то данным из любого Composable без необходимости передачи их вручную через параметры функции. Пример использования – работа с темами.
CompositionLocal удобен и для того, чтобы настроить аналитику – ведь ее инициализация находится где-то в точке общей конфигурации приложения, а непосредственное логивание событий – в листьях дерева нод.
CompositionLocal – это API в Compose, который позволяет получить доступ к каким-то данным из любого Composable без необходимости передачи их вручную через параметры функции. Пример использования – работа с темами.
CompositionLocal удобен и для того, чтобы настроить аналитику – ведь ее инициализация находится где-то в точке общей конфигурации приложения, а непосредственное логивание событий – в листьях дерева нод.
Как в N26 подошли к автоматизации Gradle бенчмарков
Слайды отличного доклада про то, как команда N26 решала задачу автоматизации бенчмарков для большой команды.
Слайды отличного доклада про то, как команда N26 решала задачу автоматизации бенчмарков для большой команды.
Снепшот-тесты для Android
- Такие тесты позволяют хорошо контролировать регрессии на экранах, которые редко изменяются
- QuickBird выпустили библиотеку kotlin-snapshot-testing, которая позволяет легко писать такие тесты
- Она автоматически записывает целевое состояние экрана и строит визуальный дифф, если оно изменится
- Такие тесты позволяют хорошо контролировать регрессии на экранах, которые редко изменяются
- QuickBird выпустили библиотеку kotlin-snapshot-testing, которая позволяет легко писать такие тесты
- Она автоматически записывает целевое состояние экрана и строит визуальный дифф, если оно изменится
Релиз Kotlin 1.7.20-Beta
На прошлой неделе вышла первая Beta нового релиза Kotlin. В ней можно потрогать большинство фич, которые войдут в релизную версию, проверить, собирается ли ваш проект, и порепортить найденные баги.
- Новый оператор ..<, который заменяет until, и сильно увеличивает читаемость кода в связке с ..
- K2 уверенно движется к Beta, добавив поддержку многих компиляторных плагинов
- Новая мемори модель в Kotlin/Native теперь включена по умолчанию
- Детальный What’s new
На прошлой неделе вышла первая Beta нового релиза Kotlin. В ней можно потрогать большинство фич, которые войдут в релизную версию, проверить, собирается ли ваш проект, и порепортить найденные баги.
- Новый оператор ..<, который заменяет until, и сильно увеличивает читаемость кода в связке с ..
- K2 уверенно движется к Beta, добавив поддержку многих компиляторных плагинов
- Новая мемори модель в Kotlin/Native теперь включена по умолчанию
- Детальный What’s new
Zipline – библиотека для простой интеграции Kotlin/JS кода в Kotlin/JVM
Большой плюс Kotlin/JS – что его можно распространять и подгоужать в приложение в обход стандартного релиза через Google Play. Zipline помогает с бриджингом и исполнением Kotlin/JS кода из ваших нативных приложений.
Вот где это может пригодиться:
- Различные системы плагинов, которые пользователи устанавливают сами
- Обновление бизнес-логики, например, расчета цен
- Подгружаемый игровой контент
- Реализация системы continuous deployment
Большой плюс Kotlin/JS – что его можно распространять и подгоужать в приложение в обход стандартного релиза через Google Play. Zipline помогает с бриджингом и исполнением Kotlin/JS кода из ваших нативных приложений.
Вот где это может пригодиться:
- Различные системы плагинов, которые пользователи устанавливают сами
- Обновление бизнес-логики, например, расчета цен
- Подгружаемый игровой контент
- Реализация системы continuous deployment
GitHub
GitHub - cashapp/zipline: Run Kotlin/JS libraries in Kotlin/JVM and Kotlin/Native programs
Run Kotlin/JS libraries in Kotlin/JVM and Kotlin/Native programs - cashapp/zipline
Вводная статья в KSP
Разбираемся с тем, как писать собственные инструменты поверх KSP на примере упрощения конвертации enum’ов в строки.
Разбираемся с тем, как писать собственные инструменты поверх KSP на примере упрощения конвертации enum’ов в строки.
This media is not supported in your browser
VIEW IN TELEGRAM
Brush API и Compose Animations
Продолжение поста про новые возможности работы с окрашиванием текста, которые дает Brush API.
Продолжение поста про новые возможности работы с окрашиванием текста, которые дает Brush API.
Шаги по поддержке Rust в Android NDK
В ответ на Feature Request о поддержке Rust в NDK, инженеры Google выкатили роадмап по тому, что конкретно требуется для этого сделать. Конкретных планов по его реализации пока нет, но выглядит интересно.
В ответ на Feature Request о поддержке Rust в NDK, инженеры Google выкатили роадмап по тому, что конкретно требуется для этого сделать. Конкретных планов по его реализации пока нет, но выглядит интересно.
Кастомизация device frame у эмулятора
В Android Studio можно настраивать кастомные рамки для эмуляторов. Таким образом, все скриншоты, которые вы будете делать, сразу будут включать нужное оформление девайсов.
В Android Studio можно настраивать кастомные рамки для эмуляторов. Таким образом, все скриншоты, которые вы будете делать, сразу будут включать нужное оформление девайсов.
Особенности рекомпозиции в Compose
- Из-за особенностей компиляции лямбд, Compose может не считать их Stable
- Data classes, содержащиеся в отличных от текущего модулях, не будут помечены Stable по умолчанию
- Часто меняющийся стейт может оказывать очень сильное влияние на перфоманс
- Из-за особенностей компиляции лямбд, Compose может не считать их Stable
- Data classes, содержащиеся в отличных от текущего модулях, не будут помечены Stable по умолчанию
- Часто меняющийся стейт может оказывать очень сильное влияние на перфоманс
Stitchfix
Gotchas in Jetpack Compose Recomposition | Stitch Fix Technology – Multithreaded
Understanding recomposition in Jetpack Compose is critical to optimizing application performance. Here are some
Новый онбординг в KMM
Команда Kotlin сильно переработала документацию для KMM, в частности – последовательность статей, заданий и семплов кода, которые помогают новичкам вкатиться в SDK.
Команда Kotlin сильно переработала документацию для KMM, в частности – последовательность статей, заданий и семплов кода, которые помогают новичкам вкатиться в SDK.
Пишем расширения для браузера на Kotlin
Идея для пет-проекта – написать собственное расширение для Chrome, которое делает что-то полезное. Шаблон по ссылке даст вам возможность не трогать JavaScript и написать его на чистом Kotlin.
Идея для пет-проекта – написать собственное расширение для Chrome, которое делает что-то полезное. Шаблон по ссылке даст вам возможность не трогать JavaScript и написать его на чистом Kotlin.
GitHub
GitHub - DatL4g/Kromex: Kromex is an extension template written in Kotlin, mainly made for Chrome
Kromex is an extension template written in Kotlin, mainly made for Chrome - DatL4g/Kromex
ViewBinding и утечки памяти
- Часто встречаются рекомендации выставлять view binding в null, чтобы избежать утечек памяти
- Жизненный цикл View дестко привязан к Activity, поэтому в этом случае самостоятельно занулять не надо, все решится само
- В случае фрагментов ситуация другая – вью могут создаваться и уничтожаться, поэтому освобождать view binding вручную
нужно
- Для ViewHolder выставлять view binding в null тоже не требуется
- Часто встречаются рекомендации выставлять view binding в null, чтобы избежать утечек памяти
- Жизненный цикл View дестко привязан к Activity, поэтому в этом случае самостоятельно занулять не надо, все решится само
- В случае фрагментов ситуация другая – вью могут создаваться и уничтожаться, поэтому освобождать view binding вручную
нужно
- Для ViewHolder выставлять view binding в null тоже не требуется
Используем Koin для организации DI не только в Kotlin и KMM коде, но и в Swift
Хорошая идея по тому, как можно прикрутить Koin для резолва KMM зависимостей в Swift коде через самописную аннотацию
Хорошая идея по тому, как можно прикрутить Koin для резолва KMM зависимостей в Swift коде через самописную аннотацию
Решаем проблему множественных кликов в Compose
Разбор нескольких подходов к тому, чтобы не инициировать лишние действия в приложении, когда пользователь вызывает одно и то же событие несколько раз.
Разбор нескольких подходов к тому, чтобы не инициировать лишние действия в приложении, когда пользователь вызывает одно и то же событие несколько раз.
Medium
How to prevent multiple clicks in Android Jetpack Compose
Sometimes a user of your app may be a “monkey.” Funny, right? It is only a term, and what does it mean you can find here. But in simple…
Все видео Droidcon Berlin 2022
В открытый доступ выложили все видео недавнего Droidcon Berlin. Советую начать вот с этих:
📹Deep Dive into DEX Files Byte-by-Byte
📹Diving into Koin 3.2
📹How we Migrated the CI/CD of our Android App to GitHub Actions
📹5 Ways to Improve Your Android Build Productivity
В открытый доступ выложили все видео недавнего Droidcon Berlin. Советую начать вот с этих:
📹Deep Dive into DEX Files Byte-by-Byte
📹Diving into Koin 3.2
📹How we Migrated the CI/CD of our Android App to GitHub Actions
📹5 Ways to Improve Your Android Build Productivity
Talking Kotlin: Kotlin Design Patterns
Еще одно видео вам в список просмотра – Алексей Соснин, автор книги Kotlin Design Patterns, рассказывает про ее содержание и делится best practices, которых придерживается сам.
Еще одно видео вам в список просмотра – Алексей Соснин, автор книги Kotlin Design Patterns, рассказывает про ее содержание и делится best practices, которых придерживается сам.
YouTube
Kotlin Design Patterns and Best Practices | Talking Kotlin
We chat with Alexey about Kotlin Design Patterns and Best Practices and his recently released book, "Kotlin Design Patterns and Best Practices."
Discount for the "Kotlin Design Patterns and Best Practices" book!
Discount code: 25ALEXEY
Start-end date: 27th…
Discount for the "Kotlin Design Patterns and Best Practices" book!
Discount code: 25ALEXEY
Start-end date: 27th…
Instantiator – библиотека для быстрого создания тестовых объектов
- Значительная часть unit-тестов проверяет разные виды трансформации данных из одного формата в другой, из-за чего приходится инстанциировать много объектов с семпловыми данными
- Instantiator использует рефлексию, чтобы предзаполнить дата классы тестовыми данными
- Значительная часть unit-тестов проверяет разные виды трансформации данных из одного формата в другой, из-за чего приходится инстанциировать много объектов с семпловыми данными
- Instantiator использует рефлексию, чтобы предзаполнить дата классы тестовыми данными