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