Android Broadcast
14.1K subscribers
3.44K photos
310 videos
11 files
5.75K links
Подборка новостей и статей для Android разработчиков.

Связь с автором @android_broadcast_bot
Реклама @android_broadcast_bot

РКН https://abdev.by/rkn_tg_ab
Download Telegram
Вышел Coil 3.1.0 - популярный загрузчик картинок с поддержкой KMP

👉 Улучшили производительность AsyncImage: скорость работы стала лучше на 25-40%, а потребление памяти - на 35-48%
👉 FakeImage теперь deprecated
👉 Появился ColorImage - полезен для возвращения фейковых значений в тестах и для Compose превью
👉 coil-compose-core больше не зависит от Dispatchers.Main.immedate, что позволило исправить баги в работе Paparazzi и Roborazzi
🛠 Множество других исправлений и улучшений API

#kmp #android #compose
Media is too big
VIEW IN TELEGRAM
В Android Studio Meerkat 2024.3.1 появится возможность создавать KMP Shared модуль для Android и iOS

#androidstudio #kmp #android #ios
🚀 Вышла первая Beta версия Room 2.7.0. Самое важное нововведение - переход на KMP с поддержкой Android, iOS и Desktop 🔥🔥🔥. Также на Android теперь можно использовать SQLite из артефакта, а не только тот что в Android ОС

#android #kmp #jetpack #room #sqlite
Please open Telegram to view this post
VIEW IN TELEGRAM
🪙 Настройка качества контроля кода в KMP проекте и автоматизация запуска проверок локально и на CI (40 мин)

Продолжаю рассказывать про ход разработки KMP + Compose клиента для Frame.io. В новой части показываю как я настроил анализаторы кода: KtLint, Detekt, Gitleaks, Manifest Guard и другие, а также как стоит подходить к оптимизации скорости проверок локально и на CI. Полезно как для командных проектов, так и для ваших личных проектов (я бы тут даже сказал что еще важнее)!

✉️ Также видео доступно в Telegram (нужно оформить подписку)

Список всех вышедших и планируемых видео тут

#AndroidBroadcast #frameio #kmp #android #ios #качествокода
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Тестирование ViewModel стало проще

В AndroidX Lifecycle 2.9.0 появилось новое API для тестирования ViewModel - ViewModelScenario. Для использования этого API необходимо подключить артефакт "androidx.lifecycle:lifecycle-viewmodel-testing".

Пример использования:
class JetpackViewModelTest {

@Test
fun testStateRestoration() = runTest { // this = TestScope
viewModelScenario { // this = CreationExtras
SampleViewModel(
scope = this@runTest,
saveStateHandle = createSavedStateHandle(),
)
}.use { scenario: ViewModelScenario ->
scenario.state.data = "testValue"
scenario.recreate()
assertEquals("testValue", scenario.state.data)
}
}
}

class SampleViewModel(
scope: CoroutineScope,
private val saveStateHandle: SavedStateHandle,
) : ViewModel(scope) {
companion object {
private const val STATE_KEY = "state_key"
}

var data: String?
get() = saveStateHandle.get<String>(STATE_KEY)
set(value) {
saveStateHandle.set(STATE_KEY, value)
}
}


#android #kmp #тестирование #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
Вышел Room 2.7.0-rc01 где исправили баг Room, который приводил к крешу KSP процессора на iOS с Kotlin 2.1

#android #jetpack #kmp #sqlite
💉 Koin Annotations 2.0 Stable

Koin Annotations — надстройка над Koin для описания зависимостей с помощью аннотаций и последующей генерации части графа для них.

Что нового в движке:
👉 Совместимость с KSP2
👉 Улучшена работа компилятора DI кода
👉 Улучшена генерация кода
👉 Полноценная поддержка KMP проектов
👉 Шаринг описаний зависимостей между модулями проектов
👉 Работает с Koin 4.0, Kotlin 2.0.21 и KSP 2.0.21-1.0.28

Новые фичи для разработчиков:
👉 Создание собственных аннотаций квалификаторов
👉 Автоматические биндинги
👉 ComponentScan работает сквозь Gradle модули
👉 Аннотации над ViewModel (работает с Jetpack и KMP)
@KoinViewModel
class MyViewModel(deps: Deps): ViewModel()


Ссылка без VPN

