Android Broadcast
14.2K subscribers
3.53K photos
343 videos
11 files
5.91K links
Подборка новостей и статей для Android разработчиков.

Реклама и связь с автором @ab_manager

РКН https://abdev.by/rkn_tg_ab
Download Telegram
Extending the Android SDK — SDKExtensions (5 мин)

Погружение в Android SDK Extentions - надстройка над Android SDK, которая позволяет работать с функционалом, который распространяется через систему обновлений модульных компонентов Android
👍16👎7
📺 Что внутри APK. App Bundle. Google Play Dynamic Feature (14 мин)

В видео я рассказываю про то из чего состоит APK, как Google подходила к уменьшению размера загружаемого APK. App Bundle, Google Play Dynamic Delivery, Dynamic Feature и другое

Продолжение видео "Как уменьшить размер приложения" уже доступно на Boosty для патронов
#AndroidBroadcast #googleplay
🔥26👎7👍6
Обновление Android Jetpack от 8 марта 2023

Lifecycle 2.6.0
👉 Метод LiveData.isInitialized() позволит проверить задавалось ли значение в LiveData
👉 Стабильный collectAsStateWithLifecycle() в Compose. Подробности тут
👉 Методы Lifecycle.launchWhenX теперь deprecated. Используйте Lifecycle.repeatOnLifecycle
👉 Множество классов переписали на Kotlin

RecyclerView 1.3.0
👉 Улучшение производительности при работе с Compose

Что еще:
👉 Первая RC Jetpack Compose 1.4
👉 Исправление багов
👉 Поддержка Android 14

#jetpack #jetpackupdate
👍27👎6🔥1
В Циан попробовали перейти с Dagger на Yatagan (аля Dagger Lite) и оценить эффект на скорость сборки проекта.

Характеристики проекта: 479 Gradle модулей, 813K строк Kotlin, 53K строк Java и 136K строк XML, 528 Dagger компонентов

Важно - при тестах проекта перейти на ksp и полностью избавиться от kapt не получилось из-за других библиотек (Moxy), но автор просто сделал тест с отключением генерации кода через kapt.

Результаты - сокращение времени сборки на 17-25%. Очень не хватило показателей сколько будет строк кода сгенерировано Yatagan по сравнению с Dagger, а также размер финальной сборки

#dagger #performance
👍38👎19
В Android 14 пользователь сможет выдавать доступ на чтение не всех фото/видео из галереи, а лишь к выбранным. Этот функционал уже есть на iOS вот теперь приходит и на Android, что лишний раз показывает сближение двух основных мобильных ОС.

Добавили новое разрешение READ_MEDIA_VISUAL_USER_SELECTED, которое позволяет повторно запросить выбор к отдельным фото/видео. Новое разрешение должно использоваться в дополнение к READ_MEDIA_IMAGES и READ_MEDIA_VIDEO (из Android 13), чтобы поддержать новое поведение. Его объявление означает, что вы поддерживаете из кода повторный запрос на частичный доступ к фото/видео.

Если вашему приложение нужен доступ к фото/видео при работе из фона, то настоятельно рекомендуется поддержать новое разрешение для корректной работы.

@android_broadcast #android14
👍28😢16👎9
Credential Manager стал частью API Android платформы, но напрямую вам использовать его не придется. Все также это будет делаться через Jetpack API.

CredentialManager - это специальное API, которое поддерживает различные методы входа: логин/пароль, passkey, "Sign-in with Google" и другие. Все способы реализованы через единое стандартизированное API в Jetpack.

#android14
👍30👎6🔥4
Android Broadcast - это не только Telegram канал, но и множество других ресурсов

📣 Мы в Telegram
@kotlin_broadcast - новости Kotlin
@android_broadcast_talks - чатик про Android разработку
@rozov_blog - личный блог Кирилла где он делится своей жизнью
@ios_broadcast - новости iOS (развиваем)
@android_broadcast_bot - предложка контента, реклама, связь с командой

📺 YouTube канал "Android Broadcast" - видео по Android разработки, интервью с экспертами

👨‍🎓 YouTube канал - это также и площадка где вы можете выступить. Темы по которым мы экспертов здесь, либо предложить свою можно здесь

🎧 Часть выпусков можно еще послушать и в виде подкастов на популярных площадках

👕 Мы делаем крутые фирменные майки, которые нестыдно носить. Смотрите здесь

Также вы представлены и на других площадках.
👉 Сообщество в VK
👉 Дзен
👉 Группа в LinkedIn
👉 Twitter
-----
Если вы хотите получать вам нравится что я делаю, вы хотите чтобы это продолжалось и получить экслюзивный контент, то вы можете подписаться на Boosty.
👍12👎12
В Android 14 добавили новое API в PackageManager, которое позволит улучшить пользовательский опыт магазинов приложений.

Сейчас сторонним магазинам при каждой установке нового или обновлении существующего приложения приходится получать разрешение пользователя на установку. Это также делает невозможным обновление приложений в фоне.

