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

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

РКН https://abdev.by/rkn_tg_ab
Download Telegram
🚀 Вышел Jetpack Sqlite 2.5.0 с поддержкой KMP и добавлением абстракция над реализация SQLite в платформе или вовсе поставлять реализацию SQLite вместе с вашим приложением, чтобы всегда иметь самую свежую версий движка БД.

#sqlite #jetpack #android #ios #desktop
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Вышел первый релиз Jetpack Core-i18n

Вышел первый стабильный релиз Jetpack Core-i18n - библиотека для упрощения интернационализации приложения. Первый релиз фокусируется на форматирование даты и времени, а также бэкпорт android.icu.text.MessageFormat

dependencies {
implementation("androidx.core:core-i18n:$core_version")
}


#android #jetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Вышел Jetpack Datastore 1.1.5 где поменяли реализацию Storage по умолчанию с OkioStorage на FileStorage. Вызвано тем чтобы решить проблему с CorruptionException в PreferencesDataStore.

#jetpack #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
Вышла библиотека Jetpack Print 1.1.0, которая перешла на RGB формат при отправке изображения на принтеры для лучшей совместимости

#jetpack #jetpackupdate
🚀 Room 2.7.1 уже здесь! Исправлен IndexOutOfBoundsException при валидации type converters, а также runInTransaction() теперь работает с SQLiteDriver

#jetpack #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
📹 НОВОЕ ВИДЕО 🎉 Полный разбор Jetpack ViewModel для Android и Kotlin Multiplatform (44 мин)

ViewModel - один из самых популярных компонентов Android Jetpack в современной Android разработки. Уже сейчас там есть поддержку Kotlin Multiplatform.

Но знаете ли вы возможности ViewModel? Обо всём этом в новом видео на канале

Видео доступно на 📹 YouTube 📹 VK Video 📺 RuTube

#AndroidBroadcast #jetpack
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
🚀 Jetpack Core Telecom 1.0 - упрощение интеграция VoIP в Android приложениях

Библиотека содержит CallsManager API (обертка над ConnectionService) для интеграции Telecom фреймворка в приложения со звонками через интернет, чтобы обеспечить использования всех фичей Android платформы! Это включает в себя:
👉 системные уведомления
👉 приоритезацию работы Foreground Service для звонка
👉 Интеграцию с Bluetooth
👉 Интеграцию с умными часами и автомобилями
👉 Упрощение вывода аудио на разные устройства

Различные функции добавляются через механизм расширений. Можете взять уже готовые или реализовать свои!

#android #jetpack #jetpackupdate #voip
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Hilt переезжает на Kotlin 2 и будет работать над поддержку KSP2

#android #jetpack #kotlin #k2 #ksp
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 В Android 16 появится более тесная системная интеграция приложений с ИИ фичами на устройстве

App Functions - новая экспериментальная функция Android, которая позволит интегрироваться приложениям с поиском, но в первую очередь с AI, чтобы выполнять запросы пользователя. Например, "закажи еду", "вызови такси" и пр.

Возможности приложения будут индексироваться системным сервисом AppSearchManager

Точка входа - класс AppFunctionManager и специальный сервис AppFunctionService.

Уже также разрабатывается библиотека 🚀 Jetpack App Functions

#android16 #ai #jetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 Рассказали про возможности для работы со съемкой видео с помощью CameraX и редактированием видео через Jetpack Media3. Уже вполне можно накладывать эффекты и править видео

#android #jetpack #media3 #camerax
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉 Jetpack Navigation 3 - навигация для Compose, написанная с нуля!

Будем честны Jetpack Navigation for Compose было никаким решением, до того как в ней появилась типобезопасная навигация, но и тогда остается много вопросов. Google решила что пора написать настоящую навигацию для Compose. Знакомьтесь - Jetpack Nav 3

Ключевые идеи в новой библиотеки: декларативное объявление + "навигация как состояние". Это полностью повторяет идеи что я заложил в NavState. Все это вылилось в принципы:
👉 Разработчик управляет back stack
👉 Возможность расширения и реализации собственной навигации на базовых компонентах
👉 Анимации из коробки
👉 Поддержка Predictive Back
👉 Поддержка адаптивных layout
👉 Сохранения состояния каждого элемент back stack, включая ViewModel
👉 Поддержка многомодульности

Пока представлена только первая альфа и библиотеки еще предстоит путь, как минимум обзавестись поддержкой KMP