#kotlin #kmp #di #koin
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
📺 Обзор Kotlin Inject или как будет выглядеть Dagger на Kotlin Multiplatform

Обзор библиотеки Kotlin Inject - DI для KMP, API которого аналогично Dagger. В видео происходит демонстрация возможностей, сравнение с другими DI и личное мнение о том стоит ли использовать эту библиотеку в проде.

#видео #kmp #di
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Jetpack Room 2.7.0 RC02 с фиксами

Всё также идет подготовка к первому стабильному релизу Room с поддержкой KMP, самые важные:
🔥 Исправлено падение компилятора с NPE при обработке не JVM исходников через KSP
🛠 Исправлены Авто Миграции при добавление новой колонки в FTS таблице

#android #jetpack #room #sql #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
📹 Вышли все видео с Mobius Осень 2024 (78 штук)

Новый Mobius приближается и традиционно открывается плейлист со всеми видео прошедшей конференции

Также можно посмотреть на 📹 VK Video

В комментариях делитесь самыми интересными докладами и что в них было полезного

#android #ios #flutter #kotlin #kmp #mobius
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Вышел Jetpack Room 2.7.0 RC03 с важными исправлениями багов перед выходом первой стабильной версии с поддержкой KMP

#android #jetpack #jetpackupdate #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
🏝 BundledSQLiteDriver: новый взгляд на SQLite в Android и Kotlin Multiplatform (12м)

Чтобы добавить поддержку других платформ в Jetpack Room, необходимо было обеспечить совместимость с различными версиями SQLite, встроенными в ОС, а также с теми, которые могут подключаться отдельно. Результатом стал BundledSQLiteDriver, который позволяет использовать актуальную версию SQLite, поставляемую отдельно, и применять её на всех платформах.

В статье подробно рассматриваются особенности этого подхода к работе с SQLite в Room.

#kotlin #kmp #android #jetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
‼️🏝 KMP Разработчики не обновляйте XCode до 16.3

В Kotlin 2.1.20 несовместим со свежей версий XCode, поддержка будет в Kotlin 2.1.21. Отложите обновление!

#kotlin #kmp #xcode
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Вышла новая версия Jetpack Room 2.7.0 с поддержкой KMP.

🔥 Главное нововведение этой версии Room — рефакторинг библиотеки для поддержки нескольких платформ через KMP: Android, iOS, JVM (Desktop), native Mac и native Linux. Документацию о том, как начать, можно найти здесь. В рамках поддержки KMP было выделено SQLiteDriver.

🏝 При использовании KSP теперь будет генерироваться код на Kotlin, а для KAPT или проектов с Java — на Java.

🏝 Поддерживается Kotlin 2.0 и выше, также рекомендуется использовать KSP2.

#android #kmp #jetpack #ios #desktop #mac #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
Reanimator - простоя библиотека для Jetpack ViewModel (с поддержкой KMP) для работы с состоянием. Подробный разбор в статье (EN,11м) или альтернативной ссылке

@Serializable
data class MyUiState(
// Persistent
val data: List<String> = emptyList(),
val selectedItem: String? = null,
// Transient
val isLoading: Boolean = false,
val error: String? = null
)

class MyViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {

// Define which properties are transient
private val transientProps = listOf("isLoading", "error")

// Declare your state flow - Reanimator handles the rest!
private val _uiState by savedStateHandle.getMutableStateFlow(
defaultValue = MyUiState(), // Initial/default state
coroutineScope = viewModelScope, // Scope for saving changes
transientProperties = transientProps // What NOT to save
// key = "custom_state_key" // Optional: custom key
)
val uiState: StateFlow<MyUiState> = _uiState.asStateFlow()

// ... rest of your ViewModel logic ...

fun updateData(newData: List<String>) {
// Just update the state - Reanimator saves persistent parts automatically
_uiState.update { it.copy(data = newData, isLoading = false) }
}
}


#android #kmp
📹 Compose/iOS готов к продакшену? Прямой эфир с ответами на вопросы
Когда: четверг, 8 мая, 18:30 (GMT+3)

Буквально вчера вышел Compose iOS Stable и конечно же открывает возможности Android разработчиками по написанию мобильных приложений под обе платформы. Но всё ли так сладко, как заявляет JetBrains? Будем разбираться в этом с экспертом кто уже познал прелести продакшена!

