Извечная тема - Gradle и скорость сборки. Очередная статья которая напоминает что сделать, чтобы не проводить много времени ожидая сборки проекта.
Что стоит добавить в gradle.properties 👉org.gradle.configureondemand=true 👉kapt.use.worker.api = true 👉org.gradle.parallel=true 👉org.gradle.caching=true 👉room.incremental = true 👉org.gradle.unsafe.watch-fs=true
А еще советы: 👉 Отключить crunchPngs 👉 Отключить загрузку Firebase mapping где не нужно
Для того чтобы получить время в Android существует 2 основных класса: System и SystemClock. В статье разбираются чем отличаются способу получения времени в этих классах и производится сравнение производительности (SystemClock работает практически в 2 раза быстрее)
Обеспечение безопасности данных пользователя важно для любого приложения. Если в вашем приложении есть экран с кодом, значит пользователю есть что защищать. Поэтому берите ключ, который вводит пользователь и шифруйте им данные пользователя.
В статье вы найдёте как шифровать базу данный SQLite, и в случае когда у вас используется Room.
В статье рассказывается как важно уделять внимание производительность, как замерить эффект плохой производительность, а когда слишком быстрая работа сервиса может вызвать подозрения у пользователя. Своим опытом делится инженер компании Авито
Весной вышла в свет новая версия реактивного фреймворка RxJava. Она не привнесла кардинальных изменений и в основном содержит исправление багов. В статье автор описывает что нового мы получили в этой мажорной версии:
👉 Поддержка Java 8 👉 Поддержка Streams и CompletabeFuture 👉 Убрана поддержка java.time.Duration и java.util.function 👉 По заверениям разработчиков теперь не будут теряться ошибки 👉 Функция reset для "горячих" Observable 👉 Возможность ставить Flowable на паузу 👉 Новый тип - Supplier – аналог Callable, но с throws Throwable
Так же автор даёт рекомендации по миграции на новую версию. Более подробно можно ознакомиться в статье.
Написание интерфейсов с хорошим API может быть сложной задачей. Иногда для более удобного взаимодействия с интерфейсом хочется добавить метод, который имеет более удобное API, чем имеющийся, но при этом выполняющий схожие действия. Добавление такого метода привносит неявный контракт для всех классов, имплементирующих этот интерфейс.
Одним из решений может стать реализация метода по умолчанию, однако такой подход не будет работать при мокировании объекта в тестах. Автор статьи предлагает использовать extension функции для таких случаев и объясняет преимущества такого подхода.
Серия статей от гуглера о реактивном UI на основе Coroutine Flow. В серии статей рассказывается о: 👉 Реактивном UI 👉 Scope выполнения операций 👉 Почему Kotlin Coroutine хорошо подходят для решения асинхронных UI задач 👉 Интеграция Coroutines и Arch Components 👉 Отмена выполнения Coroutine 👉 Подходы для работы с LiveData и Coroutine в ViewModel
В Kotlin 1.4 появится новый режим компилятора для default методов в интерфейсах с Java 8 Target. Вместо генерации отдельного класса со статическими методами, Kotlin компилятор сможет генерировать сразу Java 8 байткод, причем аннотация JvmDefault больше не понадобится.
Одной из проблем при подключении к уже существующему проекту является индексация кода. Это необходимо для навигации и ускорения работы. На маленьких проектах это практически не заметно, но индексация большого проекта с несколькими сотнями тысяч строк кода может занять очень много времени.
Для решения этой проблемы JetBrains представили новый плагин, который позволяет делиться частью индексации большого проекта.
Улучшения в ОС Android и ART происходят каждую мажорную версию, но озвучивают их мало 😢 Вот и новую возможность IORap, направленную на улучшение времени запуска приложений. На некоторых приложения она позволяет ускорить запуск приложения на 20%+ (по заявлениям Google)
IORap работает на основе предсказания какие I/O операции будут необходимы и выполняет их заранее, например выполняет загрузку данных и делает последовательность операций чтения более быстрой.
Эта оптимизация основана на статистике что большинство приложение из Google Play проводят более 10% времени на старте в блокирующих I/O операциях и ожидают ответа.
В статье вы найдете множество графиков и подробности работы IORap на устройстве.
Автор статьи предлагает по-новому взглянуть на процесс тестирования вашего кода путём отказа от максимального покрытия кода юнит-тестами. Он предлагает сосредотачиваться не на тестировании каждой отдельной функции в вашей бизнес-логике, а создавать тесты, которые будут проверять use case'ы вашего приложения, при этом также максимально отказаться от мокирования зависимостей, чтобы быть на 100% уверенным в том что всё работает правильно. В качестве примера автор переписывает приложение, которое написано с учётом требований юнит-тестирования, на функциональный вариант.
👉 Работы в направление отказа от зависимости Bouncy Castle в okhttp-tls 👉 Улучшения для приложений с большим количеством параллельных запросов 👉 Обновление до Okio 2.7.0 👉 Теперь в логах не будет сообщения "Didn't find class org.conscrypt.ConscryptHostnameVerifier" 👉 Баг фикс
В Android 11 нас ждут People Notification, которые имеют в своём контексте человека или группу людей. Такие уведомления будут приоритизироваться выше, а также позволят размещать их в новой секции «Converstaion» в панели уведомлений и показать Notification Bubble.
В Android 11 нас ждут ограничение доступа к информации об установленных приложениях в системе (подробнее здесь). Чтобы иметь доступ к такой информации в манифесте надо будет добавлять новую секцию <queries>. Поддерживается она только в Android Gradle Plug-in 4.1 выше поэтому без обновления не обойдётся
В последние годы Google делает множество попыток ускорить обновление Android устройств до новых версий ОС: 👉Project Treble - отделение OEM и SoC зависимостей от основного кода ОС 👉Generic System Images - чистый образ Android (без модификаций AOSP) 👉Project Mainline - обновление части компонентов ОС через Google Play (безопасность, приватность и др.) 👉 Обновление других важный компонентов ОС: авторизациях, push уведомления, Google Play Protect, WebView и др.
Все это дала своё результаты - Android 10 стала самой быстрорастущей версией ОС за всю историю зеленого робота.