#JetpackCompose #UnderTheHood
Understanding Jetpack Compose — Part 1 of 2
Совсем недавно была анонсирована альфа Jetpack Compose. Вместе с этим нам стало доступно множество обучающих материалов и документации.
В статье разбираются базовые принципы декларативного подхода в UI и чем он отличается привычному Android разработчику иерархии View + XML
Understanding Jetpack Compose — Part 1 of 2
Совсем недавно была анонсирована альфа Jetpack Compose. Вместе с этим нам стало доступно множество обучающих материалов и документации.
В статье разбираются базовые принципы декларативного подхода в UI и чем он отличается привычному Android разработчику иерархии View + XML
Medium
Understanding Jetpack Compose — part 1 of 2
Better UI building with Compose
#JetpackCompose #UnderTheHood
Under the hood of Jetpack Compose — part 2 of 2
Продолжение раскрытие деталей реализации Jetpack Compose. Во второй части вы найдете ответы на вопросы:
👉 Что значит аннотация
👉 В чем похожи
👉 Как строится UI в Jetpack Compose
👉 Что такое
👉 Как устроена работа с входными параметрами и обновлением UI в Jetpack Compose
Важно: чтобы работать с Jetpack Compose вам не нужно понять детали этой статьи
Under the hood of Jetpack Compose — part 2 of 2
Продолжение раскрытие деталей реализации Jetpack Compose. Во второй части вы найдете ответы на вопросы:
👉 Что значит аннотация
@Composable
👉 В чем похожи
@Composable
и suspend
из Kotlin👉 Как строится UI в Jetpack Compose
👉 Что такое
Composer
👉 Как устроена работа с входными параметрами и обновлением UI в Jetpack Compose
Важно: чтобы работать с Jetpack Compose вам не нужно понять детали этой статьи
Medium
Under the hood of Jetpack Compose — part 2 of 2
Under the hood of Compose
#Android10 #Thermal
Thermal in Android
Хотите узнать насколько горячее ваше приложение? Вы сможете это сделать в Android 10 с помощью нового Thermal API. Оно также доступно в NDK, но только с Android 11.
Кому это может быть полезно? Разработчикам игр и всех приложений, кто активно используется железо устройства, например приложения камеры во время съемки видео.
Thermal in Android
Хотите узнать насколько горячее ваше приложение? Вы сможете это сделать в Android 10 с помощью нового Thermal API. Оно также доступно в NDK, но только с Android 11.
Кому это может быть полезно? Разработчикам игр и всех приложений, кто активно используется железо устройства, например приложения камеры во время съемки видео.
Medium
Thermal in Android
Reacting to and better handling thermal issues in Android
#Gradle #Performance
The proper care and feeding of your Gradle build
Скорость сборки Gradle проекта - это всегда боль для Android проектов. Негативно на скорость сборки могут влиять зависимости, процессоры аннотаций и Gradle плагины.
С помощью Gradle плагина от автора статьи вы можете проанализировать ваш проект и понять какие зависимости:
👉 Не используются в вашем проекте
👉 Какие процессоры аннотаций не используются в вашем проекте
👉 Объявляете ли вы зависимости корректно (
👉 Используете ли вы код из транзитивных зависимостей, которые лучше определить явно
👉 Есть ли у вас неиспользуемые Gradle плагины
Анализировать ваш проект стоит регулярно, что позволит четко следить за вашими зависимостями. Возможно задуматься о запуске плагина на CI частью ПРов
The proper care and feeding of your Gradle build
Скорость сборки Gradle проекта - это всегда боль для Android проектов. Негативно на скорость сборки могут влиять зависимости, процессоры аннотаций и Gradle плагины.
С помощью Gradle плагина от автора статьи вы можете проанализировать ваш проект и понять какие зависимости:
👉 Не используются в вашем проекте
👉 Какие процессоры аннотаций не используются в вашем проекте
👉 Объявляете ли вы зависимости корректно (
api
, implementation
, compileOnly
и др)👉 Используете ли вы код из транзитивных зависимостей, которые лучше определить явно
👉 Есть ли у вас неиспользуемые Gradle плагины
Анализировать ваш проект стоит регулярно, что позволит четко следить за вашими зависимостями. Возможно задуматься о запуске плагина на CI частью ПРов
DEV Community
The proper care and feeding of your Gradle build
Maintain a healthy build with the Dependency Analysis Gradle Plugin. Optimize your dependency graph and remove redundant plugins.
#AndroidBroadcast #DependencyInjection #Dagger
Dagger Hilt Deep Dive (Livestream EN)
В четверг, 3 сентября, в 19:30 обсуждаем Dagger Hilt с Manuel Vivo, Android Developer Relations Engineer в Google
Dagger Hilt - это надстройка над Dagger под Android, призванная убрать множество boileplate кода, который приходится писать для модулей и компонентов.
Manuel занимается архитектурой приложений, Kotlin, Coroutines, Dependency Injection, а также Jetpack Compose. Ранее работал в Capital One.
Dagger Hilt Deep Dive (Livestream EN)
В четверг, 3 сентября, в 19:30 обсуждаем Dagger Hilt с Manuel Vivo, Android Developer Relations Engineer в Google
Dagger Hilt - это надстройка над Dagger под Android, призванная убрать множество boileplate кода, который приходится писать для модулей и компонентов.
Manuel занимается архитектурой приложений, Kotlin, Coroutines, Dependency Injection, а также Jetpack Compose. Ранее работал в Capital One.
#Robolectric #Testing
Robolectric 4.4
Вышла новой версии библиотеки для тестирования Android кода на локальной машине. Изменений огромное количество и подробнее вы с ними можете ознакомиться по ссылке.
Robolectric 4.4
Вышла новой версии библиотеки для тестирования Android кода на локальной машине. Изменений огромное количество и подробнее вы с ними можете ознакомиться по ссылке.
#UI #Spannable
Styled Texts for Android (Replaceable and Localizable)
Для всех тех кто используется Spannable строки, рекомендую взять на вооружение практику из статьи. С помощью разметки строк тегами с аннотациями в XML и последующим заданием через код какому Span соответствует кастомная аннотация
Styled Texts for Android (Replaceable and Localizable)
Для всех тех кто используется Spannable строки, рекомендую взять на вооружение практику из статьи. С помощью разметки строк тегами с аннотациями в XML и последующим заданием через код какому Span соответствует кастомная аннотация
Medium
Styled Texts for Android (Replaceable and Localizable)
Styled Texts can effect your UI/UX dramatically if used wisely but makes developer’s life harder. While developing styled texts…
#Kotlin #Multiplafrom #iOS
Kotlin Multiplatform Mobile goes Alpha
JetBrains уже говорили о том что концентрируют сейчас усилия в мультиплатформе на мобильном сегменте. Как результат - релиз Kotlin Multiplatform Mobile (KMM).
KMM - это SDK для шаринга кода между iOS и Android, которое включается в себя плагин для Android Studio. Плагин позволяет писать, запускать и дебажить общий код на Android и iOS из одной IDE.
Руководство по использованию и установке плагина здесь
Kotlin Multiplatform Mobile goes Alpha
JetBrains уже говорили о том что концентрируют сейчас усилия в мультиплатформе на мобильном сегменте. Как результат - релиз Kotlin Multiplatform Mobile (KMM).
KMM - это SDK для шаринга кода между iOS и Android, которое включается в себя плагин для Android Studio. Плагин позволяет писать, запускать и дебажить общий код на Android и iOS из одной IDE.
Руководство по использованию и установке плагина здесь
The JetBrains Blog
Kotlin Multiplatform Mobile Goes Alpha | The Kotlin Blog
Kotlin Multiplatform Mobile (KMM) is an SDK that allows you to use the same business logic code in both iOS and Android applications. Today KMM goes Alpha, and you can start sharing business logic in
#Kotlin #Coroutines
Why exception handling with Kotlin Coroutines is so hard and how to successfully master it!
Coroutine всегда хвалились тем что вы можете писать асинхронный код в синхронном стиле. Все мы думали что мы сможем использовать привычные подходы, но как же мы заблуждались.
Обработка ошибок может быть еще тем трюком в Coroutine. Как бы я не любил этот подход, но такая сложность в нем есть (
В статье автор разбирает
👉 интересные случаи обработки ошибок,
👉 почему так происходит
👉 какая в этом роль Structured Concurrency
👉
👉
👉
👉
👉
Why exception handling with Kotlin Coroutines is so hard and how to successfully master it!
Coroutine всегда хвалились тем что вы можете писать асинхронный код в синхронном стиле. Все мы думали что мы сможем использовать привычные подходы, но как же мы заблуждались.
Обработка ошибок может быть еще тем трюком в Coroutine. Как бы я не любил этот подход, но такая сложность в нем есть (
В статье автор разбирает
👉 интересные случаи обработки ошибок,
👉 почему так происходит
👉 какая в этом роль Structured Concurrency
👉
CoroutineExceptionHandler
👉
try-catch
vs CoroutineExceptionHandler
👉
launch{}
vs async{}
👉
coroutineScope{}
👉
supervisorScope{}
Lukas Lechner | ✏️ Blogger | 🎓 Course Creator | 📢 Speaker | 👨💻 Freelance Android Developer
Why exception handling with Kotlin Coroutines is so hard and how to successfully master it! | Lukas Lechner
I am going to describe the reasons for its complexity and give you some key points that will help you to build a good understanding of the subject. You will then be able to implement a successful exception handling infrastructure in your own applications.
#Coroutines #Flow #LiveData
Refactoring from LiveData to Coroutines & Flow
Помните руководство где Google рекомендовала на всех слоях использовать LiveData для коммуникации между слоями? Так вот - это заблуждение. LiveData нужна только на UI слое, а на других - Coroutines, Reactive подход или что-то еще асинхронное
В статье разбирается как мигрировать с LiveData на Coroutines и Flow
Refactoring from LiveData to Coroutines & Flow
Помните руководство где Google рекомендовала на всех слоях использовать LiveData для коммуникации между слоями? Так вот - это заблуждение. LiveData нужна только на UI слое, а на других - Coroutines, Reactive подход или что-то еще асинхронное
В статье разбирается как мигрировать с LiveData на Coroutines и Flow
Medium
Refactoring from LiveData to Coroutines & Flow
How we refactored lots of LiveData and blocked threads to Coroutines and Flow.
#JetpackCompose
Showkase поможет вам организовать, изучить, найти и визуализировать компоненты Jetpack Compose UI. Фактически это букварь для изучения нового подхода для работы с UI в Android.
Библиотека конфигурирует UI браузер для просмотра все элементов и рендерит их в основных различных режимах.
Showkase поможет вам организовать, изучить, найти и визуализировать компоненты Jetpack Compose UI. Фактически это букварь для изучения нового подхода для работы с UI в Android.
Библиотека конфигурирует UI браузер для просмотра все элементов и рендерит их в основных различных режимах.
#Android11 #ART #AndroidStudio
Structural Class Redefinition
Android Runtime (ART) - виртуальная машина, которая исполняет код Android приложений, обновляется регулярно. Проблема в том, что очень мало информации о том что происходит в ней от релиза к релизу. Поэтому рекомендую остановить внимание на посте.
Structural Class Redefinition - это расширение для JVMTI API, которое позволяет улучшить функцию "Apply Changes" в Android Studio. В первой части описывается работа этого функционала на уровне виртуальной машины.
Structural Class Redefinition
Android Runtime (ART) - виртуальная машина, которая исполняет код Android приложений, обновляется регулярно. Проблема в том, что очень мало информации о том что происходит в ней от релиза к релизу. Поэтому рекомендую остановить внимание на посте.
Structural Class Redefinition - это расширение для JVMTI API, которое позволяет улучшить функцию "Apply Changes" в Android Studio. В первой части описывается работа этого функционала на уровне виртуальной машины.
Medium
Structural Class Redefinition
Allowing tools, such as Apply Changes, to modify the class structure itself, adding new fields to existing classes.
#Android11 #ART #AndroidStudio
Structural Class Redefinition and Apply Changes
Реализация Structural Class Redefinition в Android Studio, которая уже работает в Android Studio 4.1 (вчера вышел RC2). К сожалению, не все заработает полноценно в AS 4.1, часть функционала доступна только в 4.2.
Structural Class Redefinition and Apply Changes
Реализация Structural Class Redefinition в Android Studio, которая уже работает в Android Studio 4.1 (вчера вышел RC2). К сожалению, не все заработает полноценно в AS 4.1, часть функционала доступна только в 4.2.
Medium
Structural Class Redefinition and Apply Changes
Apply Changes is a feature in Android Studio that we introduced in Android Studio 3.5…
#ADB
Supercharge Android dev with Scrcpy and ADB WIFI
Удаленное управление вашим устройство без провода с компьютера вашего устройства с помощью scrcpy
Supercharge Android dev with Scrcpy and ADB WIFI
Удаленное управление вашим устройство без провода с компьютера вашего устройства с помощью scrcpy
Medium
Supercharge Android dev with Scrcpy and ADB WIFI
There are two types of android developers, the ones who are okay developing and testing on an emulator, and the ones who cannot do without…
#Jetpack
Обновление Jetpack 2 сентября 2020
Новое обновление Jetpack. Основная часть обновления - новые альфа библиотек Compose и переход множества других библиотек на новую стадию alpha, beta, rc.
Однако не обошлось без интересного анонса - библиотека DataStore для сохранения данных, разработанная на Kotlin и под капотом построенная на
Обновление Jetpack 2 сентября 2020
Новое обновление Jetpack. Основная часть обновления - новые альфа библиотек Compose и переход множества других библиотек на новую стадию alpha, beta, rc.
Однако не обошлось без интересного анонса - библиотека DataStore для сохранения данных, разработанная на Kotlin и под капотом построенная на
Coroutines
и Flow
. Библиотека приходит на замену SharedPreferences
.Android Developers
Recent Release Notes | Android Developers
#Jetpack #DataStore #SharedPreferences
Prefer Storing Data with Jetpack DataStore
Всему суждено пасть.
Новая библиотека решена всех проблем
👉 Полностью асинхронное
👉 Уведомление об ошибках
👉 Транзакционное выполнение
👉 Поддержка миграции с
👉 Возможность работы как "Key-Value" так и хранилище объектов на основе Protobuf
В статье найдете примеры использования
Важно: DataStore не является заменой Room
Prefer Storing Data with Jetpack DataStore
Всему суждено пасть.
AsyncTask
уже стали deprecated, UI на основе View будет заменен Compose. Вот и SharedPreferences
будет замене новой библиотекой DataStore
, разработанной на Kotlin и работающей на основе Coroutines
.Новая библиотека решена всех проблем
SharedPreferences
:👉 Полностью асинхронное
👉 Уведомление об ошибках
👉 Транзакционное выполнение
👉 Поддержка миграции с
SharedPreferences
в DataStore
👉 Возможность работы как "Key-Value" так и хранилище объектов на основе Protobuf
В статье найдете примеры использования
DataStore
и миграции с SharedPreferences
Важно: DataStore не является заменой Room
Android Developers Blog
Prefer Storing Data with Jetpack DataStore
Posted by Florina Muntenescu , Android Developer Advocate, Rohit Sathyanarayana, Software Engineer Welcome Jetpack DataStore, now in ...
#CI #CD
«Ну, покати!» или CI/CD мобильных приложений на основе контракта
Avito делится тем как они заводят процесс релиза мобильного приложения на основе TeamCity и Nupokati.
«Ну, покати!» или CI/CD мобильных приложений на основе контракта
Avito делится тем как они заводят процесс релиза мобильного приложения на основе TeamCity и Nupokati.
Хабр
«Ну, покати!» или CI/CD мобильных приложений на основе контракта
Всем привет! Меня зовут Дмитрий, я релиз-инженер в команде CI/CD Speed Авито. Вот уже несколько лет мы с коллегами отвечаем за всё, что связано с релизами наших...
#Tooling #JakeWharton
Dependency Tree Diff
Утилита для вычисления разницы между выводом Gradle таска `dependencies`. Будет полезно, чтобы делать анализ и визуализировать что менялось между коммитами. Также упростит отслеживание транзитивных зависимостей.
Dependency Tree Diff
Утилита для вычисления разницы между выводом Gradle таска `dependencies`. Будет полезно, чтобы делать анализ и визуализировать что менялось между коммитами. Также упростит отслеживание транзитивных зависимостей.
#Tooling #JakeWharton
Diffuse - утилита для определения изменения размера APK, AAB, AAR и JAR файлов, которая по категориям файлов в архивах показывает детали.
Diffuse - утилита для определения изменения размера APK, AAB, AAR и JAR файлов, которая по категориям файлов в архивах показывает детали.