👨‍💻 Эксперт - Никита, фуллстек Kotlin разработчик, автор проектов FlowMVI и respawn.pro. При анонсе Compose iOS Stable, его приложение было в официальном анонсе 🔥

👨‍💻 И еще одни эксперт - Чикишев Тимур, Senior Android разработчик в KTS. Начал пробовать Compose iOS еще до официального релиза. Успел адаптировать Android приложение с Compose на iOS, буквально на этой неделе сделали релиз

Задавайте свои вопросы в комментариях к посту, чтобы они были заданы на эфире

#android #compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
📹 Android Developers Backstage 215. KMP. Have your code and eat it too

Software Engineers Dustin Lam и Yigit Boyar присоединяются к ведущему Tor Norbye, чтобы обсудить Kotlin Multiplatform (KMP).

0:00 - Введение
0:29 - Что такое KMP: не новый продукт, а Kotlin с новыми возможностями
3:20 - Зачем нужен KMP: преимущества и цели
6:17 - KMP vs. другие кроссплатформенные фреймворки
6:41 - Общая бизнес-логика — основной сценарий использования
9:18 - Практическое внедрение: превращение Android-приложения в KMP
13:15 - Работа с платформо-специфичными зависимостями
28:56 - Поддержка библиотек в Kotlin Multiplatform
35:56 - Developer Experience: инструменты и интеграция
40:16 - Совместимость с iOS: как добиться взаимодействия
42:51 - KMP в действии: как Google использует эту технологию
47:17 - Долгосрочное видение и потенциал KMP
51:30 - Консистентность поведения vs. нативная производительность
55:32 - Попробуйте KMP и присоединяйтесь к разработке!

#android #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Релиз Jetpack Navigation 2.9.0

🛠 Значительные переработки под капотом для улучшения поддержки KMP
👉 Добавлена поддержка обработки deep link из Kotlin Common кода
👉 Улучшения API

#jetpack #jetpackupdate #navigation #compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Релиз Jetpack Lifecycle 2.9.0: тестирование ViewModel и больше KMP

🎉 Новый артефакт lifecycle-viewmodel-testing - KMP библиотека для тестирования ViewModel в изоляции с помощью ViewModelScenario
👉 SavedStateHandle теперь может возвращать MutableStateFlow
👉 CreationExtras добавили перегрузки операторов in, +=, и +

Больше поддержки KMP
👉 lifecycle-testing, lifecycle-viewmodel-savedstate теперь полностью KMP библиотеки
👉 LocalLifecycleOwner стал доступен из common кода
👉 ViewModelProvider.NewInstanceFactory теперь доступна для Android и JVM

#android #jetpack #jetpackupdate #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 SavedState 1.3.0: Поддержка KotlinX Serialization и Kotlin Property delegate для удобства работы

Что нового:
👉 SavedState теперь полностью KMP библиотека с поддержкой Android, iOS, Linux, Mac и JVM
👉 LocalSavedStateRegistryOwner теперь не является частью Compose UI, а будет частью нового артефакта - savedstate-compose
👉 Появился обобщенный тип SavedState, который Bundle на Android и Map<String, Any> на других платформах
 // Создаем SavedState с помощью DSL:
val savedState = savedState {
putInt("currentPage", 1)
putString("filter", "favorites")
}

val currentPage = savedState.read { getInt("currentPage") }
savedState.write { remove("currentPage") }


🏝 Добавили поддержку KotlinX Serialization 🔥
@Serializable
data class Person(val firstName: String, val lastName: String)

fun main() {
val person = Person("John", "Doe")
val encoded: SavedState = encodeToSavedState(person)
val decoded: Person = decodeFromSavedState(encoded)
}


🏝 Используйте новый делегат saved в Activity и ViewModel
class MyActivity : ComponentActivity() {
var person by saved { Person("John", "Doe") }

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
this.person = Person("Jane", "Doe")
}
}

class MyViewModel(handle: SavedStateHandle) : ViewModel() {
var person by handle.saved { Person("John", "Doe") }

fun onPersonChanged(person: Person) {
this.person = person
}
}


#android #jetpack #jetpackupdate #kmp #kotlin #ios #desktop
Please open Telegram to view this post
VIEW IN TELEGRAM