Android Broadcast
14.4K subscribers
3.68K photos
367 videos
11 files
6.1K links
Подборка новостей и статей для Android разработчиков.

Реклама и связь с автором @ab_manager

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
📹 Самое важное с Google I/O 2025 для Android и KMP разработки (24 мин)

Посмотрел Keynote, разобрал анонсы, посмотрел доклады и рассказал все самое интересное на что стоит обратить ваше внимание!

Видно также доступно на 📹 VK Video

P.S. Новости как формат вернулись на канал

#AndroidBroadcast #googleio #android #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥173
🏝 Проблемы с порядком Gradle Task при использовании KSP 2.0.2

Продолжаю разработку проекта FrameIO - Kotlin Multiplatform клиента для сервиса frame.io и стоклнулся с падением сборки из-за порядка задач (ниже стек с примером проблемы):

Some problems were found with the configuration of task ':module:kspDebugKotlinAndroid' (type 'KspAATask').
- Gradle detected a problem with the following location: './module'.

Reason: Task ':module:kspDebugKotlinAndroid' uses this output of task ':module:javaPreCompileDebug' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed.

Possible solutions:
1. Declare task ':module:javaPreCompileDebug' as an input of ':module:kspDebugKotlinAndroid'.
2. Declare an explicit dependency on ':module:javaPreCompileDebug' from ':module:kspDebugKotlinAndroid' using Task#dependsOn.
3. Declare an explicit dependency on ':core:user-session:javaPreCompileDebug' from ':module:kspDebugKotlinAndroid' using Task#mustRunAfter.

For more information, please refer to https://docs.gradle.org/8.14.2/userguide/validation_problems.html#implicit_dependency in the Gradle documentation.


Стек для сборки: Gradle 8.14.2, Kotlin 2.2.0, KSP 2.2.0-2.0.2, AGP 8.11.0

Решения проблемы пока нету в KSP (одно из issue), поэтому я задаю порядок Gradle Task сам:

// build.gradle.kts модуля где подключен ksp
afterEvaluate {
android.libraryVariants.forEach { variant ->
val variantCapitalized = variant.name.capitalized()
tasks.named("ksp${variantCapitalized}KotlinAndroid") {
dependsOn(
"${variant.name}AssetsCopyForAGP",
"process${variantCapitalized}Manifest",
"write${variantCapitalized}AarMetadata",
"javaPreCompile${variantCapitalized}",
"merge${variantCapitalized}Assets",
"merge${variantCapitalized}JniLibFolders",
"merge${variantCapitalized}NativeLibs",
"copy${variantCapitalized}JniLibsProjectOnly",
"generate${variantCapitalized}EmptyResourceFiles",
"copy${variantCapitalized}JniLibsProjectAndLocalJars",
"prepare${variantCapitalized}ArtProfile",
"write${variantCapitalized}LintModelMetadata",
"extractProguardFiles",
"prepareLintJarForPublish",
)
}
}
}


#android #kmp #koltin #ksp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍97🤯6
🤖 Jetpack Lifecycle теперь поддерживает все KMP тартеты

В версии Jetpack Lifecycle 2.9.2 добавили поддержку WasmJS тартега, а это значит что библиотека теперь может работать на всех KMP таргетах: JVM (Android, Desktop), Native (Linux, iOS, watchOS, macOS, MinGW) и Web (JavaScript, WasmJS)

#android #kmp #wasmjs #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥61🎉1
🤖 Jetpack SavedState теперь поддерживает все KMP таргеты

Jetpack SavedState 1.3.1 закончила разработку поддержку KMP. Теперь все существующие таргеты добавлены: JVM (Android, Desktop), Native (Linux, iOS, watchOS, macOS, MinGW) и Web (JavaScript, WasmJS)

Jetpack SavedState - это библиотека для сохранения состояния ViewModel при смерте процесса приложения

class SavedStateViewModel(
private val savedStateHandle: SavedStateHandle,
) : ViewModel() {
val filteredData: StateFlow<List<String>> =
savedStateHandle.getStateFlow<String>("query")
.flatMapLatest { query ->
repository.getFilteredData(query)
}

fun setQuery(query: String) {
savedStateHandle["query"] = query
}
}


#android #kmp #wasmjs #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉25👍9🔥3
🤖 Стартанула разработка Room 2.8.0. В первой альфе добавили поддержку KMP Apple таргетов Watch OS и TV OS

