В статье сравнивается потребление ресурсов и быстродействие при отрисовке различных типов анимаций между нативными приложениями на Android и iPhone и такими же приложениями написанными на Flutter и React Native.
Ожидаемо, нативные приложения работают быстрее и показывают лучшие результаты в рендеринге и использовании ресурсов, Flutter держится в середине, React Native оказался наиболее медленным.
В мире разработки ПО Роберт Мартин считается своего рода "иконой". Этот человек написал несколько книг, которые стали для многих программистов настольными. Но один из главных нюансов программирования в том, что оно постоянно развивается и видоизменяется, то что было актуально 10 лет назад сегодня может быть абсолютно нерелевантным.
Автор в статье рассказывает о неточностях и проблемах книги "Чистый код", рассказывает о том что сам код, приведённый в книге, не такой уж и "чистый". Автор не использует правило "критикуешь - предлагай", что было бы весьма актуально для подобной темы.
Интересно узнать ваше мнение относительно этой статьи, поэтому не поленитесь после прочтения поставить палец вверх или вниз в конце этого поста.
Хотите узнать как работает магия? Тогда вам стоит почитать в статью и отправиться в путешествие какой код генерирует Hilt - расширение Dagger для Android разработки
Espresso - это фреймворк для UI тестирования Android приложений. Для поиска определенной view в иерархии или для проверки состояния view в Espresso используются объекты класса org.hamcrest.Matcher
Можно использовать как множество готовых Matchers, покрывающих большинство кейсов, так и создавать собственные. Например, для редких состояний view или для custom view.
В статье расписано как можно реализовать собственный Matcher на примере custom view, и как его потом использовать в UI тестах.
Extension функции - одна из самых популярных возможностей языка Kotlin, но проблема ее в том что разработчики слишком увлеклись ей и используют ее для всего.
Когда стоит сделать extension функцию: 👉 Nullable receiver 👉 Вы не можете модифицировать класс 👉 Сделать интерфейс/класс минималистичным
Хотите проверить то что ваше приложение не выполняет никаких IO операций на главном потоке или используется только шифрованное соединение по сети? Тогда всем может помочь в этом StrictMode. В статье вы найдете как настроить StrictMode и как выглядит обнаружение проблем.
Если хотите использовать StrictMode удобнее, на любой версии API и даже иметь DSL для настройки, то обратите внимание на мою библиотеку - StrictMode Compat.
В Android 11 добавляются новые возможности уведомлений - "People Notifications". Это сообщения, связанные с каким-то человеком или группой людей. Особенно важную роль это сыграет для мессенджеров и любых приложение где есть чат.
Dagger Hilt - библиотека которая уже наделала много шуму, но я не смог там найти одной удобной возможности - inject зависимостей в конструкторы Fragment. Автор статьи рассказывает как это можно сделать
В статье рассказывается о полезных возможностях Firebase при использовании TensorFlow Lite: 👉 deploy моделей в облаке (вручную или автоматизировано). Это позволит доставить модель на устройство без необходимости перепубликации приложения 👉 измерение скорости ответа модели, с помощью Firebase Performance Monitoring 👉 проведение A/B тестов с разными моделями с помощью Firebase Remote Config и Firebase A/B Testing 💪 статья содержит примеры кода 💪 есть ссылки на codelabs (Android и iOS), которые помогут освоить рассмотренные вопросы на практике
Server Driven UI - это новый подход к управлению вашим UI который станет более доступен с релизом Jetpack Compose. Ключевая идея состоит в том чтобы управлять данными, которые отображают ваши View, удалённо с помощью обновлений с сервера.
В статье описан один из вариантов такого подхода на примере приложения для отображения списков фильмов. Кроме этого автор показывает как с помощью Compose можно создавать комплексный UI с несколькими scrollable списками.
Принципы SOLID стали фундаментальными при разработке программного обеспечения, но не всех их знают или до конца понимают. Если вы до сих пор о них не слышали или хотите разобраться, то лучшим решением станет прочитать книгу Роберта Мартина "Чистая Архитектура"
Если такой возможности нет, то автор статьи постарался максимально просто и доходчиво объяснить каждый из них, при этом использовал примеры на Java и Kotlin, близкие Android разработчикам.
Разработчики из Booking закопались в оптимизации OkHttp чтобы получить больше скорости для своих сетевых запросов. Узкое место было найдено в том, что переиспользование socket соединений не работает так эффективно, как хотелось бы разработчикам библиотеки.
К сожалению, библиотека OKHttp не содержит callback, который бы позволил бы перехватить управление созданием RealConnection, не вам стоит обратить на рекомендацию от создателей: Security.insertProviderAt(Conscrypt.newProvider(), 1);
Gradle Daemon предназначен для того чтобы ускорять вашу сборку. Платите вы за это тем, что он постоянно весит в оперативной памяти и кушает ее.
В статье рассказывает о том, что одновременное использование Android Studio и терминала для запуска Gradle команд может приводить к тому, что стартуют разные Gradle Daemons и это приводит к увеличению потребления памяти.
Правильная настройка IDE позволяет достичь того, чтобы использовался общий Daemon.
Выпустили новую версию статического анализатора Kotlin кода - Detekt: 💪 в Сomplexity report теперь вычисляется показатель когнитивной сложности проекта 🧠 👉 новые правила - IgnoredReturnValue, ImplictUnitReturnType, IsPropertyNaming 👉 добавили ReportingExtension - интерцептор для результатов отчета 👉 Обновили до KtLint 0.37.1 👉 о проблемах функций и классов теперь сообщается по идентификаторам (что особенно полезно в IntelliJ Detekt Plugin) 👉 много различных багфиксов и улучшений
Особенности миграции: ⚠️ может потребоваться подкорректировать/перегенерировать baseline файл ⚠️ файл default-detekt-config был перемещен, потребуется обновить ссылку до него
В статье автор рассказывает о самых популярных способах взлома Android-приложений и даёт рекомендации как этого избежать: 👉 Обфускация кода 👉 Проверка на root доступ 👉 Шифрование web запросов 👉 Защита локальной базы данных и Shared Preferences 👉 Защищённое логирование
Так же автор приводит примеры как предотвратить создание скриншотов в вашем приложении и как использовать одноразовую верификацию для пользователей.
В продолжении рассматриваются следующие вопросы: 👉 где можно найти альтернативные ML модели 👉 тренировка собственных моделей 👉 разные способы импортирования кастомных моделей в Android приложение