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. Разберём как с ним связано ключевое...
👍17❤2🔥2
Инструкция по миграции с 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.
👍11🤡11😁4❤1
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/
👍12😁7🤔2
В файле 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...
👍21👎5
Интересный способ избавиться от 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/
👎60🤨15🤔8👍6💩3😁1
Вышел 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!
🔥7👍3❤1
Сравнение 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.
👍8👎4
Вдохновившись обновлением 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, но т.к. скорее...
👍23🤔4👎1🤡1
Переход на технологии и инструменты новых версий может быть обусловлен разными причинами: от банального появления проблем при работе с устаревшими версиями до желания получать больше возможностей. При этом для многих команд, независимо от причин, апгрейд стека является задачей, скрывающей не только выгоды, но и сложности, которые приходится стойко преодолевать.
Меня зовут Богдан Мащенко. Я 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/
🤮12👍8❤1
🚀 Как автоматизировать процесс разработки и сделать жизнь 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 руб🥳
#реклама
👍4
Недавно состоялись сразу два крупных обновления. И 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...
👍4
При 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
👍14❤1
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
👍34👎3
Список изменений в 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
👍5🔥1😢1
Рассуждения на тему, где и в какой момент лучше загружать данные: 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
🔥13👍4🤔1
В огромном приложении 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 много рутинной работы, связанной с отображением объектов между различными слоями. Хорошим решением будет автоматизация этого процесса. В этой статье...
👎12🤔8👍2❤1
Ускоряем 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/
👍10🔥4👏1
Новый урок по Compose
Продолжаем тему Stability на примере более сложных типов: коллекции, state holder, лямбды
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
Продолжаем тему Stability на примере более сложных типов: коллекции, state holder, лямбды
#android #course #compose
https://startandroid.ru/ru/courses/compose.html
👍32💩1
Разработчик из команды Compose рассказывает, как они оптимизировали свой Kotlin код.
#android #compose #kotlin #performance
https://www.youtube.com/watch?v=WAbaEE8qRdw
#android #compose #kotlin #performance
https://www.youtube.com/watch?v=WAbaEE8qRdw
YouTube
Going fast with Kotlin | Andrei Shikov
Recording brought to you by American Express. https://americanexpress.io/kotlin-jobs
Kotlin is leaning on JVM a lot, making most Java features accessible and easy to use. Sometimes, however, this results in curiously unexpected results during execution if…
Kotlin is leaning on JVM a lot, making most Java features accessible and easy to use. Sometimes, however, this results in curiously unexpected results during execution if…
👍10😁1
В Android блокируют установку приложений из сторонних источников. Почему это важно?
Разработчики Android-приложений теперь способны блокировать установку своего софта со сторонних источников. Т. е. создатель какой-то программы может разрешить ее установку лишь из Google Play. Запретить можно даже давно привычную многим установку из APK-файлов. А это может довольно сильно повлиять на баланс сил в экосистеме Android-приложений.
#android #store
https://habr.com/ru/companies/selectel/articles/843400/
Разработчики Android-приложений теперь способны блокировать установку своего софта со сторонних источников. Т. е. создатель какой-то программы может разрешить ее установку лишь из Google Play. Запретить можно даже давно привычную многим установку из APK-файлов. А это может довольно сильно повлиять на баланс сил в экосистеме Android-приложений.
#android #store
https://habr.com/ru/companies/selectel/articles/843400/
Хабр
В Android блокируют установку приложений из сторонних источников. Почему это важно?
Источник: androidauthority.com Сразу скажу, что это не централизованное блокирование со стороны самой корпорации Google. Нет, компания просто разрешила самим разработчикам ПО закрывать возможность...
👎22👍10😱5👾3🤷3