#kmp #sqlite #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🎉2
🤯 Команда Anvil решила прекратить развитие проекта в пользу другого решения

Anvil - Kotlin плагина для расширения возможностей Dagger 2 и упрощения работы с ним решили прекратить развивать. Коллега автором решения сделал Metro и компания будет переходить на него и участвовать в его развитии.

Metro - это compile-time DI фреймворк с поддержкой KMP, который вдохновлялся Dagger, Anvil, Kotlin-Inject.


#di #kmp
🏆27🤔14🔥3👍1
🚀 Jetpack Lifecycle позволит создавать дочерние Lifecycle в Compose

В Jetpack 2.10.0-alpha01 появилась новая Composable функция LifecycleOwner для создания дочернего Lifecycle. Изменение нужно для Navigation3.

@Composable
fun MyComposable() {
LifecycleOwner(
maxLifecycle = RESUMED,
parentLifecycleOwner = LocalLifecycleOwner.current,
) {
val childLifecycleOwner = LocalLifecycleOwner.current
}
}


#compose #jetpack #android #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔236👍4🔥4
🚀 Jetpack Paging теперь поддерживает таргеты watchos, tvos, mingwX64, watchosDeviceArm64 и linuxArm64

#jetpack #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Статья с громким названием "Динамические обновления без релизов и BDUI". "Ну вот она инновация", осторожно подумал я перед прочтением

Да, ребята не используются подход BDUI, но фактически вся динамика работает на JS. Как мне показалось, получился некий аналог ReactNative, но специфичный под задачи приложения.

Даже не знаю, лучше или хуже будет BDUI, но можно ли сильно оптимизировать выполнение JS?. JavaScript еще и однопоточный и требует работы между виртуальной машиной для выполнения Java кода и JS

#android #bdui #kmp
👍17🤯115🤔1🤝1
Media is too big
VIEW IN TELEGRAM
📹 Собеседование на Kotlin Multiplatform разработчика
🎙 Проводит — Алексей Панов @kotlin_adept
🗓 Понедельник, 20 октября, 19:00 (GMT+3)

Kotlin Multiplatform (KMP) набирает всё большую популярность — растёт количество вакансий и интерес со стороны компаний.

Я давно хотел провести реальное собеседование, где Android-разработчика с опытом в KMP будут спрашивать на позицию, где придётся писать на KMP каждый день:
иногда с использованием Compose, а иногда — только шаря логику между платформами.

Будет жарко 🔥
Алексей — один из самых опытных разработчиков, кто давно пишет KMP в проде и отлично понимает экосистему.

Кстати, у него классный Telegram-канал @kotlin_adept — там много полезных инсайтов про KMP.

❗️Запись собеседования появится на канале после эфира.

#AndroidBroadcast #kmp #compose #собеседование #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥46👍144
🤯 А что вообще считать маленьким проектом в 2025 году?

В закрытом чате обсуждали, какого ноутбука хватит под «маленький KMP-проект» — но вот с тем, что считать маленьким, договориться не смогли.

Приложение с тремя экранами, но двенадцатью Gradle-модулями — это ещё маленькое?
KMP, но «только чуть-чуть под iOS» — считается?
Или когда просто хотел попробовать Compose, а закончил с DI, Router и UseCase на одну строчку логики?

В чём вообще измерять размер проекта — в строках кода, количестве модулей, экранах, фичах или времени сборки?

У меня есть мнение, но интересно, где проходит грань у вас 😏
Комментарии открыты — давайте поругаемся конструктивно.

#архитектура #android #kmp
🤯21👍124
Android Broadcast
📹 Собеседование на Kotlin Multiplatform разработчика 🎙 Проводит — Алексей Панов @kotlin_adept 🗓 Понедельник, 20 октября, 19:00 (GMT+3) Kotlin Multiplatform (KMP) набирает всё большую популярность — растёт количество вакансий и интерес со стороны компаний.…
🏝 Леша Панов @kotlin_adept поделился материалами для углублённого изучения KMP, которые помогут вам глубже разобраться в принципах работы Kotlin Multiplatform и Kotlin Native, а также лучше понять нюансы интеропа со Swift-кодом.

❗️ Подробности в канале Леши

#kmp #swift #native
Please open Telegram to view this post
VIEW IN TELEGRAM
👍226🔥5🤔1
🤖 Google выпустила базовый курс по Kotlin Multiplatform для Android-разработчиков