С помощью PackageInstaller.Session.requestUserPreapproval() можно запросить разрешение один раз в рамках сессии (установка нескольких APK), а не навсегда (

#android14
🔥34👍8👎7
Следующая новинка для сторонних магазинов в API - PackageInstaller.SessionParams.setRequestUpdateOwnership(). Метод позволяет сменить приложение, которое ответственно за обновления приложения и запрос на установку обновления из такого приложения не будет показываться пользователю. Для работы этого метода надо будет запросить разрешение ENFORCE_UPDATE_OWNERSHIP

@android_brodcast #android14
🔥20👎5👍3🤯2
Новый класс PackageInstaller.InstallConstraints позволит задавать условия, когда может быть выполнено обновление приложения, а именно:
👉 Приложение не на переднем плане
👉 Пользователь не взаимодействует с приложением
👉 Приложение не в Foreground (невидимо и нет Foreground Service)
👉 Устройство не используется
👉 Нет активного звонка

Появилось 3 новых методы в PackageInstaller, которые позволяют задавать требования для установки:
👉 checkInstallConstraints() - асинхронный метод, который проверяет удовлетворяет ли требованиям приложение для установки
👉 commitSessionAfterInstallConstraintsAreMet() - коммитит сессию, только когда все требования будут удовлетворены
👉 waitForInstallConstraints() - асинхронных метод. Аналог checkInstallConstraints(), но вызывается когда требования для установки будут удовлетворены

@android_broadcast #android14
🔥13👍6👎5
Метод setDontKillApp() позволяет запросить у системы не убивать обновляемое приложения в рамках установки его дополнительных частей. Так работает установка частей приложения, распространяемых через App Bundle. По умолчанию сейчас приложение будет убиваться, даже если этого не требуется.

Для сторонних магазинов это позволит сделать нормально свой аналог Google Play Dynamic Delivery

P.S. Спасибо всем тем кто меня поправил и я сразу переписал пост

@android_broadcast #android14
👍46👎9🤯2
Разборы
📺 Что внутри APK. App Bundle. Google Play Dynamic Feature (13 мин)
📺 Как уменьшить размер приложения (17 мин)
📺 Мобильная аналитика в hh (18 мин)

Новости
📺 Новости мобильной разработки 2023.6 (15 мин)
📺 Google Dev News (2 мин)
📺 Now in Android #73 (4 мин)

Доклады
📺 Как написать свой DI-контейнер на Kotlin (0.5 часа)
📺 Как пройти архитектурную секцию собеседования (~1 час)

Прочее
📺 #TheAndroidShow: Large screens, Jetpack Compose and more! (1.5 часа)

Делитесь в комментариях видео по разработке, которые вам понравились на этой неделе

#подборкавидео
👎7🔥7👍4
В настройках системы появился раздел с персонализированными региональными настройками: единицы измерения температуры, первый день недели и система исчисления.

Используйте новые API getTemperatureUnit и getFirstDayOfWeek (доступны на Android 5.0+), чтобы учитывать это в отображении вашего контента.

@android_broadcast #android14
👍32👎4
Дополнительные ограничения по запуску Activity из фона:
👉 При вызове биндинги Service, которые находится в приложения в фоне, вызовом bindService() из видимого приложения необходимо будет передать флаг BIND_ALLOW_ACTIVITY_STARTS, чтобы можно было запускать из Activity из этого Service
👉 Для отправки PendingIntent с помощью PendingIntent#send() теперь необходимо явно указывать хочет ли приложение давать права своим фоновым Activity для запуска PendingIntent

Нововведение применяется только для targetSdk=34 (Android 14)

#android14
😢12🤯6👍3👎2🤔2
В Android 14 разработчик сможет определить когда пользователь пытается сделать скриншот приложения. Для Activity можно зарегистрировать callback, который будет срабатывать при попытке сделать скриншот.

Для этого надо будет объявить разрешение DETECT_SCREEN_CAPTURE (не требует запроса во время работы приложения). Новый callback - Activity.ScreenCaptureCallback

Как я смог понять callback будет вызываться после совершения и никак повлиять на контент в скриншоте нельзя, как и предотвратить чтобы пользователь сделал его

Подробности тут

@android_broadcast #android14
👍37👎9🤔4
В Android 14 поменяется поведение неудаляемых уведомлений из системной панели. По умолчанию теперь часть ongoing уведомлений можно будет удалять.

Ограничения не распространяются на:
👉 Когда телефон заблокирован удалить уведомление не получится
👉 Кнопка "Удалить все" в уведомлениях не будет удалять ongoing уведомления
👉 MediaStyle уведомления не удаляются
👉 Уведомления, которые не могут быть удалены по политикам безопасности
👉 Уведомления, связанные с частями работы Android Enterprise

В Android 13 уже стало возможным удалять уведомления, связанные с Foreground Service, если у уведомления не было помечен статус ongoing

Подробности изменения тут

@android_broadcast #android14
👎9👍5🤔3
Android 14 Dev Preview 2 содержит оптимизации системы управления памятью Android для улучшения использования ресурсов, когда приложения работают в фоновом режиме.

Через несколько секунд после того, как приложение переходит в состояние "cached", фоновая работа будет разрешена только в Foreground Services, JobScheduler или WorkManager. Фоновая работа вне этих API теперь будет запрещаться на порядок быстрее, чем в Android 13.

@android_broadcast #android14
😢18👎10👍6
Если вы хотите проверить поведение вашего приложения независимо от targetSdk, включить или отключить какие-то изменения поведения и другие

Подробности тут

@android_broadcast #android14
👍14👎6