Домой Android разработкаJava, Kotlin и Android SDK Популярные Android библиотеки для разработчиков

Популярные Android библиотеки для разработчиков

by dilix
Libraries for android developer

Накопленный опыт, собранные грабли и оттестированный временем и сотнями разработчиков функционал — как нельзя лучше описывает смысл библиотек, используемых в разработке.

В использовании готовых библиотек есть свои плюсы и минусы:

+ Не надо тратить время на изобретения велосипеда.
+ За вас уже протестировали готовый функционал и починили «детские болячки» (если библиотека популярная).

— Программист не всегда интересуется насколько библиотека уязвима и влияет на производительность.
— Модуль может быть достаточно громоздким при необходимости использования только малой части функционала.

Если для реализации вам требуется от силы пара часов работы, то зачастую использование готовых решений не оправдано. Когда же можно решить массивную задачу парой строчек кода и импортом — изобретать велосипед не целесообразно. Важно изначально понимать и оценивать размер предполагаемого функционала. Это приходит с опытом.

Некоторые вещи без библиотек практически не сделать (ну или сделать, но сложно, долго и не понятно зачем). Речь идет в основном о доступах к 3rd party инструментам и сервисам. К примеру оплата внутри мобильных приложений делается через стандартную, но все-таки библиотеку.

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

Общие библиотеки

Существует ряд библиотек, цель которых в целом упростить разработку как таковую.

Android Jetpack

Jetpack —  набор библиотек от Google. Они постоянно улучшаются и содержат такие компоненты, как постраничная загрузка, навигация, Dependency Injection, Lifecycle и другие.

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

Firebase

Сказать, что Firebase — библиотека — было бы не верно. Это набор облачных услуг. По сути весь функционал бэкенда и бэкофиса в одном флаконе. Через него отправляются push уведомления на Android, в нем можно хранить данные, аналитику, собирать креши и многое другое. А вот для доступа к разным функциональным частям существует официальные библиотеки.

Базовый тариф полностью бесплатный. Также есть тарифы с оплатой по мере использования. Он пригодится, когда вашим приложением начинают более активно пользоваться и лимиты по использованию превышаются.

Остановимся на нескольких* самых популярных частях и библиотеках от Firebase.

*Список точно полезный, но далеко не полный.

Firebase crashlytics

Ранее известный как Crashlytics от Fabric, который в итоге купил Google. Простая интеграция позволяет быстро настроить сбор крэшей в вашем приложении. Как только у пользователя случается сбой, вы увидите всю необходимую информацию — от StackTrace до модели устройства и операционной системы.

Firebase analytics

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

Данные из Firebase analytics можно загружать в BigQuery и строить любые отчеты.

Firebase datastore

Если вам нужен сервер для вашего мобильного приложения, а развертывать и поддерживать целый backend нет желания, сил и средств, то Firebase Datastore — хороший выбор. Он позволяет хранить данные в NoSql формате.

Библиотека для доступа данным поддерживает Realtime обновления UI при изменении данных.

Firebase authentication

SaaS от Firebase был бы далеко не полным, если бы в нем не было аутентификации. Существует множество «провайдеров» аутентификации, через которые можно получить токен для дальнейшего использования.

Firebase authentication methods

Dagger

Dagger позволяет упростить Dependency Injection в ваших приложениях. Внедрение зависимости это процесс, в котором вы связываете компоненты между собой и предоставляете необходимые зависимости для ваших классов.


Hilt

Hilt это DI поверх даггера, созданный специально для Android. Dependency Injection работает из коробки в том случае, если у вашего класса есть доступный конструктор, к которому можно поставить аннотацию. Таким способом система будет знать как именно можно создать экземпляр вашего класса. С Android все немного сложнее.

У стандартных компонент, такие как Activity, Fragment и др. нет публично доступных конструкторов и Android создает их где-то глубоко внутри. Hilt позволяет использовать аннотации прямо на Андроид компонентах, тем самым обеспечивая необходимые зависимости.

Асинхронная работа и сетевые запросы

Многопоточное программирование — это отдельная, большая тема. Разобраться со всеми аспектами асинхронности с наскока не получится. В то же время она просто необходима, т.к. все «тяжелые» операции обязаны работать в фоновых потоках и не тормозить работу основного UI потока приложения.

Самый частый кейс асинхронной работы — это сетевые запросы. Именно по-этому я их здесь и объединил.

Retrofit

