👍6🤯2❤1
Xiaomi изменила политику разблокировки загрузчика HyperOS (ОС, основаная на AOSP) на своих устройствах в Китае, начиная с 2025 года. Если раньше каждый пользователь мог разблокировать в год до трёх гаджетов, то теперь количество сократили до одного.
Всё это делается чтобы смартфоны не перепрошивали на глобальные версии и не продавали их дешевле за пределы Китая. Также тут есть и борьба с модами. Компания Xiaomi начинала как разработчик кастомных iPhone подобных прошивок для Android смартфонов, а вот теперь начала борьбу с модификацией софта своих устройств 😔
#xiaomi #hyperos
Всё это делается чтобы смартфоны не перепрошивали на глобальные версии и не продавали их дешевле за пределы Китая. Также тут есть и борьба с модами. Компания Xiaomi начинала как разработчик кастомных iPhone подобных прошивок для Android смартфонов, а вот теперь начала борьбу с модификацией софта своих устройств 😔
#xiaomi #hyperos
🤯45👍5
🎉 Готовится к релиз ViewBindingPropertyDelegate 2.0.0
Уже доступна первая Beta версия следующей мажорной версии. В ней я переработал механизм отслеживания момента, когда уничтожается View в Fragment и Activity, что позволило избавиться от костылей для решения проблем и ненужные проверки момента цикла.
В новой версии изменились артефакты, базовый пакет классов и API создания ViewBinding делегата.
Применить новую библиотеку можно без замены предыдущей и выполнить миграцию или проверить отдельные компоненты вашего приложения. Буду очень признателен вам за отзыв!
❗️ ДА-ДА. Знаю что скоро вот-вот уже Compose заменит View, но еще много кто использует View и продолжает
#android #viewbinding
Уже доступна первая Beta версия следующей мажорной версии. В ней я переработал механизм отслеживания момента, когда уничтожается View в Fragment и Activity, что позволило избавиться от костылей для решения проблем и ненужные проверки момента цикла.
В новой версии изменились артефакты, базовый пакет классов и API создания ViewBinding делегата.
Применить новую библиотеку можно без замены предыдущей и выполнить миграцию или проверить отдельные компоненты вашего приложения. Буду очень признателен вам за отзыв!
#android #viewbinding
Please open Telegram to view this post
VIEW IN TELEGRAM
❤43🤯13👍12
Разработчик поделился как после внедрения в приложения диалога "Поставьте оценку" от Google Play выросло количество оценок. В статье эффект и инструкция по интеграции с кодом.
Библиотека для отзывов из приложения - Google Play In-App Reviews API
Всё это выглядит как правда, потому что система отзывов в магазине - это не самый простой раздел для поиска.
#googleplay
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20
В каком соотношении у вас UI на Compose и XML UI в Android? (примерные цифры)
Anonymous Poll
25%
Только Compose 🏆
9%
Практически всё на Compose
10%
Большая часть на Compose ⚙️
17%
Большая часть на XML UI
13%
Практически всё на XML UI
17%
Только 100% XML UI
1%
Не пишу под Android
8%
Не участвую в опросе
👍8
Вышла LineageOS 22.1
Что нового:
👉 Основана на Android 15
👉 Обновление
👉 Переделали утилиты от ОС
👉 Новое приложения для проигрывания музыки (нужно ли с сервисами музыки)
#android #lineageos
Что нового:
👉 Основана на Android 15
👉 Обновление
👉 Переделали утилиты от ОС
👉 Новое приложения для проигрывания музыки (нужно ли с сервисами музыки)
#android #lineageos
❤17👍4🔥3
Не используйте null для отсутcтвия состояния в UI
Сталкиваюсь с решениями разработчиков, когда они используют null для задания состояния UI по умолчанию. Мне такой подход не нравится 😡. У элементов обычно всегда есть начально состояние. Например, прогресс скрыт, данных списка нету, и др. Либо вовсе эти элементы не показываются и используется экран-заглушка
В коде я выражаю такое состояние следующим образом
также Default можно заменить на ссылку на другое состояние, и при этом не сломать код выше
Использование null вместо Default приведет к неудобным аспектам работы с кодом:
1. Придется использовать null safety или операторы Flow для работы с null
2. Любые задания начальных состояний UI элементов придется привязывать не через поле в объекте состояния, а через связывание с null состоянием
3. Расширить/изменить null нельзя, а вот класс можно дополнить полями/методами и включить в анализ кода
#android #compose #AndroidBroadcast #БазаЗнаний
Сталкиваюсь с решениями разработчиков, когда они используют null для задания состояния UI по умолчанию. Мне такой подход не нравится 😡. У элементов обычно всегда есть начально состояние. Например, прогресс скрыт, данных списка нету, и др. Либо вовсе эти элементы не показываются и используется экран-заглушка
В коде я выражаю такое состояние следующим образом
private val _screenState =
MutableStateFlow<ScreenState>(ScreenState.Default)
val screenState = _screenState.asStateFlow()
sealed interface ScreenState {
object Default : ScreenState // Иногда называю None
data class DataLoaded(...) : ScreenState
data class Loading(...): ScreenState
}
@Composable
fun MyScreen() {
val state: ScreenState by stateFlow.collectAsState()
MyScreen(state)
}
@Composable
fun MyScreen(state: ScreenState): Unit = when(state) {
is ScreenState.Default -> Default(state)
is ScreenState.Loading -> ProgressScreen(state)
is ScreenState.DataLoaded -> DataScreen(state)
}
@Composable
private fun DefaultSceen(state: ScreenState.Default)
@Composable
private fun ProgressScreen(state: ScreenState.Loading)
@Composable
private fun DataScreen(state: ScreenState.DataLoaded)
также Default можно заменить на ссылку на другое состояние, и при этом не сломать код выше
sealed interface ScreenState {
data class DataLoaded(...) : ScreenState
data class Loading(...): ScreenState
companion object {
val Default: ScreenState
get() = Loading(...)
}
}Использование null вместо Default приведет к неудобным аспектам работы с кодом:
1. Придется использовать null safety или операторы Flow для работы с null
2. Любые задания начальных состояний UI элементов придется привязывать не через поле в объекте состояния, а через связывание с null состоянием
3. Расширить/изменить null нельзя, а вот класс можно дополнить полями/методами и включить в анализ кода
#android #compose #AndroidBroadcast #БазаЗнаний
👍122❤5🤯4🎉3
Погружение в код реализации Jetpack ViewModel (EN, 5м)
Разбор как реализована Jetpack ViewModel после добавления поддержки KMP: код в класса, AutoClosable, viewModelScope
Для платных подписчиков на Boosty можно найти обзор всех фичей ViewModel, которые будут полезны вам
#android #kmp #jetpack #androidx #viewmodel #подкапотом
Разбор как реализована Jetpack ViewModel после добавления поддержки KMP: код в класса, AutoClosable, viewModelScope
Для платных подписчиков на Boosty можно найти обзор всех фичей ViewModel, которые будут полезны вам
#android #kmp #jetpack #androidx #viewmodel #подкапотом
👍20🤯2
Google Home APIs для Android доступны для всех
Вышла открытая Beta для Android (iOS будет чуть позже), которая позволит из приложения управлять устройствами и сценариями умного дома от Google
#android #google #умныйдом
Вышла открытая Beta для Android (iOS будет чуть позже), которая позволит из приложения управлять устройствами и сценариями умного дома от Google
#android #google #умныйдом
🔥19👍5
Комментарий из YouTube под моим видео https://youtu.be/rheT3w9nGKE
андроид разработка слишком усложнилась. сам переход на Котлин уже был сомнительным шагом. a jetpack compose - это вообще тот случай когда благими намерениями выстлана дорога в ад. UI-фреймворк должен быть максимально простым и изучаться полностью за три дня, а не вот это всё... изза всего этого треша и ушел из андрод разработки. счастливо оставаться в вашем филиале ада.Что думаете вы?
👍62🤯45🔥7👏7🎉4
This media is not supported in your browser
VIEW IN TELEGRAM
CameraX и Compose. Фокусировка по тапу на экран (EN,6м)
Статья с инструкцией по реализации фокусировки камеры по нажатию UI на Compose
#android #camerax #compose
Статья с инструкцией по реализации фокусировки камеры по нажатию UI на Compose
#android #camerax #compose
🔥26👍10
Google объявила о расширении категорий приложений, которые может быть установлены в Android for Cars (машины с Android медиа системой без необходимости подключения смартфона, не путайте с Android Auto). Соответствующее упоминание появилось в официальной документации
С февраля 2025 приложения из категорий видео, игры и браузеры при соотвествии требованиям Android for Cars станут доступны автоматически, без каких-либо изменений со стороны разработчиков.
Для соответствия нужно выполнение требований Cars Tier 3, но это как минимум качественная поддержка больших экранов и если есть нативный код, то надо поддержать x86 архитектуры
#android #cars #google #googleplay
С февраля 2025 приложения из категорий видео, игры и браузеры при соотвествии требованиям Android for Cars станут доступны автоматически, без каких-либо изменений со стороны разработчиков.
Для соответствия нужно выполнение требований Cars Tier 3, но это как минимум качественная поддержка больших экранов и если есть нативный код, то надо поддержать x86 архитектуры
#android #cars #google #googleplay
👍22
Forwarded from Kotlin Multiplatform Broadcast
Подробная статья о том, что происходит при вызове функции cancel() - отмене корутине, а именно рассказывается про:
👉 Классы Job и JobSupport
👉 Состояния Job
👉 Как работает отмена в Structured Concurrency
👉 Коммуникация между родительской и дочерней Job
👉 Как отменяется функция delay()
👉 Как отменяются suspend функции
#kotlin #coroutines
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍10
Какими библиотеками для сериализации данных пользуетесь на проекте?
Anonymous Poll
6%
Jackson JSON
55%
GSON
15%
Moshi
65%
KotlinX Serialization
1%
Другие (пиши в комментариях)
1%
Не знаю что используется на проекте
1%
Не пишу код
4%
Не участвую в опросе
🔥9👍4🤯2
Вышла Jetpack Activity 1.10.0
👉 Photo Picker теперь позволяет выбрать картинки по порядку, а также задать начальную вкладку (картинки или "альбомы")
👉 PickVisualMedia и PickMultipleVisualMedia Activity Result контракты, что вызывают photo Picker больше по умолчанию не вызывают Gogole Play Services, если не найден системный Photo Picker, а будет запускать интент
⚙️ Для Compose появился новый local compostion - LocalActivity, которая предоставляет текущую Activity. Ранее надо было делать приведение типа из LocalContext
#android #jetpack #compose #jetpackupdate
👉 Photo Picker теперь позволяет выбрать картинки по порядку, а также задать начальную вкладку (картинки или "альбомы")
👉 PickVisualMedia и PickMultipleVisualMedia Activity Result контракты, что вызывают photo Picker больше по умолчанию не вызывают Gogole Play Services, если не найден системный Photo Picker, а будет запускать интент
ACTION_SYSTEM_FALLBACK_PICK_IMAGES, которые приведет к запуску подходящей альтернативы для Photo Picker.// Надо было делать раньше
LocalContext.current as Activity
// Доступно теперь
LocalActivity.current
#android #jetpack #compose #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥15
Вышел RecyclerView 1.4.0 c поддержкой Android 15, а именно добавили работу с адаптивной частотой обновления экранов.
Также появилось API
#android #jetpack #recyclerview #jetpackupdate
Также появилось API
RecyclerView.LayoutManager.isLayoutReversed#android #jetpack #recyclerview #jetpackupdate
👍30🤯1
Ускорение работы в DataStore 1.1.2
Считывания первого закэшированного в памяти элемента в среднем ускорили в 8 раз 🤯
#android #datastore #jetpack #jetpackupdate
Считывания первого закэшированного в памяти элемента в среднем ускорили в 8 раз 🤯
#android #datastore #jetpack #jetpackupdate
👍62🤯28❤1
Media is too big
VIEW IN TELEGRAM
НОВОЕ ВИДЕО 🪙 Разбор настроек разработчика на Android устройстве (19 мин)
Показываю какие возможности есть в настройках разработчика для отладки и анализа работы приложений. Позволит проверять даже релизные приложения! 🤯
Альтернативное оформление подписки через Telegram, если не работает Boosty
#AndroidBroadcast #видео
Показываю какие возможности есть в настройках разработчика для отладки и анализа работы приложений. Позволит проверять даже релизные приложения! 🤯
Альтернативное оформление подписки через Telegram, если не работает Boosty
#AndroidBroadcast #видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👍4👏2🤯1
Кто был первым заказчиком компактной база данных, которую впоследствии назвали SQLite ?
Anonymous Quiz
43%
NASA
20%
HP
37%
ВМС США
👍20🔥5🤯5🎉2
С какой лицензий поставляется SQLite?
Anonymous Quiz
23%
MIT
11%
GPL
35%
Apache
17%
Публичная лицензии
15%
Собственная лицензия
🔥15👍6🤯1