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.
📣 Мы в Telegram
@kotlin_broadcast - новости Kotlin
@android_broadcast_talks - чатик про Android разработку
@rozov_blog - личный блог Кирилла где он делится своей жизнью
@ios_broadcast - новости iOS (развиваем)
@android_broadcast_bot - предложка контента, реклама, связь с командой
📺 YouTube канал "Android Broadcast" - видео по Android разработки, интервью с экспертами
👨🎓 YouTube канал - это также и площадка где вы можете выступить. Темы по которым мы экспертов здесь, либо предложить свою можно здесь
🎧 Часть выпусков можно еще послушать и в виде подкастов на популярных площадках
👕 Мы делаем крутые фирменные майки, которые нестыдно носить. Смотрите здесь
Также вы представлены и на других площадках.
👉 Сообщество в VK
👉 Дзен
👉 Группа в LinkedIn
-----
Если вы хотите получать вам нравится что я делаю, вы хотите чтобы это продолжалось и получить экслюзивный контент, то вы можете подписаться на Boosty.
👍12👎12
В Android 14 добавили новое API в PackageManager, которое позволит улучшить пользовательский опыт магазинов приложений.
Сейчас сторонним магазинам при каждой установке нового или обновлении существующего приложения приходится получать разрешение пользователя на установку. Это также делает невозможным обновление приложений в фоне.
С помощью PackageInstaller.Session.requestUserPreapproval() можно запросить разрешение один раз в рамках сессии (установка нескольких APK), а не навсегда (
#android14
Сейчас сторонним магазинам при каждой установке нового или обновлении существующего приложения приходится получать разрешение пользователя на установку. Это также делает невозможным обновление приложений в фоне.
С помощью PackageInstaller.Session.requestUserPreapproval() можно запросить разрешение один раз в рамках сессии (установка нескольких APK), а не навсегда (
#android14
🔥34👍8👎7
Следующая новинка для сторонних магазинов в API - PackageInstaller.SessionParams.setRequestUpdateOwnership(). Метод позволяет сменить приложение, которое ответственно за обновления приложения и запрос на установку обновления из такого приложения не будет показываться пользователю. Для работы этого метода надо будет запросить разрешение ENFORCE_UPDATE_OWNERSHIP
@android_brodcast #android14
@android_brodcast #android14
🔥20👎5👍3🤯2
Новый класс PackageInstaller.InstallConstraints позволит задавать условия, когда может быть выполнено обновление приложения, а именно:
👉 Приложение не на переднем плане
👉 Пользователь не взаимодействует с приложением
👉 Приложение не в Foreground (невидимо и нет Foreground Service)
👉 Устройство не используется
👉 Нет активного звонка
Появилось 3 новых методы в PackageInstaller, которые позволяют задавать требования для установки:
👉 checkInstallConstraints() - асинхронный метод, который проверяет удовлетворяет ли требованиям приложение для установки
👉 commitSessionAfterInstallConstraintsAreMet() - коммитит сессию, только когда все требования будут удовлетворены
👉 waitForInstallConstraints() - асинхронных метод. Аналог
@android_broadcast #android14
👉 Приложение не на переднем плане
👉 Пользователь не взаимодействует с приложением
👉 Приложение не в 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
Для сторонних магазинов это позволит сделать нормально свой аналог 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 часа)
Делитесь в комментариях видео по разработке, которые вам понравились на этой неделе
#подборкавидео
📺 Что внутри 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
Используйте новые 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
👉 При вызове биндинги 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
Для этого надо будет объявить разрешение 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
Ограничения не распространяются на:
👉 Когда телефон заблокирован удалить уведомление не получится
👉 Кнопка "Удалить все" в уведомлениях не будет удалять 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
Через несколько секунд после того, как приложение переходит в состояние "cached", фоновая работа будет разрешена только в Foreground Services, JobScheduler или WorkManager. Фоновая работа вне этих API теперь будет запрещаться на порядок быстрее, чем в Android 13.
@android_broadcast #android14
😢18👎10👍6
Если вы хотите проверить поведение вашего приложения независимо от targetSdk, включить или отключить какие-то изменения поведения и другие
Подробности тут
@android_broadcast #android14
Подробности тут
@android_broadcast #android14
👍14👎6
Из Android SDK были удалены API, связанные с Android Beam - технология для быстрой передачи файлов, которая для установления соединения работала на основе NFC, а передача шла через Bluetooth
@android_broadcast #android14
@android_broadcast #android14
🤔22😢17👎6👍2
В Android SDK появились интересные аннотации для вызова native методов для ускорения работы JNI в ART runtime:
🚀 @CriticalNative - использовать самую быструю JNI передачу из управляемого кода в нативный и обратно
👉 @FastNative - использовать более быструю (по сравнению с обычной) JNI передачу из управляемого кода в нативный и обратно
@android_broadcast #android14
🚀 @CriticalNative - использовать самую быструю JNI передачу из управляемого кода в нативный и обратно
👉 @FastNative - использовать более быструю (по сравнению с обычной) JNI передачу из управляемого кода в нативный и обратно
@android_broadcast #android14
👍12👎6
Automating dependency updates in a Compose project (4 мин)
Статья с рассказом подхода автоматического обновления зависимостей в Google с помощью сервиса Renovate на примере Compose и его зависимостей от Kotlin компилятора. Утилита сама генерирует Pull Request на основе описанных правил.
#tooling
Статья с рассказом подхода автоматического обновления зависимостей в Google с помощью сервиса Renovate на примере Compose и его зависимостей от Kotlin компилятора. Утилита сама генерирует Pull Request на основе описанных правил.
#tooling
👍16👎9
В системном окне выбора Activity при запуске Intent теперь будет возможность добавить собственные действия. Для этого нужно положить extra EXTRA_CHOOSER_CUSTOM_ACTIONS в Intent. Помиго это есть специальная экстра для действия чтобы модифицировать отправляемый контент - EXTRA_CHOOSER_MODIFY_SHARE_ACTION
#android14
#android14
👍23👎5🤔3❤1
Кто производитель вашего основно смартфона? (опрос для тех кто имеет отношение к разработке)
Anonymous Poll
25%
Google
15%
Apple
21%
Samsung
20%
Xiaomi/Redmi/POCO
6%
OnePlus
4%
Realme
1%
ASUS/ROG
4%
HUAWEI
3%
Другой бренд (пишите в комментариях)
1%
Не участвую/не пользуюсь смартфоном (пишите почему)
👍30👎6
Начиная с Android 14, с помощью killBackgroundProcesses() нельзя будет убить процесс другого приложения. При попытке передать туда название пакета отличного от приложения из которого происходит вызов больше ничего происходить не будет, а в логах появится сообщение:
Invalid packageName: <package_name>
Новое поведение применяется ко всем приложениям, независимо от targetSdk. Подробности тут
@android_broadcast #android14
Invalid packageName: <package_name>
Новое поведение применяется ко всем приложениям, независимо от targetSdk. Подробности тут
@android_broadcast #android14
👍35👎8
🔥64👎7