Android Broadcast
14.4K subscribers
3.68K photos
367 videos
11 files
6.1K links
Подборка новостей и статей для Android разработчиков.

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

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
#Android11 #Security

Package visibility in Android 11

В Android 11 введены ограничения для доступа к установленным приложениям на устройстве. Теперь вы можете получить доступ к информации только тех приложений, id которых укажите заранее в манифесте вашего приложения и какие действия с ними можно делать (пример описания пакетов для доступа).

Получить доступ ко всем установленным приложениям все же остался с помощью нового разрешения QUERY_ALL_PACKAGES. Публикация приложений, использующих это разрешение, будет ограничена новой политикой Google Play.
#Kotlin

Kotlin 1.4-M3 is Out: Standard Library Changes

Вышел последний milestone (превью версия) Kotlin 1.4. За этим нас ждет RC версия, в которой финализируются фичи.

Что нового в 1.4-M3:
👉 Kotlin JVM библиотеки теперь содержат информацию о Java 9 модулях. Раньше так сделать было нельзя из-за бага в Android Gradle Plugin
👉 Функциональные интерфейсы в стандартной библиотеке. Благодаря поддержке SAM в Kotlin классах такие интерфейсы как Comparator теперь помечены функциональными
👉 Новые операторы для коллекций: sumOf, minOf, maxOf, flatMapIndexed
👉 Функции min и max для коллекций переименованы в minOrNull и maxOrNull, а существующие версии помечены как deprecated
👉 Аннотация Throws теперь добавлена в общую библиотеку, а не только в JVM
👉 Функции containsindexOf и lastIndexOf для FloatArray и DoubleArray помечены deprecated
👉 Добавлена возможность конвертации KType в Java Type без подключения библиотеки рефлексии
#Android11 #Online #Meetup

Android 11 Beta Meetup

Android 11 Beta был анонсирован 10-го июня, но GDG Москва решили не собираться по этому поводу сразу, а дать сообществу и экспертам немного времени, чтобы попробовать с ним поработать, накопить опыт и вопросы, а потом уже собраться и поговорить об этом!

Федор Цымбал, СТО компании MERA, выступит с докладом "Новинки Android 11 о которых не все слышали".
Где конечно будет говорить о фишках Android 11. Однако в этот раз это будут не Bubbles, IME Animations, One-Time Permissions и прочие новинки, о которых слышали все, кто хоть немного интересовался 11-й версией. Он расскажет о том, что еще не так широко известно, однако должно быть не менее важно или интересно как разработчику под Android, так и простому пользователю.

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

Если вы хотите предложить к обсуждению интересующую вас тему, вы можете это сделать через форму регистрации

🎁Автора самой интересной темы ждет приз!
#Android11 #ScopedStorage

Android 11 Storage FAQ

Представленный в Android 10 Scoped Storage добрался до релиза в Android 11. Scoped Storage предназначен упорядочить доступ приложений к файлам пользователя и защитить их от произвольного доступа любым приложением. Изменения будут применены для всех приложение с targetSdk=30+ (Android 11).

В статье можно найти ответы на самые частые вопросы по данной теме:
👉 можно ли обращаться к файлам по пути, используя, например, File API
👉 Что со скоростью доступа к файлам
👉 Как осуществить полный доступ к файловой системе как раньше
👉 Каким приложениям стоит запрашивать разрешение MANAGE_EXTERNAL_STORAGE
👉 Что с Storage Access Framework
👉 Изменения в Scoped Storage в Android 11 по сравнению с Android 10
👉 Тестирование Scoped Storage
👉 Новые ограничения для записи в приватные директории приложений
👉 Что использовать вместо MediaStore.MediaColumns.DATA?
👉 Миграция данных вне Scoped Storage
👉 Исключения в доступе к папкам Android и obb
#AndroidBroadcast #AndroidStudio #Plugin

Расширение возможностей Android Studio (livestream)
Когда: четверг, 9 июля, 20.00 (GMT)

Улучшить продуктивность можно не только за счет библиотек, но и с помощью плагинов IDE, а как написать легко свой расскажем в выпуске.

Гость выпуска Павел Стрельченко - Android разработчик в компании hh.ru, занимается поддержкой основных приложений и разрабатывает внутренние инструменты для улучшения работы своей команды

Паша поможет Кириллу упростить написание кода для Dagger, написав в прямом эфире плагин для генерации кода. Займет это около получаса, но сэкономит много времени при работе с ViewModel + Dagger
#Network #Tooling

