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
Media is too big
VIEW IN TELEGRAM
📹 НОВОЕ ВИДЕО. Разбор возможностей меню разработчика на Android устройстве

Меню Android разработчика таит в себе много полезных настроек, которые нужны, чтобы качественно протестировать работу приложения на устройстве и сделать то, что не получится делать из Android Studio.

Советую посмотреть всем разработчикам и специалистам по тестированию

#android #android15
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33
🏝 Kotlin where: Элегантное ограничение типов для чистоты и безопасности

Как часто в Android-разработке вы видели сомнительные as-приведения? 🤔

Вот пример, который недавно попался мне на глаза:

class Sample(private val activity: Activity) {

fun doSomething() {
// Опасно! Может упасть с ClassCastException,
// если activity не реализует LifecycleOwner
(activity as LifecycleOwner).lifecycle.addObserver(...)
}
}


Опустим тот факт, что здесь стоит использовать слабую ссылку (WeakReference) на Activity. Меня больше смутила необходимость вручную приводить Activity к LifecycleOwner.

Да, в современной Android-разработке AppCompatActivity и FragmentActivity реализуют этот интерфейс. Но наша цель — писать чистый и стабильный код, который не полагается на слепую веру, а гарантирует безопасность на уровне типов.

💡Решение: Ограничение типов с помощью where

В Kotlin мы можем использовать условие where для универсальных параметров, чтобы указать: «класс A должен быть одновременно и Activity, и LifecycleOwner

class Sample<A>(private val activity: A)
where A : Activity,
A : LifecycleOwner {

fun doSomething() {
// Теперь activity можно использовать как LifecycleOwner
// БЕЗОПАСНО и без приведения типов
activity.lifecycle.addObserver(...)
}
}


Этот же подход отлично работает и для функций:

fun <A> doSomethingWith(activity: A)
where A : Activity,
A : LifecycleOwner {
// Полная типобезопасность
activity.lifecycle.addObserver(...)
}


В чем выигрыш?

Безопасность: Компилятор гарантирует, что в класс Sample или функцию doSomethingWith можно передать только объект, который удовлетворяет обоим условиям:
1️⃣Исключаются ошибки ClassCastException в рантайме.
2️⃣Чистота кода: Исчезают громоздкие и опасные приведения через as.
3️⃣ Выразительность: Сигнатура класса/функции явно сообщает о своих требованиях к переданным зависимостям.

Используйте силу системы типов Kotlin на полную! Это делает код не только чище, но и стабильнее. 💪

#kotlin #android #androiddev
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍161🔥3622
🤖 Google прокачала удаление неиспользуемых ресурсов в Android Gradle Plugin

В Android Gradle Plugin 8.12.0 представили обновленный resource shrinker - инструмент, который удаляет неиспользуемые ресурсы в финальной сборке приложения.

К посту добавил результаты использования нового шринкера на проекте Androidify. Впечатляет конечно, особенно что сложной настройки не надо.

Чтобы попробовать оптимизированный shrinker, надо включить саму утилиту для модуля и добавить опцию в настройки:
// Добавляем в gradle.properties
android.r8.optimizedResourceShrinking=true


#android #оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6411🤔6
😂 Использование ИИ для разработки: В 4 раза быстрее, в 10 раз больше уязвимостей

Израильская Apiiro представила отчёт о трендах кода от ИИ. На основе богатого набора данных о том, как разработчики пишут код, компания утверждает: из-за ИИ производительность выросла, но безопасность страдает.

Совсем неудивительно. Разработчики решили, что проверять код не стоит, или вовсе менеджеры решили что разработчики не нужны и мы теперь всё сами! К ИИ стоит относиться как активному джуну, который херачит код не в себя! Пустите такой код в прод без ревью или покрытия тестами поверх? Можно ли этому AI доверить покрытие его же кода тестами?

#ai
🤔36🤯11👍9🔥61🤝1
🤖 В Android Unit тестах теперь можно положить AndroidManifest.xml, которая будет мержится с манифестом приложения. Тем, кто использует Robolectric, теперь станет жить попроще

Не забудьте только в Gradle модуле включить опцию android.testOptions.unitTests.includeAndroidResources

#android #тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🤔9🔥63
🚀 Вышел Room 2.8.0

Самая важная (она и единственная) фича свежего релиза - получение SupportSQLiteDatabase, являющегося оберткой над RoomDatabase с SQLiteDriver. Честно, не знаю кому это пригодится, поэтому будет полезно узнать от вас в комментариях практический опыт.

Менее масштабные, но всё же важные изменения:
👉 minSdk подняли с 21 до 23
👉 Добавили поддержку KMP таргетов: watchOS и tvOS
🛠 Исправили баги

#android #jetpack #androidjetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥52
📸 Вышла 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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3310👍9
🤖 Важность HDR в приложениях для передачи естественных цветов

Почитал интересную статью от Google про важность использования HDR. Самое важное - HRD не только про яркость, а именно про правильность передачи цветов в приложениях, особенно когда дело касается фото.

В Android 15 появилось API для контроля того смешивания HDR и SDR контента:
// Требуется, чтобы Windows учитывало желаемый HDR headroom.
// Обратите внимание, что эквивалентный API в SurfaceView НЕ требует
// COLOR_MODE_HDR для ограничения headroom,
// если на SurfaceView отображается HDR-контент.
window.colorMode = ActivityInfo.COLOR_MODE_HDR

// разные значения headroom могут
// использоваться в зависимости от
// желаемого headroom контента
// И особенностей UI-дизайна приложения.
window.desiredHdrHeadroom = when {
/* только SDR */ -> 0f
/* Смешанный, в основном SDR */ -> 1.5f
/* Смешанный, в основном HDR */ -> 3f
/* только HDR */ -> 5f
else -> 0f
}


#android #hdr #android15
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112
This media is not supported in your browser
VIEW IN TELEGRAM
🤯 Сегодня я на Big Tech Night 🔥5 компаний: Яндекс, Сбер, Т-Банк, Lamoda, X5 открыли двери своих офисов, сделали программу из докладов и развлечений. Я буду в офисе Яндекса до самого вечера. Хочу послушать доклады про AI и почувствовать в движе!

Всё буду рассказывать в комментариях под постом 🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
👍266🤔6
This media is not supported in your browser
VIEW IN TELEGRAM
👍18
Forwarded from AvitoTech
☄️Если вы знаете, что такое ZX Spectrum, IBM, и даже «Фаэтон-1»

То сейчас вас охватит приступ ностальгии, а рука сама потянется к детским альбомам или …Dendy! В честь наступающего Дня разработчика решили вспомнить, с чего начинались первые шаги в IT авитовцев. В карточках — только часть историй, а все-все-все можно прочитать здесь. Только осторожно, там ооочень залипательно!

В комментариях поздравляйте и отмечайте коллег и, конечно, делитесь своими историями/фотографиями cо своими первыми гаджетами ⬇️

package main

import "fmt"

func main() {
fmt.Println("Поздравляем с Днём разработчика! 🎉")


#frontend #backend #go #tl
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍3
This media is not supported in your browser
VIEW IN TELEGRAM
🔥4617🎉15👍7🏆2🤔1