This media is not supported in your browser
VIEW IN TELEGRAM
AdbOrc – простой шаринг Android девайсов в команде
AdbOrc создает распределенную виртуальную ферму девайсов. Им не нужно физически находиться в одном месте, достаточно просто подключить их к компьютеру и расшарить для подключения через консольную тулу.
Сеть состоит из трех ролей:
📲Supplier – тот, кто предоставляет свой девайс для использования.
💻Consumer – тот, кто подключается к чужому девайсу.
🔄MarketMaker – хаб, который регистрирует девайсы и менеджерит доступ к ним.
На каждый расшаренный девайс стартует ADB сервер, информация о котором расшаривается через MarketMaker. Для доступа к экрану девайса используется
AdbOrc на GitHub
AdbOrc создает распределенную виртуальную ферму девайсов. Им не нужно физически находиться в одном месте, достаточно просто подключить их к компьютеру и расшарить для подключения через консольную тулу.
Сеть состоит из трех ролей:
📲Supplier – тот, кто предоставляет свой девайс для использования.
💻Consumer – тот, кто подключается к чужому девайсу.
🔄MarketMaker – хаб, который регистрирует девайсы и менеджерит доступ к ним.
На каждый расшаренный девайс стартует ADB сервер, информация о котором расшаривается через MarketMaker. Для доступа к экрану девайса используется
scrcpy.
Все соединения шифруются.AdbOrc на GitHub
Pager API переезжает из Accompanist в Compose
API для работы с горизонтальными и вертикальными лэйаутами с постраничной прокруткой переезжает из Accompanist в Compose 1.4.0. Пока что под экспериментальным флагом.
API для работы с горизонтальными и вертикальными лэйаутами с постраничной прокруткой переезжает из Accompanist в Compose 1.4.0. Пока что под экспериментальным флагом.
История одного крэша
Расследование причин крэша с NoClassDefFoundError, который происходил на 21 API и сборке без R8. Спойлер –вся проблема в ограничении количества dex файлов в 100 штук на старых версиях Android .
Расследование причин крэша с NoClassDefFoundError, который происходил на 21 API и сборке без R8. Спойлер –
Обзор редко используемых фичей Kotlin
В статье разбирается несколько полезных, но сравнительно редко используемых фичей Kotlin:
👉fun interface / function types
👉type alias
👉import alias
👉value class
👉data object
В статье разбирается несколько полезных, но сравнительно редко используемых фичей Kotlin:
👉fun interface / function types
👉type alias
👉import alias
👉value class
👉data object
kau.sh
A few Kotlin constructs · Kaushik Gopal's Home
A few Kotlin constructs have been introduced into the language over time. I wrote this post as a personal/public service advisory to remind us of their significance.
Вышел Kotlin 1.8.0
- Значительна улучшена производительность kotlin-reflect
- Новый флаг -Xdebug, который отключает все оптимизации во время дебага
- Удален старый Kotlin/JVM бэкенд
- Новые аннотации в Kotlin/Native для улучшения интеропа с Objective-C/Swift
- Стабилизирован новый Kotlin/JS бэкенд
- Совместимость с Gradle 7.3
- Компиляторные флаги теперь можно задавать с помощью удобного Gradle DSL
- Значительна улучшена производительность kotlin-reflect
- Новый флаг -Xdebug, который отключает все оптимизации во время дебага
- Удален старый Kotlin/JVM бэкенд
- Новые аннотации в Kotlin/Native для улучшения интеропа с Objective-C/Swift
- Стабилизирован новый Kotlin/JS бэкенд
- Совместимость с Gradle 7.3
- Компиляторные флаги теперь можно задавать с помощью удобного Gradle DSL
Гайд по прохождению System design интервью
Подробный алгоритм прохождения архитектурной секции интервью с учетом мобильной специфики на примере ленты Твиттера:
- Как правильно собирать требования и какие уточняющие вопросы задавать
- Как отрисовать общую архитектурную схему и какие компоненты показать
- Как подойти к дизайну взаимодействия с бэкендом
- Как обсуждать организацию хранения данных
- Какие дополнительные темы могут всплывать
Подробный алгоритм прохождения архитектурной секции интервью с учетом мобильной специфики на примере ленты Твиттера:
- Как правильно собирать требования и какие уточняющие вопросы задавать
- Как отрисовать общую архитектурную схему и какие компоненты показать
- Как подойти к дизайну взаимодействия с бэкендом
- Как обсуждать организацию хранения данных
- Какие дополнительные темы могут всплывать
Подкаст про MockK
MockK – одна из популярных библиотек для создания моков в Kotlin. С ее автором записали эпизод подкаста The Developers’ Bakery, в котором разобрали нюансы работы с моками в JVM, отличия MockK от других библиотек, детали его реализации и оптимизации перфоманса.
MockK – одна из популярных библиотек для создания моков в Kotlin. С ее автором записали эпизод подкаста The Developers’ Bakery, в котором разобрали нюансы работы с моками в JVM, отличия MockK от других библиотек, детали его реализации и оптимизации перфоманса.
Gradle 8.0-RC
Вышла предрелизная версия Gradle. Большая часть касается улучшений поддержки KTS в Gradle:
- Появилась поддержка всех языковых и stdlib фичей Kotlin выше версии 1.4.0.
- Убрали лок на Java 8 для компиляции скриптов.
- Компиляция скриптов ускорена на 20% за счет кастомного интерпретатора для блока plugins {}.
Учитывая, что вместе с этим в Android Studio Canary в несколько раз улучшили перфоманс IDE, все движется к тому, что скоро .gradle.kts станет дефолтной опцией для написания билдскриптов.
Кроме этого, в Gradle 8.0 много улучшений для configuration cache и buildSrc билдов.
Вышла предрелизная версия Gradle. Большая часть касается улучшений поддержки KTS в Gradle:
- Появилась поддержка всех языковых и stdlib фичей Kotlin выше версии 1.4.0.
- Убрали лок на Java 8 для компиляции скриптов.
- Компиляция скриптов ускорена на 20% за счет кастомного интерпретатора для блока plugins {}.
Учитывая, что вместе с этим в Android Studio Canary в несколько раз улучшили перфоманс IDE, все движется к тому, что скоро .gradle.kts станет дефолтной опцией для написания билдскриптов.
Кроме этого, в Gradle 8.0 много улучшений для configuration cache и buildSrc билдов.
This media is not supported in your browser
VIEW IN TELEGRAM
Android приложение, написанное ChatGPT
За 78 вопросов и ответов к ChatGPT автор получил приложение, которое выводит 50 популярных бумаг с их ценами. Весь проект настроен и код сгенерирован нейронкой, а баги, если появлялись, исправлялись тоже с помощью чат-бота.
Код на GitHub
За 78 вопросов и ответов к ChatGPT автор получил приложение, которое выводит 50 популярных бумаг с их ценами. Весь проект настроен и код сгенерирован нейронкой, а баги, если появлялись, исправлялись тоже с помощью чат-бота.
Код на GitHub
Опыт использования Compose Desktop в продакшне
- Фреймворк лучше всего подходит для написания приложений, которым не требуется тесная интеграция с системой.
- Например, компонент для реализации меню в Tray выглядит и работает нормально в macOS, но на Windows он устаревший. А поддержки действий с уведомлениями вообще нет.
- Вызывать нативные API платформы тоже довольно больно, хотя и теоретически возможно.
Документация и примеры
- Фреймворк лучше всего подходит для написания приложений, которым не требуется тесная интеграция с системой.
- Например, компонент для реализации меню в Tray выглядит и работает нормально в macOS, но на Windows он устаревший. А поддержки действий с уведомлениями вообще нет.
- Вызывать нативные API платформы тоже довольно больно, хотя и теоретически возможно.
Документация и примеры
Алгоритмический трейдинг на Kotlin
Если вы еще не решили, каким пет-проектом заняться в начале года, отличный кандидат – вкатиться в алгоритмический трейдинг. Если вы никогда о нем не слышали, вот вам выпуск Подлодки по теме.
А для реализации можете взять библиотеку Roboquant, которая предоставляет кучу готовых абстракций, и умеет интегрироваться как с обычным кодом, так и с Jupyter ноутбуками.
Если вы еще не решили, каким пет-проектом заняться в начале года, отличный кандидат – вкатиться в алгоритмический трейдинг. Если вы никогда о нем не слышали, вот вам выпуск Подлодки по теме.
А для реализации можете взять библиотеку Roboquant, которая предоставляет кучу готовых абстракций, и умеет интегрироваться как с обычным кодом, так и с Jupyter ноутбуками.
Бенчмарк переезда AGP с JDK 11 на JDK 17
Android Gradle Plugin 8.0.0 будет требовать использования JDK 17. Автор статьи решил посмотреть, как изменение версии Java повлияет на перфоманс, и замерил несколько сценариев работы с приложением Now in Android.
Android Gradle Plugin 8.0.0 будет требовать использования JDK 17. Автор статьи решил посмотреть, как изменение версии Java повлияет на перфоманс, и замерил несколько сценариев работы с приложением Now in Android.
KEEP про data objects
- Data objects – новая фича Kotlin, которая совмещает data classes и objects. Например, вы сможете объявлять синглтоны, у которых из коробки будет реализована функция toString.
- Превью data objects появится в Kotlin 1.8.20, а стабильная фича выйдет в 1.9.0.
- В KEEP хорошо разобраны спорные вопросы, приведены сравнения с другими языками и подробно описан дизайн фичи.
- Data objects – новая фича Kotlin, которая совмещает data classes и objects. Например, вы сможете объявлять синглтоны, у которых из коробки будет реализована функция toString.
- Превью data objects появится в Kotlin 1.8.20, а стабильная фича выйдет в 1.9.0.
- В KEEP хорошо разобраны спорные вопросы, приведены сравнения с другими языками и подробно описан дизайн фичи.
Сравнение перфоманса разных бэкендов Kotlin
Таблица с оценкой перфоманса разных способов компиляции Kotlin-кода и размера получающихся артефактов. Важно помнить, что любые бенчмарки показывают только часть картины, и к ним нужно относиться изначально довольно скептично. Как минимум, оценка производительности на числодробилке будет значительно отличаться от работы с Android проектами.
Таблица с оценкой перфоманса разных способов компиляции Kotlin-кода и размера получающихся артефактов. Важно помнить, что любые бенчмарки показывают только часть картины, и к ним нужно относиться изначально довольно скептично. Как минимум, оценка производительности на числодробилке будет значительно отличаться от работы с Android проектами.
This media is not supported in your browser
VIEW IN TELEGRAM
Тултипы в Compose с помощью библиотеки Balloon
- Balloon – библиотека для создания анимированных интерфейсных подсказок, которые очень хорошо кастомизируются. Библиотека полностью совместима с Compose.
- В статье приводится пример ее использования для создания простого тултипа.
- Balloon – библиотека для создания анимированных интерфейсных подсказок, которые очень хорошо кастомизируются. Библиотека полностью совместима с Compose.
- В статье приводится пример ее использования для создания простого тултипа.
Работа с фокусом в Compose
- Compose дает несколько API для управления фокусом текстовых полей: FocusManager, FocusRequester и различные модификаторы.
- В статье разбирается, как с помощью этих API можно получить текущий фокус, переместить его на другое поле, определив их порядок, и очистить его.
- Compose дает несколько API для управления фокусом текстовых полей: FocusManager, FocusRequester и различные модификаторы.
- В статье разбирается, как с помощью этих API можно получить текущий фокус, переместить его на другое поле, определив их порядок, и очистить его.
Генеративное искусство на Compose Desktop
18 января пройдет вебинар, на котором Антон Архипов из команды Kotlin покажет, как можно использовать Compose Desktop для отрисовки сложных геометрических фигур и генеративного арта. Вполне себе идея для вашего пет-проекта!
18 января пройдет вебинар, на котором Антон Архипов из команды Kotlin покажет, как можно использовать Compose Desktop для отрисовки сложных геометрических фигур и генеративного арта. Вполне себе идея для вашего пет-проекта!
Как написать свой сериализатор для kotlinx.serialization
Ядро kotlinx.serialization поддерживает не так много форматов – JSON, Protobuf и несколько других. Поддержкой сериализации других форматов в основном занимается коммьюнити. Автор библиотеки KToml рассказывает о деталях устройства и работы kotlinx.serialization и накидывает кучу советов по тому, как писать свои собственные сериализаторы.
Слайды доклада
Ядро kotlinx.serialization поддерживает не так много форматов – JSON, Protobuf и несколько других. Поддержкой сериализации других форматов в основном занимается коммьюнити. Автор библиотеки KToml рассказывает о деталях устройства и работы kotlinx.serialization и накидывает кучу советов по тому, как писать свои собственные сериализаторы.
Слайды доклада
Сколько можно заработать на книге про Android
Автор блога Effective Android, статьями из которого я регулярно делюсь, написал книгу про внутреннее устройство Jetpack Compose. С этого момента прошло уже полтора года, и он поделился своим опытом авторства.
Писать книгу про внутреннее устройство фреймворка довольно тяжело, потому что оно может меняться очень часто, и книгу вместе с ним придется обновлять. Для Compose, который только-только зарелизился, это особенно актуально.
Продажи принесли ему $32k за все время, но это до вычета налогов. Кроме этого, он еще смог привлечь спонсоров, которые принесли дополнительные $6.5k.
Автор блога Effective Android, статьями из которого я регулярно делюсь, написал книгу про внутреннее устройство Jetpack Compose. С этого момента прошло уже полтора года, и он поделился своим опытом авторства.
Писать книгу про внутреннее устройство фреймворка довольно тяжело, потому что оно может меняться очень часто, и книгу вместе с ним придется обновлять. Для Compose, который только-только зарелизился, это особенно актуально.
Продажи принесли ему $32k за все время, но это до вычета налогов. Кроме этого, он еще смог привлечь спонсоров, которые принесли дополнительные $6.5k.
Effective Android
Writing a technical book ✍️ 📖
My complete experience, learnings and earnings included 💸
Планы по улучшению поддержки Kotlin в IDE
Один из основных фокусов команды Kotlin на ближайшие полгода – переписывание IDE поддержки языка на новый К2 компилятор. Этот проект в первую очередь направлен на то, чтобы улучшить стабильность анализа кода и скорость навигации, автокомплишна и подсветки кода и в IDEA, и в Android Studio.
Первая публичная версия нового плагина для IDEA выйдет в июле 2023. Важный момент – первый релиз будет Lightweight версией, которая включает в себя только самые базовые IDE фичи:
🛠️Полноценная подсветка кода и Find Usages
🛠️Базовые автокомплишн и дебаггер
🛠️Основные рефакторинги и code insight фичи (go to declaration, parameter info и т.д.)
🛠️Самые частоиспользуемые инспекции
🛠️Поддержка мультиплатформы и gradle.kts
Старый и новый плагин какле-то время будут жить вместе, так что вы сможете выбирать, что вам важнее – полный список текущих IDE фичей или быстрый перфоманс.
Один из основных фокусов команды Kotlin на ближайшие полгода – переписывание IDE поддержки языка на новый К2 компилятор. Этот проект в первую очередь направлен на то, чтобы улучшить стабильность анализа кода и скорость навигации, автокомплишна и подсветки кода и в IDEA, и в Android Studio.
Первая публичная версия нового плагина для IDEA выйдет в июле 2023. Важный момент – первый релиз будет Lightweight версией, которая включает в себя только самые базовые IDE фичи:
🛠️Полноценная подсветка кода и Find Usages
🛠️Базовые автокомплишн и дебаггер
🛠️Основные рефакторинги и code insight фичи (go to declaration, parameter info и т.д.)
🛠️Самые частоиспользуемые инспекции
🛠️Поддержка мультиплатформы и gradle.kts
Старый и новый плагин какле-то время будут жить вместе, так что вы сможете выбирать, что вам важнее – полный список текущих IDE фичей или быстрый перфоманс.
YouTrack
First public release of the K2-based IntelliJ plugin : KTIJ-23988
Summary [The creation of the new Kotlin K2 compiler](https://youtrack.jetbrains.com/issue/KT-52604/Release-K2-Beta) is also aimed at improving the IDE experience. Performance and quality are the main focuses of the new product. By Q4'23, we are going to release…