Если вы уже уверенно пишете под Android, но хотите понять, как работает 🏝 Kotlin Multiplatform — этот курс станет отличной стартовой точкой.
Он включает теорию (видео и статьи) и практические задания 🧩

Из курса вы узнаете:
👉 Как устроена разработка с Kotlin Multiplatform
👉 Как превратить Android-проект в KMP с Android-таргетом
👉 Как использовать common- и platform-specific API
👉 Как интегрировать код в iOS-приложение
👉 Как мигрировать существующие решения на KMP

#kmp #kotlin #android #google #курс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥78👍14🙏1
🏝🤖 На сайте Android Developers обновили материалы по Kotlin Multiplatform:
👉 Обновили главную страницу
👉 Появился базовый курс по KMP (бесплатный)
👉 Обновленные руководство по использованию Jetpack библиотека с поддержкой KMP

#android #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38🔥71
🚀 Вышел SavedState 1.4.0 — теперь с поддержкой nullable типов

Saved State — это библиотека Jetpack, которая помогает сохранять и восстанавливать состояние при пересоздании, например из-за изменений конфигурации в Android или при выгрузке процесса системой. Поддерживает Kotlin Multiplatform


Вышел androidx.savedstate:1.4.0, и в этом обновлении основное внимание уделено улучшению API. Ключевое изменение - добавлена нативная поддержка nullable типов в SavedStateRegistryOwner.saved, а также в функциях encodeToSavedState() и decodeFromSavedState() — теперь можно напрямую сохранять и восстанавливать null-значения без костылей.

// Теперь это работает корректно без дополнительных проверок.
var name: String? by savedState(saved = "name", default = null)


#android #jetpack #kotlin #kmp #jetpackupdate #androidjetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥81
🪙 Полный разбор Ktor Client (1 час)

Рассказываю про устройство и фичи Ktor Client, в также про миграцию с OkHttp и и Retrofit на решение для KMP

#AndroidBroadcast #разбор #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
61🔥405👍3🤔3🤯2
🚀 Вышла стабильная версия Jetpack Navigation 3 - бибилотека для UI навигации, заооченная под Compose

Стал доступен первый стабильный релиз навигации, разработанной специально для Compose. Библиотека предоставляет больше гибкости и контроля разработчикам, позволяя реализовать различные подходы. Google выложила свои примеры реализации популярных задач в репозитории на 🐱GitHub

Nav3 имеет поддержку Compose Multiplatform, а также JetBrains выпустила версию артефактов

👉 Документация по библиотеке

Всем кто использует Jetpack Navigation 2 с Compose нааооятельно рекомендуется миграция.
🔨Руководство по миграции
⭐️ Также Google сделала файл с контекстом для AI агента при миграции

Про возможности бибилотеки я рассказал в 📹 отдельном видео

#android #compose #kmp #cmp #jetpack #ui #nav3
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥56👍9🤔53
🚀 Navigation Event 1.0.0 — новая KMP-библиотека для обработки навигации на разных платформах

Что дает библиотека
👉 Единый кроссплатформенный API для замены разрозненных решений
👉 Централизованная система управления всей навигацией в приложении
👉 Базовый слой для будущих навигационных решений Android

Пример использования:
val myHandler = object : NavigationEventHandler<NavigationEventInfo>(
initialInfo = CurrentInfo,
isBackEnabled = true
) {
override fun onBackStarted(event: NavigationEvent) {
// Подготовка к навигации
}

override fun onBackProgressed(event: NavigationEvent) {
// Анимации на основе event.progress
}

override fun onBackCompleted() {
// Завершение навигации
}
}


👉 Готовая интеграция с Compose
val navEventState = rememberNavigationEventState(
currentInfo = CurrentInfo,
backInfo = PreviousInfo
)

NavigationBackHandler(
state = navEventState,
isBackEnabled = true,
onBackCompleted = { /* Действие при завершении */ }
)


👉 Диспетчеры могут образовывать родительско-дочерние цепочки:
// Compose
val childDispatcher = rememberNavigationEventDispatcher(
parent =
LocalNavigationEventDispatcherOwner
.current
.navigationEventDispatcher
)


👉 Нативная поддержка Predictive Back из Android
👉 Библиотека уже используется в Activity 1.12.0 как базовый слой

#Jetpack #Navigation #Compose #KMP #PredictiveBack #Kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍162