📸Вышла Jetpack CameraX 1.5.0 с новыми фичами и готовым UI для видоискателя камеры
Что нового
🤖Camera Viewfinder - первый релиз стабильный релиз UI для показа камеры с простым встраиванием в UI (View и Compose)
⚙️ Первый релиз androidx.camera:camera-compose - работа с камерой в Compose UI
🛠 Исправление багов
// Пример View Finder в Compose
val currentSurfaceRequest: SurfaceRequest
by viewModel.surfaceRequests.collectAsState()
val coordinateTransformer = remember { MutableCoordinateTransformer() }
CameraXViewfinder(
surfaceRequest = surfaceRequest,
// Can also use EMBEDDED
implementationMode = ImplementationMode.EXTERNAL,
modifier =
modifier.pointerInput(Unit) {
detectTapGestures {
with(coordinateTransformer) {
val surfaceCoords = it.transform()
viewModel.focusOnPoint(
surfaceRequest.resolution,
surfaceCoords.x,
surfaceCoords.y
)
}
}
},
coordinateTransformer = coordinateTransformer
)
#android#камера#jetpack#compose
🎉Вышел стабильный релиз ViewBindingPropertyDelegate 2.0
Мажорная версия обновилась из-за изменения работы библиотеки под капотом. На смену использования Lifecycle для отслеживания события создания/уничтожения View в Activity/Fragment пришли ActivityLifecycleCallback и FragmentLifecycleCallback, что позволило избавиться от багов при переключении Fragment и других моментов.
Последствием такого стало удаление множества API, которое писалось как необходимая часть для корректной работы. Например, библиотека под капотом не выполняет никаких проверок на то корректный ли момент для получения View сейчас, а полностью полагается на поведение системы и Jetpack библиотек.
Следствием таких изменение стало смена пакета API c com.github.kirich1409.viewbindingpropertydelegate на dev.androidbroadcast.vbpd, а также id артефакта в Maven Central. Это позволит работать версии 1.X и 2.X быть подключенным в проект одновременно и делать миграцию поэтапно. Либо просто выполним глобальную замену строки со старым пакетом на новый!
Знаю, что в эру Compose вам уже и не нужна эта библиотека, но точно не все перешли на Compose и пользователи решения остаются!
Если вы найдёте баги или проблемы - пишите в комментариях под постом или создавайте issue
#android#viewbinding#AndroidBroadcast
🔨Вышел AGP 9.2.0 с одной экспериментальной фичей и набором фиксов.
Главное новшество — unified coverage and test reports. Плагин теперь умеет генерировать HTML-дашборд, который объединяет результаты unit и instrumentation тестов по всем модулям и вариантам сборки в одном месте. Пока это эксперимент: нужно включить флаг android.experimental.reportAggregationSupport=true в gradle.properties.
🛠 Из фиксов стоит выделить несколько практически значимых: починили переименование APK через новый AGP DSL, исправили падение JdkImageTransform при использовании JDK 26, починили поведение Android Lint с флагом --quiet и сломанную работу кастомных lint-правил, скомпилированных под Java 21 bytecode.
Совместимость: Gradle 9.4.1, SDK Build Tools 36.0.0, JDK 17, максимальный API level 36.1.
Единый тест-дашборд — нужная штука для проектов с большим количеством модулей, где сейчас результаты разбросаны по папкам. Подожду stable прежде чем трогать в рабочем проекте, но направление правильное.
#Android#AGP#Gradle