Возвращаемся к урокам по Compose после летних каникул.
Новая важная тема - Stability. В первом уроке разбираемся, что это такое и зачем вообще нужно.
Подключим compiler metrics отчеты, чтобы видеть, какие классы компилятор считает stable/unstable, а какие функции - skippable.
Используем аннотацию Immutable, чтобы увидеть, как можно сломать Stability.
В качестве примеров пока используем примитивы и data классы.
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
Новая важная тема - Stability. В первом уроке разбираемся, что это такое и зачем вообще нужно.
Подключим compiler metrics отчеты, чтобы видеть, какие классы компилятор считает stable/unstable, а какие функции - skippable.
Используем аннотацию Immutable, чтобы увидеть, как можно сломать Stability.
В качестве примеров пока используем примитивы и data классы.
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
Мобильные разработчики, общий сбор!
29 августа в Санкт-Петербурге пройдёт VK JT Mobile, первая конференция VK для мобильных разработчиков на iOS и Android. Вспомним прошлое, обсудим будущее и, опираясь на наш опыт, расскажем, как моментально внедрять технологии, структурировать миллионы строк кода и постоянно улучшать продуктовые метрики.
В программе нестандартные сценарии работы с пушами, упрощение разработки с помощью нейросетей, фичи для анализа ошибок и даже реализация приложений для автомобилей. Подробнее — на сайте.
Регистрируйтесь, если хотите реализовывать сложные в разработке, но простые для юзеров приложения, а также разбираться в инструментах и практиках, которые применяют наши специалисты 🙋
#реклама
29 августа в Санкт-Петербурге пройдёт VK JT Mobile, первая конференция VK для мобильных разработчиков на iOS и Android. Вспомним прошлое, обсудим будущее и, опираясь на наш опыт, расскажем, как моментально внедрять технологии, структурировать миллионы строк кода и постоянно улучшать продуктовые метрики.
В программе нестандартные сценарии работы с пушами, упрощение разработки с помощью нейросетей, фичи для анализа ошибок и даже реализация приложений для автомобилей. Подробнее — на сайте.
Регистрируйтесь, если хотите реализовывать сложные в разработке, но простые для юзеров приложения, а также разбираться в инструментах и практиках, которые применяют наши специалисты 🙋
#реклама
Volatile, Lock-free, Immutable, Atomic в Java. Как понять и начать использовать
#java #concurrency
https://habr.com/ru/companies/bercut/articles/822253/
#java #concurrency
https://habr.com/ru/companies/bercut/articles/822253/
Хабр
Volatile, Lock-free, Immutable, Atomic в Java. Как понять и начать использовать
Вступление Привет, меня зовут Денис Агапитов, я руководитель группы Platform Core компании Bercut. Сегодня хочу поговорить об одном из lock-free алгоритмов в Java. Разберём как с ним связано ключевое...
Инструкция по миграции с Hilt на Koin
#android #di #dagger #hilt #koin
https://blog.kotzilla.io/migrate-from-hilt-to-koin?utm_source=canopas-stack-weekl
#android #di #dagger #hilt #koin
https://blog.kotzilla.io/migrate-from-hilt-to-koin?utm_source=canopas-stack-weekl
blog.kotzilla.io
How To Migrate from Hilt to Koin - A Detailed Guide
Migrate from Hilt to Koin for Android devs. A step-by-step guide to cover setup, annotation replacements, module migration, testing, & Compose previews.
Android Gradle Plugin это тяжелая штука. Модуль с подключенным AGP (например с com.android.library) конфигурируется в два раза дольше чем обычный jvm модуль java/kotlin. В момент конфигурации android-модуля потребляется в два раза больше оперативной памяти. У модуля с AGP больше тасок, больше вес output артефактов, больше триггеров для инвалидации билд-кэша.
В крупных проектах, когда у нас есть возможность использовать модули без AGP, мы должны это делать ради времени билда и конфигурации.
К сожалению в 90% случаев мы не можем оставить модуль обычным JVM модулем из-за того что он ссылается на какие-то сущности из Android SDK или библиотеки, распространяемые в виде AAR артефактов.
Решение в том чтобы разрешить JVM модулям зависеть от Android SDK и AAR, при этом не подключая AGP.
#android #gradle #java #module #agp
https://habr.com/ru/articles/835402/
В крупных проектах, когда у нас есть возможность использовать модули без AGP, мы должны это делать ради времени билда и конфигурации.
К сожалению в 90% случаев мы не можем оставить модуль обычным JVM модулем из-за того что он ссылается на какие-то сущности из Android SDK или библиотеки, распространяемые в виде AAR артефактов.
Решение в том чтобы разрешить JVM модулям зависеть от Android SDK и AAR, при этом не подключая AGP.
#android #gradle #java #module #agp
https://habr.com/ru/articles/835402/
Хабр
Оптимизация Gradle: избавляемся от Android-модулей
Ты уже оптимизировал билд кэши на CI, но время прогонов в МРах неуклонно переваливает за 10 минут? Не хочешь лезть в импакт анализ? Долгий синк проекта в студии? Slow builds? Проблема Android Gradle...
В файле local.properties можно хранить, например, свои логин/пароль. Gradle может закинуть их в класс BuildConfig, чтобы мы могли использовать эти данные в приложении на экране логина, и не вводить каждый раз руками. Это будет работать только в локальной сборке.
#android #gradle
https://dev.to/kiolk/simple-way-to-store-secrets-in-android-project-345k
#android #gradle
https://dev.to/kiolk/simple-way-to-store-secrets-in-android-project-345k
DEV Community
Simple way to store secrets in Android Project.
Very often, we should store secrets that we need to build android application. One of the most common...
Интересный способ избавиться от UseCase, которые просто прокидывают метод репозитория. Делаем такой UseCase интерфейсом и наследуем его в репозитории.
#android #kotlin #usecase #architecture
https://dladukedev.com/articles/042_avoid_useless_cases_part_2/
#android #kotlin #usecase #architecture
https://dladukedev.com/articles/042_avoid_useless_cases_part_2/
Приходи на митап True Tech Party от МТС
Провожаем лето в компании CTO, тимлидов и руководителей разработки из МТС и не только, которые поделятся опытом в управлении командами и поговорят про то, какие хард- и софтскилы развивать, чтобы продвигаться по карьере. Спикеры расскажут, с какими ожиданиями сталкиваются тимлиды, как и какие решения принимают CTO, как строится обучающая среда для инженеров.
Когда: 30 августа
Где: Офлайн (Москва) + онлайн
Событие будет интересно разработчикам и начинающим руководителям в IT.
Регистрируйся по ссылке.
Реклама. Информация о рекламодателе
#реклама
Провожаем лето в компании CTO, тимлидов и руководителей разработки из МТС и не только, которые поделятся опытом в управлении командами и поговорят про то, какие хард- и софтскилы развивать, чтобы продвигаться по карьере. Спикеры расскажут, с какими ожиданиями сталкиваются тимлиды, как и какие решения принимают CTO, как строится обучающая среда для инженеров.
Когда: 30 августа
Где: Офлайн (Москва) + онлайн
Событие будет интересно разработчикам и начинающим руководителям в IT.
Регистрируйся по ссылке.
Реклама. Информация о рекламодателе
#реклама
Вышел Kotlin 2.0.20
- The data class copy function will have the same visibility as the constructor
- Static accessors for source sets from the default target hierarchy are now available in multiplatform projects
- Concurrent marking for Kotlin/Native has been made possible in the garbage collector
- The @ExperimentalWasmDsl annotation in Kotlin/Wasm has a new location
- Support has been added for Gradle versions 8.6–8.8
- A new option allows sharing JVM artifacts between Gradle projects as class files
- The Compose compiler has been updated
- Support for UUIDs has been added to the common Kotlin standard library
#kotlin
https://blog.jetbrains.com/kotlin/2024/08/kotlin-2-0-20-released/
- The data class copy function will have the same visibility as the constructor
- Static accessors for source sets from the default target hierarchy are now available in multiplatform projects
- Concurrent marking for Kotlin/Native has been made possible in the garbage collector
- The @ExperimentalWasmDsl annotation in Kotlin/Wasm has a new location
- Support has been added for Gradle versions 8.6–8.8
- A new option allows sharing JVM artifacts between Gradle projects as class files
- The Compose compiler has been updated
- Support for UUIDs has been added to the common Kotlin standard library
#kotlin
https://blog.jetbrains.com/kotlin/2024/08/kotlin-2-0-20-released/
The JetBrains Blog
Kotlin 2.0.20 Released | The Kotlin Blog
Kotlin 2.0.20 has been released! This version includes performance improvements and bug fixes for Kotlin 2.0.0, where we announced the Kotlin K2 compiler as Stable. Learn more!
Сравнение Flutter и Kotlin Multiplatform:
- Flutter vs. KMP in a nutshell
- Flutter vs. KMP – Detailed comparison
- Flutter vs. KMP – Main differences
- Flutter vs. KMP: 4 key criteria to help you decide
- Developing with Flutter and KMP – Droids On Roids approach
- Summary
#flutter #kmp #multiplatform
https://www.thedroidsonroids.com/blog/flutter-vs-kotlin-multiplatform
- Flutter vs. KMP in a nutshell
- Flutter vs. KMP – Detailed comparison
- Flutter vs. KMP – Main differences
- Flutter vs. KMP: 4 key criteria to help you decide
- Developing with Flutter and KMP – Droids On Roids approach
- Summary
#flutter #kmp #multiplatform
https://www.thedroidsonroids.com/blog/flutter-vs-kotlin-multiplatform
Droids On Roids
Flutter vs. Kotlin Multiplatform: Key Factors to Consider for Your App | Blog
When to choose Flutter and when to choose KMP? Here is a complete Flutter vs. Kotlin Multiplatform guide to clear up your doubts! Click to read.
Вдохновившись обновлением Telegram без маркета приложений я захотел сделать на одном из своих пет-проектов что-то подобное. Первой мыслью было - найти этот код в исходниках Telegram, но т.к. скорее всего у них обновление скачивается с серверов, я решил не играть в лотерею и не тратить время на раскопки в Java-коде, потому что я хотел сделать так, чтобы можно было скачивать с GitHub-releases.
#android #release #build #update
https://habr.com/ru/articles/839008/
#android #release #build #update
https://habr.com/ru/articles/839008/
Хабр
Автообновление через GitHub releases с помощью Hilt и Retrofit в Android
Вдохновившись обновлением Telegram без маркета приложений я захотел сделать на одном из своих пет-проектов что-то подобное. Первой мыслью было - найти этот код в исходниках Telegram, но т.к. скорее...
Переход на технологии и инструменты новых версий может быть обусловлен разными причинами: от банального появления проблем при работе с устаревшими версиями до желания получать больше возможностей. При этом для многих команд, независимо от причин, апгрейд стека является задачей, скрывающей не только выгоды, но и сложности, которые приходится стойко преодолевать.
Меня зовут Богдан Мащенко. Я Android-разработчик в платформенной команде Одноклассников. В этой статье я расскажу о нашем опыте перехода на AGP (Android Gradle Plugin) и Gradle версий 8.*: что стало причиной перехода, как преодолевали трудности, и что мы смогли получить в результате.
#android #gradle #build
https://habr.com/ru/companies/vk/articles/838772/
Меня зовут Богдан Мащенко. Я Android-разработчик в платформенной команде Одноклассников. В этой статье я расскажу о нашем опыте перехода на AGP (Android Gradle Plugin) и Gradle версий 8.*: что стало причиной перехода, как преодолевали трудности, и что мы смогли получить в результате.
#android #gradle #build
https://habr.com/ru/companies/vk/articles/838772/
🚀 Как автоматизировать процесс разработки и сделать жизнь android-разработчика проще? Ответы на эти вопросы найдете на Podlodka Android Crew с 16 по 20 сентября!
Podlodka Crew — это онлайн-конференции для IT-специалистов, которые фокусируются на практической пользе. Сессии проходят утром и вечером, чтобы вы могли совмещать их с работой.
Вас ждут:
- Пришёл, увидел, наплагинил: Павел Стрельченко из HeadHunter расскажет, как разработка плагинов для IntelliJ IDEA может стать вашей скрытой суперсилой.
- Автоматизация экспорта токенов из Figma: Никита Яцкивский из Магнит поделится опытом автоматизации экспорта дизайнерских токенов в код, что значительно ускоряет работу над проектом.
- Генерация шаблонного кода с помощью Geminio: Евгений Мельцайкин из СКБ Контур расскажет, как избавиться от повторяющегося кода и сосредоточиться на важных задачах.
- GitHub Actions: Никита Куликов из Flipper Devices объяснит, почему GitHub Actions стал доминирующим CI/CD инструментом для open-source проектов и как настроить его за считанные минуты.
Подключайтесь к Podlodka Android Crew, чтобы получить самые актуальные знания и практические советы! Билеты со скидкой: https://podlodka.io/droidcrew
А промокод сообщества android_crew_12_K2pP4j даёт скидку еще в 500 руб🥳
#реклама
Podlodka Crew — это онлайн-конференции для IT-специалистов, которые фокусируются на практической пользе. Сессии проходят утром и вечером, чтобы вы могли совмещать их с работой.
Вас ждут:
- Пришёл, увидел, наплагинил: Павел Стрельченко из HeadHunter расскажет, как разработка плагинов для IntelliJ IDEA может стать вашей скрытой суперсилой.
- Автоматизация экспорта токенов из Figma: Никита Яцкивский из Магнит поделится опытом автоматизации экспорта дизайнерских токенов в код, что значительно ускоряет работу над проектом.
- Генерация шаблонного кода с помощью Geminio: Евгений Мельцайкин из СКБ Контур расскажет, как избавиться от повторяющегося кода и сосредоточиться на важных задачах.
- GitHub Actions: Никита Куликов из Flipper Devices объяснит, почему GitHub Actions стал доминирующим CI/CD инструментом для open-source проектов и как настроить его за считанные минуты.
Подключайтесь к Podlodka Android Crew, чтобы получить самые актуальные знания и практические советы! Билеты со скидкой: https://podlodka.io/droidcrew
А промокод сообщества android_crew_12_K2pP4j даёт скидку еще в 500 руб🥳
#реклама
Недавно состоялись сразу два крупных обновления. И IntelliJ IDEA и Amplicode зарелизились с новыми версиями 2024.2. Про Amplicode я уже рассказывал в другой статье, в этой расскажу про IntelliJ IDEA Community Edition.
- Быстрый старт
- Режим К2
- Новый интерфейс включен по умолчанию
- Превью результатов поиска в Search Everywhere
- Улучшенная работа с логами
- Улучшенный дебаггер для Kotlin
- Визуализация строковых переменных для JSON, XML и других форматов
- Улучшенная работа с Gradle
- Улучшения, связанные с VCS
- Инкрементальная синхронизация Maven-проектов
#kotiln #idea #jetbrains #intellij
https://habr.com/ru/companies/haulmont/articles/839454/
- Быстрый старт
- Режим К2
- Новый интерфейс включен по умолчанию
- Превью результатов поиска в Search Everywhere
- Улучшенная работа с логами
- Улучшенный дебаггер для Kotlin
- Визуализация строковых переменных для JSON, XML и других форматов
- Улучшенная работа с Gradle
- Улучшения, связанные с VCS
- Инкрементальная синхронизация Maven-проектов
#kotiln #idea #jetbrains #intellij
https://habr.com/ru/companies/haulmont/articles/839454/
Хабр
Что нового в IntelliJ IDEA 2024.2
Недавно состоялись сразу два крупных обновления. И IntelliJ IDEA и Amplicode зарелизились с новыми версиями 2024.2. Про Amplicode я уже рассказывал в другой статьей , в этой расскажу про IntelliJ...
При targetSdk=35 режим edge-to-edge будет включен по умолчанию. Статья дает несколько советов по работе с ним.
- Use material components to make handling insets easier
- Draw backgrounds edge-to-edge, and inset critical UI
- Handle display cutout and caption bar insets
- Don’t forget the last list item
- Don’t forget IMEs
- For backwards compatibility, use enableEdgeToEdge instead of setDecorFitsSystemWindows
- Background protect system bars only when necessary
- Use Scaffold’s PaddingValues
- Use high level WindowInset APIs
- Prefer ViewCompat.setOnApplyWindowInsetsListener over fitsSystemWindows=true
- Apply insets based on app bar height on bar layout
#android #insets #targetsdk #migration
https://medium.com/androiddevelopers/insets-handling-tips-for-android-15s-edge-to-edge-enforcement-872774e8839b
https://medium.com/androiddevelopers/preview-and-test-your-apps-edge-to-edge-ui-da645c905d78
- Use material components to make handling insets easier
- Draw backgrounds edge-to-edge, and inset critical UI
- Handle display cutout and caption bar insets
- Don’t forget the last list item
- Don’t forget IMEs
- For backwards compatibility, use enableEdgeToEdge instead of setDecorFitsSystemWindows
- Background protect system bars only when necessary
- Use Scaffold’s PaddingValues
- Use high level WindowInset APIs
- Prefer ViewCompat.setOnApplyWindowInsetsListener over fitsSystemWindows=true
- Apply insets based on app bar height on bar layout
#android #insets #targetsdk #migration
https://medium.com/androiddevelopers/insets-handling-tips-for-android-15s-edge-to-edge-enforcement-872774e8839b
https://medium.com/androiddevelopers/preview-and-test-your-apps-edge-to-edge-ui-da645c905d78
Jetpack Navigation 2.8.0 принес нам стабильную Type safe навигацию.
#android #navigation
https://medium.com/androiddevelopers/type-safe-navigation-for-compose-105325a97657
#android #navigation
https://medium.com/androiddevelopers/type-safe-navigation-for-compose-105325a97657
Список изменений в Android 15
- Improving your developer experience
- Improving typography and internationalization
- Camera and media improvements
- Improving the user experience
- Privacy and security enhancements
- Get your apps, libraries, tools, and game engines ready!
- App compatibility
#android #release
https://android-developers.googleblog.com/2024/09/android-15-is-released-to-aosp.html
- Improving your developer experience
- Improving typography and internationalization
- Camera and media improvements
- Improving the user experience
- Privacy and security enhancements
- Get your apps, libraries, tools, and game engines ready!
- App compatibility
#android #release
https://android-developers.googleblog.com/2024/09/android-15-is-released-to-aosp.html
Рассуждения на тему, где и в какой момент лучше загружать данные: LaunchedEffect или ViewModel.init()
#android #kotlin #compose #architecture
https://proandroiddev.com/loading-initial-data-in-launchedeffect-vs-viewmodel-f1747c20ce62
#android #kotlin #compose #architecture
https://proandroiddev.com/loading-initial-data-in-launchedeffect-vs-viewmodel-f1747c20ce62
В огромном приложении Android с Clean Architecture много рутинной работы, связанной с отображением объектов между различными слоями. Хорошим решением будет автоматизация этого процесса.
В этой статье рассматривается опыт использования библиотеки MapStruct, которая помогает mapp-ить объекты.
Библиотека очень гибка в настройке. И позволяет минимизировать написание шаблонного кода.
#android #architecture #mapping
https://habr.com/ru/articles/839362/
В этой статье рассматривается опыт использования библиотеки MapStruct, которая помогает mapp-ить объекты.
Библиотека очень гибка в настройке. И позволяет минимизировать написание шаблонного кода.
#android #architecture #mapping
https://habr.com/ru/articles/839362/
Хабр
Mapping объектов с помощью MapStruct
В огромном приложении Android с Clean Architecture много рутинной работы, связанной с отображением объектов между различными слоями. Хорошим решением будет автоматизация этого процесса. В этой статье...
Ускоряем Android-приложения с помощью Baseline Profiles
В этой статье я расскажу, что такое Baseline Profiles, как он ускоряет запуск программы и каким приложениям он принесет больше пользы. В качестве примера возьму наш эксперимент, который ускорил время запуска приложения на 15%. Также расскажу, как мы автоматизировали добавление профилей в каждый релиз.
#android #build #performance
https://habr.com/ru/companies/avito/articles/842218/
В этой статье я расскажу, что такое Baseline Profiles, как он ускоряет запуск программы и каким приложениям он принесет больше пользы. В качестве примера возьму наш эксперимент, который ускорил время запуска приложения на 15%. Также расскажу, как мы автоматизировали добавление профилей в каждый релиз.
#android #build #performance
https://habr.com/ru/companies/avito/articles/842218/