📦 Не храните всю графику в приложении
Одна из лучших практик — храните в приложении только простые иконки в векторном формате, а всю растровую графику держите в облаке. Особенно это важно для приложений, которые не могут работать офлайн 🌐
Почему это стоит делать:
🚀 Меньше вес приложения → быстрее установка и обновления
📉 Не тянете лишние ресурсы, которые пользователь никогда не увидит (например, фичи под подпиской или в определённом регионе)
🌍 Можно адаптировать загрузку под регион, тариф или подписку
💰 Гибкость — обновляйте, отключайте или заменяйте контент без релиза
Как хранить изображения правильно:
- Векторные иконки → храним в ресурсах приложения
- Баннеры, иллюстрации, фото → CDN или облако (Firebase Storage, CloudFront, S3 и др.) Для загрузки используйте image loader: Coil, Glide, Picasso и т.д.
Чтобы грузить локальные ресурсы в Android через URL можно использовать адреса (примеры для приложения с именем пакета
- По имени ресурса
- По числовому ID
⚙️ Для Compose Multiplatform пока нет прямой поддержки таких ссылок, но можно расширить любой image loader и добавить обработку собственных URL или типов данных
#android #оптимизация #compose #coil
Одна из лучших практик — храните в приложении только простые иконки в векторном формате, а всю растровую графику держите в облаке. Особенно это важно для приложений, которые не могут работать офлайн 🌐
Почему это стоит делать:
🚀 Меньше вес приложения → быстрее установка и обновления
📉 Не тянете лишние ресурсы, которые пользователь никогда не увидит (например, фичи под подпиской или в определённом регионе)
🌍 Можно адаптировать загрузку под регион, тариф или подписку
💰 Гибкость — обновляйте, отключайте или заменяйте контент без релиза
Как хранить изображения правильно:
- Векторные иконки → храним в ресурсах приложения
- Баннеры, иллюстрации, фото → CDN или облако (Firebase Storage, CloudFront, S3 и др.) Для загрузки используйте image loader: Coil, Glide, Picasso и т.д.
Чтобы грузить локальные ресурсы в Android через URL можно использовать адреса (примеры для приложения с именем пакета
com.example.myapp):- По имени ресурса
android.resource://com.example.myapp/drawable/my_image- По числовому ID
android.resource://com.example.myapp/2130837504#android #оптимизация #compose #coil
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯13❤8👍8
Яндекс анонсировали про изменение процесса найма и ключевое изменение - подход к кандидату как к клиенту с личным кабинетом, историей и полной прозрачностью. Подробности и моё мнение в видео!
#AndroidBroadcast #мнение
Please open Telegram to view this post
VIEW IN TELEGRAM
1🤔19🔥14🤯13👍7❤2🤝1
‼️ Google и Epic Games решили пойти на мировую — грядет серьёзные изменения в Google Play для разработчиков
Google и Epic Games, которые уже несколько лет судятся из-за монополий на рынке мобильных приложений (а Epic параллельно ведёт дела и с Apple, и с Samsung), наконец подготовили мировое соглашение и передали его судье.
Полный текст пока не опубликован, но уже известны ключевые пункты:
👉 Комиссия Google Play снизится — от 9% до 20% в зависимости от типа транзакции
👉 Разработчики получат больше свободы в распространении приложений
👉 Оплата в приложениях из Google Play станет возможной через сторонние платёжные системы
Тим Свини (CEO Epic Games) назвал это укреплением «изначальной концепции Android как открытой платформы» (пост в X).
Думаю, что эти изменения будут действовать только в США,
но Свини утверждает, что Epic «намерена распространить их по всему миру». Ждём подробностей после утверждения соглашения судом.
Источник: Android Authority
#googleplay #epic #android #google
Google и Epic Games, которые уже несколько лет судятся из-за монополий на рынке мобильных приложений (а Epic параллельно ведёт дела и с Apple, и с Samsung), наконец подготовили мировое соглашение и передали его судье.
Полный текст пока не опубликован, но уже известны ключевые пункты:
👉 Комиссия Google Play снизится — от 9% до 20% в зависимости от типа транзакции
👉 Разработчики получат больше свободы в распространении приложений
👉 Оплата в приложениях из Google Play станет возможной через сторонние платёжные системы
Тим Свини (CEO Epic Games) назвал это укреплением «изначальной концепции Android как открытой платформы» (пост в X).
Думаю, что эти изменения будут действовать только в США,
но Свини утверждает, что Epic «намерена распространить их по всему миру». Ждём подробностей после утверждения соглашения судом.
Источник: Android Authority
#googleplay #epic #android #google
👍48🔥14❤9🤯2
Saved State — это библиотека Jetpack, которая помогает сохранять и восстанавливать состояние при пересоздании, например из-за изменений конфигурации в Android или при выгрузке процесса системой. Поддерживает Kotlin Multiplatform
Вышел
androidx.savedstate:1.4.0, и в этом обновлении основное внимание уделено улучшению API. Ключевое изменение - добавлена нативная поддержка nullable типов в SavedStateRegistryOwner.saved, а также в функциях encodeToSavedState() и decodeFromSavedState() — теперь можно напрямую сохранять и восстанавливать null-значения без костылей.// Теперь это работает корректно без дополнительных проверок.
var name: String? by savedState(saved = "name", default = null)
#android #jetpack #kotlin #kmp #jetpackupdate #androidjetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥8❤1
Что нового:
🌙 Добавлен атрибут
isLightTheme для тем SplashScreen — можно корректно выбирать оформление под светлую/тёмную тему🖼 Иконка загрузки теперь корректно подтягивается через AppCompatResources (улучшена поддержка ресурсов и векторных изображений)
👉 Убрали ручное объявление обращения к новым API — теперь всё автоматически моделируется при сборке с AGP ≥ 7.3 и R8 ≥ 3.3
#android #jetpack #androidjetpack #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34🎉5❤4
#android #ui
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38🤔15❤5👍2
Media is too big
VIEW IN TELEGRAM
Повышайте узнаваемость и рейтинг вашего приложения в Google Play, адаптируя его под разные форм-факторы. В этом видео вы получите практическое руководство по созданию отзывчивых интерфейсов, которые одинаково хорошо работают не только на смартфонах, но и на устройствах с большими экранами и виджетах — с использованием ключевых техник, таких как window size classes и canonical layouts.
#android #adaptive #googleplay #оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2🤯2
Media is too big
VIEW IN TELEGRAM
Узнайте, как ИИ-агент в Android Studio может значительно повысить вашу эффективность и качество приложений. Познакомьтесь с практическими возможностями на базе искусственного интеллекта: интеллектуальным преобразованием кода, автоматическим обновлением версий и новым набором инструментов для работы с интерфейсом, которые помогут создавать лучшие приложения быстрее.
#androidstudio #ai #ии #android #androiddev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤3
Google открыла прием заявок к раннему доступу в консоль верификации Android разработчиков, которые распространяют приложения за пределами Google Play. Подробности про систему в видео
Подать заявку можно тут (ссылка без спец средств не работала из Беларуси)
#android
Please open Telegram to view this post
VIEW IN TELEGRAM
🆒10👍4🔥3❤1
Media is too big
VIEW IN TELEGRAM
Стартанул ранний доступ к консолей верификации и выпустили свежий гайд по работе.
❗️Сентябрь 2026 - это дата включения обязательной верификации
‼️Самое важное - Google отказался от обязательной верификации для всех, но при попытке установки неверифицированных APK будет показан предупреждающий диалог. Нечто подобное есть в macOS.
Классно, что Google услышала обратную связь и сделал доработку, которая оставляет свободу установки, повысив безопасность.
#android #безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤5🎉4🤯1
Рассказываю про устройство и фичи Ktor Client, в также про миграцию с OkHttp и и Retrofit на решение для KMP
#AndroidBroadcast #разбор #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
61🔥40❤5👍3🤔3🤯2
С 1 марта 2026 года расход батареи в фоне станет одним из факторов ранжирования приложений в Google Play.
Если приложение заметно потребляет заряд и не получает исправлений, пользователи увидят специальную предупреждающую плашку. При отсутствии улучшений Google Play сможет исключить такое приложение из поиска — доступ останется только по прямой ссылке.
Для разработчиков в Google Play Console уже доступен новый инструмент анализа Wake Lock, который помогает выявлять проблемные участки и повышать энергоэффективность приложения.
Рекомендуется заранее проверить поведение приложения в фоне и устранить лишние пробуждения.
#Android #GooglePlay #Оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍68🤯16❤4🔥4
Для работы в Android надо подключить Gradle плагин
plugins {
id("dev.reformator.stacktracedecoroutinator") version "2.5.8"
}#android #kotlin #coroutines
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38🔥6🤔3
Стал доступен первый стабильный релиз навигации, разработанной специально для Compose. Библиотека предоставляет больше гибкости и контроля разработчикам, позволяя реализовать различные подходы. Google выложила свои примеры реализации популярных задач в репозитории на
Nav3 имеет поддержку Compose Multiplatform, а также JetBrains выпустила версию артефактов
👉 Документация по библиотеке
Всем кто использует Jetpack Navigation 2 с Compose нааооятельно рекомендуется миграция.
🔨Руководство по миграции
Про возможности бибилотеки я рассказал в
#android #compose #kmp #cmp #jetpack #ui #nav3
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥56👍9🤔5❤3
Пример использования Jetpack Navigation 3
#android #compose #nav3 #jetpack
data object ProductList
data class ProductDetail(val id: String)
@Composable
fun MyApp() {
// Create a back stack, specifying the key the app should start with
val backStack = remember { mutableStateListOf<Any>(ProductList) }
// Supply your back stack to a NavDisplay so it can reflect changes in the UI
// ...more on this below...
// Push a key onto the back stack (navigate forward), the navigation library will reflect the change in state
backStack.add(ProductDetail(id = "ABC"))
// Pop a key off the back stack (navigate back), the navigation library will reflect the change in state
backStack.removeLastOrNull()
}
// [END android_compose_navigation3_basic_1]
@Composable
fun EntryProvider() {
val backStack = remember { mutableStateListOf<Any>(ProductList) }
NavDisplay(
backStack = backStack,
// [START android_compose_navigation3_basic_2]
entryProvider = { key ->
when (key) {
is ProductList -> NavEntry(key) { Text("Product List") }
is ProductDetail -> NavEntry(
key,
metadata = mapOf("extraDataKey" to "extraDataValue")
) { Text("Product ${key.id} ") }
else -> {
NavEntry(Unit) { Text(text = "Invalid Key: $it") }
}
}
}
// [END android_compose_navigation3_basic_2]
)
}
#android #compose #nav3 #jetpack
👍16❤4