HTTP Toolkit - интересная утилита для перехвата http(s) трафика:
👉 работает с множеством клиентов, включая Android
👉 в отличие от более известного аналога - Charles, процесс подключения проходит быстрее и удобнее (особенно via ADB)

Бесплатная версия позволяет:
👉 просматривать запросы и ответы
👉 редактировать/подменять запросы и ответы
#JetPack #Benchmark

Going Deep on Jetpack Benchmark

Возможность измерения производительности важна для обеспечения плавности пользовательского UI. В составе JetPack есть библиотека Benchmark для этих целей, а в статье рассматривается работа, которую проделал Google, для улучшения точности ее результатов.

👉 уменьшение вмешательства в работу приложения. (Библиотека запускает специальную непрозрачную activity, которая уменьшает вмешательство от других приложений)
👉 Стабилизация частоты процессора
👉 Приоритет потоков. У потока фреймворка наивысший приоритет, у JIT-потока приоритет снижен
👉 "Прогрев" и повторение теста
#Dagger #Hilt #Koin

Change DI Library from Koin to Dagger-Hilt

Разработчики кто имеет опыт с Dagger сразу хорошо воспринимали Koin в плане удобства его синтаксиса, но всех огорчало что отсутствует некоторые возможности, особенно проверка графа во время компиляции.

Может ли Hilt стать тем что все так разработчики хотели? Скорее всего только в описание компонентов, ведь под капотом мы имеем старый Dagger

В статье приводится опыт миграции с Koin на Hilt
#Kotlin #Refactoring 

Tackle tech debt with @Deprecated annotation

Статья про возможности @kotlin.Deprecated аннотации:
👉 помечать устаревший код
👉 использовать разные уровни:
⚠️ warning - при компиляции warning
error - при компиляции ошибка
🙈 hidden - код не доступен для вызова, при компиляции - Unresolved Reference error
👉 каждый уровень по своему подсвечивается в IDE
👉 может использоваться с большим количеством target'ов (class, function, constructor, property и т.д.)
👉 работает с Java

Отдельно отмечаются возможности параметра replaceWith:
👉 благодаря ему можно не только подсвечивать устаревший код, но и заменять его на новый, используя пункт меню в IDE suggestions
👉 можно заменять устаревший код как в одном месте, так и во всем проекте
👉 можно указать и какие импорты необходимо добавить при замене
#Android11

Android 11 Beta 2 and Platform Stability

Вышла вторая Beta версия Android 11, а вместе с ней достигнут Platfrom Stability релиз, это значит что мы получаем финальное Android SDK и NDK, а также разрешена публикация приложений с targetSdk="30".

Тем кто хочется подготовиться к новой версии Android - уже самое время когда можно начать это делать, ведь изменений в поведении системы для разработчиков уже не будет.
#Android11

Testing platform changes in Android 11

В Android 11 появилась новая возможность для тестирования и отладки изменений в поведении приложений при переходе на новое targetSdk. Теперь разработчик может контролировать какие изменения новой версии Android будут включены в системы. Это позволит проверять только их

Подробнее об App Compatibility Framework
#Dagger2

Introducing Hephaestus

Настройка Dagger 2 в новом проекте обычно включает в себя несколько шагов:
1️⃣попытаться собрать проект и из ошибок сборки
2️⃣понять какие зависимости отсутствуют
3️⃣добавить их
4️⃣при необходимости синхронизовать проект
5️⃣повторить

Разработчики из Square выяснили, что этот процесс является узким горлышком в продуктивности их разработчиков, и создали плагин для компилятора Hephaestus.

Функционал очень схож с тем, что предоставляет Hilt, однако Hilt содержит больше возможностей и при этом накладывает различные ограничения. Если ваш проект уже на Hilt, то скорее всего Hephaestus вам не нужен, но если вы только задумались о том, как упростить работу с Dagger 2, то стоит сравнить отличия Hephaestus и Hilt

Важное отличие Hephaestus - он работает на основе плагина для Kotlin компилятора, а не на основе Java annotation processing
Современные Android-устройства достаточно безопасны и вот почему

К преимуществам Android обычно относят настраиваемость, доступные цены, широкое разнообразие устройств, а про безопасность упоминаний, как правило, нет.

Автор статьи решил выяснить насколько платформа является безопасной и вот какие плюсы он нашел:
👉  любой телефон с Android на борту соответствует CDD
👉  шифрование встроенного хранилища
👉  верифицированная загрузка
👉  безопасное хранение ключей шифрования
👉  ограниченный доступ к файлам приложениями в Android 11
#UI #ServerDrivenUi

