Планы по улучшению поддержки 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…
Плагин с миникартой для IntelliJ
Во многих редакторах кода есть топовая фича – миникарта открытого сейчас файла. Она упрощает навигацию для тех, кому проще это делать визуально, а не по сигнатурам. В платформу IntelliJ фичу пока не втаскивают, поэтому вместо этого можете попробовать плагин CodeGlance.
Во многих редакторах кода есть топовая фича – миникарта открытого сейчас файла. Она упрощает навигацию для тех, кому проще это делать визуально, а не по сигнатурам. В платформу IntelliJ фичу пока не втаскивают, поэтому вместо этого можете попробовать плагин CodeGlance.
Вводное видео в CameraX
CameraX – новая Jetpack библиотека, которая берет на себя все взаимодействие с камерой и обработку эдж-кейсов, связанных с поведением разных девайсов.
Во вводном пятиминутном видео рассказывается про основные концепции библиотеки и сценарии, в которых она вам может пригодиться.
CameraX – новая Jetpack библиотека, которая берет на себя все взаимодействие с камерой и обработку эдж-кейсов, связанных с поведением разных девайсов.
Во вводном пятиминутном видео рассказывается про основные концепции библиотеки и сценарии, в которых она вам может пригодиться.
Проект iosched заархивирован
Ушла эпоха – iosched, приложение с расписанием Google I/O, которое работало как пример использования архитектурных рекомендаций Google, официально задепрекейчено и заархивировано. Вместо него будет обновляться Now in Android.
Ушла эпоха – iosched, приложение с расписанием Google I/O, которое работало как пример использования архитектурных рекомендаций Google, официально задепрекейчено и заархивировано. Вместо него будет обновляться Now in Android.
Релиз Android Studio Electric Eel
Вышла новая стабильная Android Studio поверх IntelliJ Platform 2022.1.1. Самые заметные изменения:
🎨Дизайн
- Compose Preview обновляются автоматически
- Возможность задать определенный девайс для Compose Preview
- Подсвечивание рекомпозиций в Layout Inspector
- Линтинг для XML лэйаутов
- Единая Problems Panel с репортингом о всех проблемах из разных тулов
🧱Сборка
- Улучшена производительность Gradle Sync, аж на 60%
- Build Analyzer показывает, как скачивание зависимостей влияет на билд
👀Тулинг
- Полностью обновленный Logcat
- Новое App Quality Insights окно, которое подтягивает всю информацию из Crashlytics
- Возможность создавать эмуляторы десктопа
- Мирроринг физического девайса прямо в Android Studio, в то же окно, где показывается эмулятор
Вышла новая стабильная Android Studio поверх IntelliJ Platform 2022.1.1. Самые заметные изменения:
🎨Дизайн
- Compose Preview обновляются автоматически
- Возможность задать определенный девайс для Compose Preview
- Подсвечивание рекомпозиций в Layout Inspector
- Линтинг для XML лэйаутов
- Единая Problems Panel с репортингом о всех проблемах из разных тулов
🧱Сборка
- Улучшена производительность Gradle Sync, аж на 60%
- Build Analyzer показывает, как скачивание зависимостей влияет на билд
👀Тулинг
- Полностью обновленный Logcat
- Новое App Quality Insights окно, которое подтягивает всю информацию из Crashlytics
- Возможность создавать эмуляторы десктопа
- Мирроринг физического девайса прямо в Android Studio, в то же окно, где показывается эмулятор
Как новая Android Studio ускорила импорт для Square
Одна из фичей, которые появились в Android Studio Electric Eel – parallel project import. Она особенно полезна для больших кодовых баз, состоящих из большого количества Gradle subprojects. Для Square ее использование ускорило импорт проекта на 60% – с 9 до 3.5 минут.
Одна из фичей, которые появились в Android Studio Electric Eel – parallel project import. Она особенно полезна для больших кодовых баз, состоящих из большого количества Gradle subprojects. Для Square ее использование ускорило импорт проекта на 60% – с 9 до 3.5 минут.
Coroutines и Project Loom
Инструкция по тому, как написать свой Dispatcher, который будет работать с Project Loom тредами, и с помощью которого можно писать неблокирующий код, и сравнение его производительности с
Инструкция по тому, как написать свой Dispatcher, который будет работать с Project Loom тредами, и с помощью которого можно писать неблокирующий код, и сравнение его производительности с
Dispatchers.IO
.Как сделать анимацию с помощью MotionLayout (туториал по ссылке)
MotionLayout – это контейнер, который позволяет просто создавать сложные анимации, для чего требуется лишь описать сцену.
Android-разработчик Павел Беловол рассказывает в своей статье на ХабрХабр, про свой опыт работы с MotionLayout на примере продакшн-задачи в онлайн-кинотеатре KION. Из статьи вы узнаете, где нужно использовать MotionLayout, а где лучше обойтись без него и писать код анимации самостоятельно.
Читать здесь.
MotionLayout – это контейнер, который позволяет просто создавать сложные анимации, для чего требуется лишь описать сцену.
Android-разработчик Павел Беловол рассказывает в своей статье на ХабрХабр, про свой опыт работы с MotionLayout на примере продакшн-задачи в онлайн-кинотеатре KION. Из статьи вы узнаете, где нужно использовать MotionLayout, а где лучше обойтись без него и писать код анимации самостоятельно.
Читать здесь.
Хабр
Как сделать анимацию с помощью MotionLayout
Привет, Хабр! Меня зовут Павел Беловол, я Android-разработчик на проекте онлайн-кинотеатра KION в МТС Digital . Это новая часть сериала о внедрении фичи Autoplay в KION, в которой я расскажу про свой...
Почему yaml – плохой формат
Скорее всего, до вас долетали обрывки споров про то, насколько хорошая идея использовать yaml для различных конфигов.
Все сводится к тому, что спецификация Yaml на порядок сложнее, чем JSON. Например, спека предусматривает 63 разных способа объявления multiline строк. Кроме того, она еще и значительно меняется от версии к версии.
Вот несколько примеров непредсказуемого поведения YAML конфигов:
*️⃣`- 22:22` в зависимости от версии парсера может быть прочитана как строка, а может – как число 1342.
*️⃣Некоторые символы считываются как строки, а некоторые оказываются зарезервированы под что-то еще. Например,
*️⃣Если где-то в конфиге встретится строчка
*️⃣Не стоит использовать
Скорее всего, до вас долетали обрывки споров про то, насколько хорошая идея использовать yaml для различных конфигов.
Все сводится к тому, что спецификация Yaml на порядок сложнее, чем JSON. Например, спека предусматривает 63 разных способа объявления multiline строк. Кроме того, она еще и значительно меняется от версии к версии.
Вот несколько примеров непредсказуемого поведения YAML конфигов:
*️⃣`- 22:22` в зависимости от версии парсера может быть прочитана как строка, а может – как число 1342.
*️⃣Некоторые символы считываются как строки, а некоторые оказываются зарезервированы под что-то еще. Например,
- *.png
– невалидный сниппет, так как * зарезервирована. А - !.git
будет считан, как пустая строка.*️⃣Если где-то в конфиге встретится строчка
- no,
она будет интерпретирована как false, а не как строка. У этого поведения есть даже свое имя – Norway problem, так как региональный код Норвегии, который часто можно встретить в таких конфигах, тоже no. Ах да, так ведет себя только самая новая версия yaml, что добавляет веселья.*️⃣Не стоит использовать
~,
так как это алиас для null.Ruudvanasseldonk
The yaml document from hell
As a data format, yaml is extremely complicated and it has many footguns. In this post I explain some of those pitfalls by means of an example, and I suggest a few simpler and safer yaml alternatives.
Уроки из реализации swipe to dismiss на Compose
Swipe to dismiss – довольно стандартная фича, реализация которой не должна занимать много времени. Тем не менее, автор статьи потратил три дня на дебаг нескольких неочевидных моментов, которыми и делится в статье.
Swipe to dismiss – довольно стандартная фича, реализация которой не должна занимать много времени. Тем не менее, автор статьи потратил три дня на дебаг нескольких неочевидных моментов, которыми и делится в статье.
Compose BOM для альфа версий компонентов
Недавно Google начал публиковать Gradle BOM для всех Compose зависимостей. Его использование освобождает вас от необходимости менеджерить все версии вручную.
Если вы хотите использовать в проекте не стабильные версии зависимостей, а альфа, первым получая все экспериментальные фичи, то можете переключиться на неофициальный автообновляемый BOM по ссылке.
Недавно Google начал публиковать Gradle BOM для всех Compose зависимостей. Его использование освобождает вас от необходимости менеджерить все версии вручную.
Если вы хотите использовать в проекте не стабильные версии зависимостей, а альфа, первым получая все экспериментальные фичи, то можете переключиться на неофициальный автообновляемый BOM по ссылке.
GitHub
GitHub - chrisbanes/compose-bom: Compose BOM (bill of materials) - alpha edition
Compose BOM (bill of materials) - alpha edition. Contribute to chrisbanes/compose-bom development by creating an account on GitHub.
This media is not supported in your browser
VIEW IN TELEGRAM
Пошаговая реализация Dynamic Island на Compose
Dynamic Island из iOS – спорный с точки зрения UX, но интересный с точки зрения реализации нестандартного UI компонент. Если вы ищете, на каких примерах потренироваться с анимациями на Compose, то как раз отлично подойдет.
Dynamic Island из iOS – спорный с точки зрения UX, но интересный с точки зрения реализации нестандартного UI компонент. Если вы ищете, на каких примерах потренироваться с анимациями на Compose, то как раз отлично подойдет.
3 причины стать мобильным разработчиком на Android
1. Реализовать идеи
Счётчик просмотренных фильмов или управление светом в холодильнике? Приложение можно создать под любую задачу, на любом компьютере, для разных устройств и брендов.
2. «Пощупать» результат
70% людей в мире, у которых есть смартфон, пользуются Android. Разработчики улучшают жизнь людей и видят отклик: всегда можно протестировать приложение на своём устройстве или почитать отзывы в магазине.
3. Зарабатывать
По данным Хабр Карьеры, начинающие Android-разработчики получают от 40 000 ₽ в месяц, а опытные уровня middle — от 120 000 ₽. Часто разработчики работают удалённо.
Если хотите попробовать себя в этой профессии, начните бесплатную вводную часть курса по Android-разработке. Она делится на два уровня: начальный и для более подготовленных. Вы с первого урока учитесь на реальных задачах и погружаетесь в рабочую среду.
Познакомьтесь с языками Java и Kotlin, напишите своё первое приложение бесплатно →
1. Реализовать идеи
Счётчик просмотренных фильмов или управление светом в холодильнике? Приложение можно создать под любую задачу, на любом компьютере, для разных устройств и брендов.
2. «Пощупать» результат
70% людей в мире, у которых есть смартфон, пользуются Android. Разработчики улучшают жизнь людей и видят отклик: всегда можно протестировать приложение на своём устройстве или почитать отзывы в магазине.
3. Зарабатывать
По данным Хабр Карьеры, начинающие Android-разработчики получают от 40 000 ₽ в месяц, а опытные уровня middle — от 120 000 ₽. Часто разработчики работают удалённо.
Если хотите попробовать себя в этой профессии, начните бесплатную вводную часть курса по Android-разработке. Она делится на два уровня: начальный и для более подготовленных. Вы с первого урока учитесь на реальных задачах и погружаетесь в рабочую среду.
Познакомьтесь с языками Java и Kotlin, напишите своё первое приложение бесплатно →
Яндекс Практикум
Курс «Android-разработчик» - онлайн-обучение разработке мобильных приложений под Андроид
Онлайн-курс «Android-разработчик» от сервиса Яндекс Практикум. 12 месяцев обучения разработке мобильных приложений под Андроид для начинающих (с нуля). Научитесь писать код на Java и Kotlin, создадите командный дипломный проект, с дипломом и помощью в трудоустройстве.
Обновленные данные Android's Platform Distribution
6 января Google обновил данные по распределению используемых версий Android. Теперь можно посмотреть, какой процент пользователей сидит на Android 13 – пока это 5%.
6 января Google обновил данные по распределению используемых версий Android. Теперь можно посмотреть, какой процент пользователей сидит на Android 13 – пока это 5%.
Scaffold в Jetpack Compose
- Scaffold – особый тип composeable, который выступает родительским элементом для всех остальных и задает основной лэйаут.
- Его основные задачи – выделять место для системных элементов вроде Top/Bottom Bars и FloatingActionButton, и автоматически применять цвета выбранной темы к бэкграунду.
- Есть несколько разных типов Scaffold. Например, BottomSheetScaffold или BackdropScaffold, которые приложены скринами к посту.
- Scaffold не обязателен для использования, и его функциональность можно реализовать вручную.
- Scaffold – особый тип composeable, который выступает родительским элементом для всех остальных и задает основной лэйаут.
- Его основные задачи – выделять место для системных элементов вроде Top/Bottom Bars и FloatingActionButton, и автоматически применять цвета выбранной темы к бэкграунду.
- Есть несколько разных типов Scaffold. Например, BottomSheetScaffold или BackdropScaffold, которые приложены скринами к посту.
- Scaffold не обязателен для использования, и его функциональность можно реализовать вручную.
Как работает Gradle
Команда Gradle начала новую серию постов про разные интересные детали того, как работает билд тулинг. В первом посте разбирается, чем отличаются разные способы запуска билда и что происходит в каждый момент под капотом.
Команда Gradle начала новую серию постов про разные интересные детали того, как работает билд тулинг. В первом посте разбирается, чем отличаются разные способы запуска билда и что происходит в каждый момент под капотом.
Бесплатные вебинары от Gradle
Только блогом активность Gradle не ограничивается. В январе пройдет несколько интересных вебинаров, которые открыты всем для участия:
📆Воркшоп по ускорению билдов и траблшутингу, 24 января
📆Интервью Николая Красько, тимлида инфраструктурной команды в Kotlin, про то, как оптимизируется опыт разработчиков внутри команды Kotlin, 25 января
📆Воркшоп по разным аспектам конфигурации Gradle с помощью Kotlin DSL, 26 января
📆Deep dive в Maven Build Cache, 31 января
Только блогом активность Gradle не ограничивается. В январе пройдет несколько интересных вебинаров, которые открыты всем для участия:
📆Воркшоп по ускорению билдов и траблшутингу, 24 января
📆Интервью Николая Красько, тимлида инфраструктурной команды в Kotlin, про то, как оптимизируется опыт разработчиков внутри команды Kotlin, 25 января
📆Воркшоп по разным аспектам конфигурации Gradle с помощью Kotlin DSL, 26 января
📆Deep dive в Maven Build Cache, 31 января
Develocity
Trainings Archive
Как Lyft собирает метрики потребления памяти в проде
Для каждой новой фичи, выпускаемой в виде эксперимента, Lyft дополнительно собирает различные технические метрики, в частности, потребление приложением памяти. Если при включенном эксперименте оно повышается, это служит сигналом наличия утечки памяти.
В статье рассказывается о метриках, по которым можно судить о потреблении памяти, границах их применимости, особенностях сбора и анализа.
Для каждой новой фичи, выпускаемой в виде эксперимента, Lyft дополнительно собирает различные технические метрики, в частности, потребление приложением памяти. Если при включенном эксперименте оно повышается, это служит сигналом наличия утечки памяти.
В статье рассказывается о метриках, по которым можно судить о потреблении памяти, границах их применимости, особенностях сбора и анализа.