Retofit — пожалуй самая популярная библиотека когда речь заходит о работы с сетью и REST API.

Основной смысл библиотеки состоит в том, чтобы описать методы работы с сетью как обычные функции.

public interface GitHubService {
  @GET("users/{user}/repos")
  Call<List<Repo>> listRepos(@Path("user") String user);
}

При изначально асинхронном подходе реализации доступа к данным вам становится все равно откуда они приходят. Вы используете стандартный метод языка, а внутри происходит «магия» и данные, которые вы получаете на выходе — это данные от вашего сервера.

Kotlin courutines

Корутины — стандартный синтаксис Kotlin,  второго официального языка Android программирования. Назвать это библиотекой не совсем правильно, но тем не менее…

Приписывая ключевое слово suspend вы говорите системе о том, что данная функция может выполняться долго и ее выполнения можно попросить подождать.

// this is your first suspending function
suspend fun doWorld(): Int {
    delay(1000L)
    return VALUE
}

Описав один раз функцию как suspend в дальнейшем можно ее использовать как обычную функцию «не обращая внимания» на ее асинхронность.

RXJava

RXJava — это Java реализацию реактивного подхода к программированию. В основе его лежит концепция, что все описывается как потоки данных на которые можно подписываться и получать обновления. Понятия состояния как такового размывается, остаются только реакции на некие события.

Сама библиотека RXJava дает мощные инструменты работы с такого рода потоками. Их можно объединять, соединять в цепочки, переключать контексты и многое, много другое. На деле же очень часто получается, что вся мощь модуля используется только лишь для того, чтобы просто сходить в сеть и получить данные. Если вам не нужны сложные сценарии работы с потоками данных, то и вероятно данная библиотека вам тоже не нужна 😉

Библиотеки для работы с изображениями

Image processing for android

Вряд ли какое приложение обходится сегодня без картинок. Есть две наиболее популярных библиотеки для загрузки изображений: Glide и Picassoo. По большому счету они умеет примерно одно и тоже. Обе могут без проблема загружать, кешировать и трансформировать картинки.

Можно почитать про сравнение этих двух библиотек. Кажется, что Picasso логично использовать, когда нужна базовая работа с изображениями, а Glide — когда более продвинутая, в том числе работа с Gif.

Библиотеки для работы с базами данных

Основная база данных в Android — это SQLite. Раньше работать с ней напрямую было довольно мучительно. С появлением Room все встало на свои места.

Room

Room — это уровень абстракции поверх SQLite. Идея сродни Retrofit. Аннотировать методы доступа к данным. Описали интерфейс и дальше используете функцию как ни в чем не бывало, вся магия происходит под капотом.

И Room и Retrofit из обычного описания заголовка функции делают мощный инструмент. При практически одинаковом синтаксисе в одном случае произойдет сложный сценарий доступа к данным на сервере, в другом — к базе. Но вам-то все равно. Вам главное получить данные, не вникая на этапе использования откуда конкретно они пришли.

Realm

Существует сторонние реализации хранилищ данных. Одно из них — Realm. Это быстрая NoSql база данных, которую можно использовать, если БД в вашем приложении не имеет сложных связей, а является по факту коллекцией однотипных документов.

Библиотеки для мобильной аналитики

Тема мобильной аналитики настолько обширна, что и одной статьи под нее не хватит. Существует множество задач — от простого сбора событий и построения воронок до offline атрибуций установок.

Универсального решения для любого случая найти не получится… но есть выход. Для начала используйте что-нибудь минимальное, простое, понятное и бесплатное. На эту роль хорошо подойдут Firebase от Google и Appmetrica от Яндекса.  В тот момент, когда вы поймете, что упираетесь в доступный функционал, можете присматриваться к другим инструментам. Главное, что вы будете понимать куда и зачем смотреть.

Тему библиотек для разработки Android приложений покрыть полностью просто невозможно. Мы постарались остановится на наиболее встречающихся задачах и их решениях. Многие темы, такие как локализация приложений или же стильные анимации — остались за кадром статьи. В каждом отдельном случае анализируйте сами, нужна ли вам библиотека, или в этот раз лучше написать реализацию самим.

 

Хочешь обсудить Android разработку?
Заходи к нам Вконтакте, на Facebook и в Телеграм!

Добавить комментарий

Может быть интересно

Этот сайт использует Cookie файлы для улучшения вашего пользовательского взаимодействия. Используя данный сайт вы соглашается с этим. Принять Читать

Политика конфиденциальности и Cookies