Beagle - еще одно решение для реализации концепции Server-Driven UI. Эта концепция позволяет управлять интерфейсом приложения с бэкенда.

Особенности Beagle:
👉 доступно использование для Android, iOS, Web
👉 используется декларативный UI подход
👉 под капотом применяется Yoga Layout  
👉 примеры кода на Kotlin и Swift
👉 имеется хорошая документация с руководствами
👉 документация для реализации подхода и со стороны бэкенда (примеры кода микросервиса тоже на kotlin)
👉 есть playground - где можно попробовать описать компоненты и страницы в json формате
👉 позволяет управлять контентом, визуальной структурой и действиями.

Действия, это например:
👉🏼 отправка http(s) запросов
👉🏼 показ диалогов и алертов
👉🏼 навигация внутри приложения
👉🏼 открытие url-ссылок в стороннем браузере
👉🏼 и также есть возможность реализовать собственные действия
#Kotlin #Generics

Generics in Kotlin

Хороший разбор основных понятий Generic в Kotlin:
👉 Type vs Class vs Subtype
👉 Вариативность
👉 Ковариативность
👉 Контрвариант
👉 Инвариант
👉 Type projection
👉 Star projection
👉 Затирание типов
👉 reified
#GooglePlay

Обновление политики Google Play от 8 июля 2020

Что нового:
👉 Политики для новых приложений теперь будут применяться одновременно с существующими, а не как раньше - в день объявления о новых политиках
👉 Больше информации о том, какую политику нарушает ваше приложение и скриншоты, где это обнаружено
👉 Новые требования для приложений в категорию "Новости"
👉 Новые требования по модерации контента в AR, генерируемого пользователям. Например, нельзя разместить его в зоне военной базы или частной собственности.
👉 Обновленные требования по участии в категории "Приложения для семьи и детей"
👉 Новые требования по размещению рекламу, например нельзя будет показывать нескрываемую рекламу дольше 5 секунд в местах, где это нарушает нормальную работу приложения
👉 Новая политика Mobile Unwanted Software (MUwS).

Новые политики вступают в силу 12 августа 2020

Доступ ко всем файлам
👉 Приложения теперь должны запрашивать доступ только к тем директориям, которые критически для их работы
👉 Разрешение MANAGE_EXTERNAL_STORAGE для приложения с targetSdk = 30 (Android 11) будет доступен только с начала 2021 и по критериям, одобренными Google Play. До этого времени размещать приложения с объявлением этого разрешения нельзя
👉 Изменения касательно работы с файлами вступают в силу в начале 2021. Пора готовиться!
#Animations

Анимация в Android: плавные переходы фрагментов внутри Bottom Sheet

Наличие анимаций делает приложение более приятным для использования, однако их добавление - не всегда самая простая задача, особенно когда это касается BottomSheet.

Авторы статьи пытались использовать animateLayoutChanges, setCustomAnimations для FragmentTransaction, Shared Element Transition, но в итоге остановились на кастомном Transition. Так же рассматриваются альтернативные способы и почему они не были использованы.
#GooglePlay

Implementing In-App Updates in Android

Обновление приложения может быть критически необходимым, например, в случае проблем с безопасностью или в случае падения. Однако не у всех пользователей установлено автоматическое обновление приложений в Google Play. Чтобы решить эту проблему, можно воспользоваться In-app обновлениями из Play Core library.

В статье рассматривается 2 способа настройки обновлений:
👉 Flexible (выполняется в фоне, не прерывая пользователя)
👉 Immediate (полноэкраннный, требующий установки и перезагрузки приложения для дальнейшего использования).
#DateTime

Tick Tock: Desugaring and Timezones

В Android Studio 4 появился desugaring некоторых Java 8+ APIs, в том числе и java.time. Однако для таймзон по умолчанию используется java.util.TimeZone, которая зависит от рантайма, что является проблемой для Android, так как многие устройства уже перестали получать обновления, а только в 2019 году в мире было 7 изменений таймзон.

Чтобы решить данную проблему, была создана библиотека Tick Tock, которая использует провайдер таймзон, зависящий от вшитого словаря.
Какую библиотеку как основную вы используете для работы с датой и временем при разработке Android приложений?
Anonymous Poll
46%
Старый java.util.Datе
10%
Java 8 Date/Time API
16%
ThreeTen или ThreeTenABP
14%
Joda Time
1%
Другая библиотека
1%
Не разрабатываю под Android (вообще или нативные приложения)
12%
Не учавствую в опросе