🧹Hamma uchun tarixni tozalash
– Android uchun Telegram’ning beta-versiyasida endi siz nafaqat o‘zingiz, balki barcha ishtirokchilar uchun guruh suhbati tarixini tozalashingiz mumkin.
Xabarlarni hamma uchun tozalash imkoniyati faqat guruh egasi uchun mavjud. Eslatma: biz xozirda chat tarixini tozalash uchun turli botlardan foydalanamiz.
Ushbu imkoniyat faqat superguruhlarda ishlaydi va tez kunda Telegramga qo'shilishi kutilmoqda.
#Android#beta
💚@TGraphUz | YouTube
🚀 Вышла первая Beta версия Room 2.7.0. Самое важное нововведение - переход на KMP с поддержкой Android, iOS и Desktop 🔥🔥🔥. Также на Android теперь можно использовать SQLite из артефакта, а не только тот что в Android ОС
#android#kmp#jetpack#room#sqlite
❗️Google поясняет за Android developer verification
Google сделала выпуск Android Developer Backstage про будущую обязательную верификацию разработчиков.
Значит ли что sideloading на Android больше не будет?
АБСОЛЮТНО НЕТ. Суть изменения - защита пользователей от недобросовестных разработчиков, а не ограничить выбор метода установки. Основная задача - убедиться, что загружаемая сборка действтиельно от оригинального разработчика.
Как верификация разработчика повлияет на использование Android Studio?
Команда работает над тем, чтобы работа не поменялась. Собирать и устанавливать APK можно будет без верификации.
Как распространять сборки для внутренних тестеров?
Если вы будете делать установку не только через adb, тогда придется пройти верификацию и зарегистрировать пакет.
Нужно ли будет регистрировать приложение, если сборка распространяется для ограниченной группы пользователей?
Официальная рекомендация - пройти регистрацию. Но можно будет получить бесплатный пользовательский аккаунт для учителей, студентов и энтузиастов для распространения сборки на ограниченное количество устройств.
#android#google#googleplayservices#безопасность
🤖 Вышел Coil 3.4.0
Coil - это библиотека для загрузки изображений на Android (и теперь Compose Multiplatform). Название расшифровывается как Coroutine Image Loader — библиотека написана на Kotlin с первого дня и отлично вписывается в современный стек: корутины, Compose, KMP.
В новой версии несколько интересных вещей:
🔁 ConcurrentRequestStrategy — теперь можно объединять параллельные сетевые запросы на один и тот же ресурс. По умолчанию отключено и помечено как экспериментальное, но идея хорошая — вместо N одинаковых запросов летит один, остальные ждут результата.
🧵 Асинхронный декодинг JS/WASM — изображения больше не блокируют главный поток браузера. Важно для KMP-проектов с вебом.
🐧 Linux targets — добавили поддержку linuxX64 и linuxArm64 для non-Compose артефактов.
🎞 Улучшенные переходы в Compose — новый useExistingImageAsPlaceholder позволяет плавно переходить от предыдущего изображения, когда нет placeholder. Мелочь, но визуально приятно.
🎬 Embedded video thumbnails — поддержка встроенных превью для видео.
🔧 coil-lint — добавили Android Lint-правило, которое ловит случайные вызовы kotlin.error() внутри блоков ImageRequest.Builder. Неожиданно полезно.
Зависимости Kotlin 2.3.10, Compose 1.9.3, Okio 3.16.4.
#Android#AndroidDev#KMP#kCMP#Compose
🤖Как удалить отладочный код в релизных сборках на примере логов
Еще одна рекомендация - используйте минификацию кода через R8/ProGuard чтобы удалить весь код логирования. Ничего лишнего не уйдёт в логи, а также повысите скорость работы
Добавьте в правила следующие инструкции
# Удаляем Log.v()
-assumenosideeffects class android.util.Log {
public static int v(...);
}
# Удаляем Log.d()
-assumenosideeffects class android.util.Log {
public static int d(...);
}
# Удаляем Log.i()
-assumenosideeffects class android.util.Log {
public static int i(...);
}
Подробнее про инструкцию assumenosideeffects читайте в документации
#android#proguard#r8#оптимизация
Руководство(EN,6м) от команды CameraX по созданию эффекта как на видео, когда весь ваш UI на Compose. Используется определение лиц в кадре и наложение масок
🔗Ссылка без VPN
#android#jetpack#camerax#камера#compose
Как лишние ресурсы могут повлиять на UI вашего приложения
Библиотеки от Google и других популярных SDK часто содержат строки для десятков локалей, тогда как большинство приложений поддерживают всего 7–10 наиболее востребованных языков.
Механизм выбора ресурсов в Android устроен таким образом, что система подбирает наиболее подходящий ресурс с учётом квалификаторов (например, локали). Если для конкретной локали, установленной на устройстве, в вашем проекте отсутствует соответствующий перевод, система может использовать строку из библиотеки по умолчанию. Это может привести к неожиданному отображению интерфейса.
Чтобы избежать подобных ситуаций, вы можете явно задать набор локалей, которые поддерживает ваше приложение. Тогда все ресурсы для неуказанных локалей не попадут в финальный APK, что не только снижает его размер, но и обеспечивает предсказуемость UI.
Пример настройки в build.gradle.kts (application модуль):
android {
androidResources {
// Автоматически сгенерировать список локалей на основе ресурсов проекта
// По умолчанию false
generateLocaleConfig = true
// Либо явно указать поддерживаемые локали
localeFilters.addAll(setOf("en", "ru", "es", "de"))
}
}
Ранее Android Gradle Plugin позволял фильтровать ресурсы по различным группам квалификаторов (например, плотность экрана, ориентация и т.д.), однако начиная с AGP 8.0 эта возможность объявлена устаревшей и поддерживается только фильтрация по локалям. Это связано с тем, что App Bundle эффективно разделяет ресурсы по плотности экрана, а применение других фильтров использовалось крайне редко.
#android#gradle#локализация#лучшиепрактики