🔗 Больше подробности в документации
🐱 Примеры использования на GitHub

Надо покопаться в ней и сделать видео на тему!

#jetpack #compose #навигация
Please open Telegram to view this post
VIEW IN TELEGRAM
Пример использования Jetpack Compose Nav3
// Определите route в вашем приложении
@Serializable data object Home
@Serializable data class Product(val id: String)

// Создайте back stack, указав начальный route
val backStack = remember { mutableStateListOf<Any>(ProductList) }

// NavDisplay отображает ваш back stack
// Каждый раз, когда back stack меняется, отображение обновляется.
NavDisplay(
backStack = backStack, // Простой List<Any>

// Укажите, что должно происходить при нажатии кнопки "назад"
onBack = { backStack.removeLastOrNull() },

// Провайдер записей преобразует маршрут в NavEntry,
// который содержит контент для этого маршрута.
entryProvider = { route ->
when (route) {
is Home -> NavEntry(route) {
Column {
Text("Добро пожаловать в Nav3")
Button(onClick = {
// Чтобы перейти к другому экрану,
// просто добавьте его в back stack
backStack.add(Product("123"))
}) {
Text("Нажмите для навигации")
}
}
}
is Product -> NavEntry(route) { Text("Продукт ${route.id}") }
else -> NavEntry(Unit) { Text("Неизвестный route: $route") }
}
}
)


#jetpack #compose #навигация
🚀 Вышел Jetpack Window Manager 1.4 - библиотека для работы с разными форматами устройства и несколькими окнами с поддержкой KMP

Что нового в свежей версии:
👉 Улучшения Activity Embedding
👉 Улучшения API WindowMetrics
👉 Улучшили API для тестирования

#jetpack #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
📹 Адаптивная Android разработка сделает ваше приложение классным на любом устройстве - Google IO 2025

Очень полезный доклад про разработку адаптивного приложения по дизайну, фичам и поведению. Учитывая, стойкий тренд перехода Android разработки в KMP это как никогда актуально!

#android #adaptive #material3 #jetpack #googleio
Please open Telegram to view this post
VIEW IN TELEGRAM
В Jetpack делают KMP API для обработки системных жестов нажатия назад или Predictive Back

Новая библиотека Jetpack NavigationEvent содержит в себе API для обработки нажатия назад или для отслеживания прогресса жеста назад. API cхоже с Dispatcher которое было сделано для Back ранее. Поддерживаются KMP таргеты: Android, Desktop/JVM, iOS, JS, Linux, WASM, watchOS, tvOS, Ming

ComponentActivity реализует интерфейс NavigationEventDispatcherOwner:
interface NavigationEventDispatcherOwner {

val navigationEventDispatcher: NavigationEventDispatcher
}


NavigationEventDispatcher представляет собой класс, для передачи системны событий Назад:
class NavigationEventDispatcher(
private val fallbackOnBackPressed: (() -> Unit)?,
private val onHasEnabledCallbacksChanged: ((Boolean) -> Unit)?,
)
// Добавления callback чтобы слушать когда произйдет нажатие "Назад"
fun addCallback(
callback: NavigationEventCallback,
priority: NavigationEventPriority = NavigationEventPriority.Default
)

fun dispatchOnStarted(event: NavigationEvent)

fun dispatchOnProgressed(event: NavigationEvent)

fun dispatchOnCompleted()

fun dispatchOnCancelled()
}


В Android Activity можно подписаться на обработку события
class MyActivity : ComponentActivity() {

init {
navigationEventDispatcher.addCallback(
callback = object : NavigationEventCallback(
isEnabled = true,
priority = NavigationEventPriority.Default
) {
override fun onEventCompleted() {
// Back сделан
}
},
priority = NavigationEventPriority.Default
)
}
}


#android #jetpack #навигация #kmp #kotlin
🎉🚀 Новая Jetpack Библиотека - Photo Picker

Новая библиотека Jetpack Photo Picker позволит перенести встраиваемый Photo Picker из Android 16 на более ранние версии Android. Благодаря Mainline системе встраиваемый Photo Picker будет доступен на Android 14 и выше как часть ОС, а вот на других версиях будет помогать библиотека Jetpack Photo Picker, работающая скорее всего на основе Google Play Services.

Важно - сразу сделали версию для View и Compose

#android #jetpack #android16 #compose
Please open Telegram to view this post
VIEW IN TELEGRAM