Домой Android разработкаJava, Kotlin и Android SDK Создание собственных библиотек и SDK под Android

Создание собственных библиотек и SDK под Android

by dilix
Создание библиотек и SDK под Android

Программист создает приложения. Но иногда необходимо реализовать функционал, который в дальнейшем будет использовать как часть другого, большего, продукта. Тут-то и появляются такие термины как API, библиотеки и SDK.

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

Отличие API, библиотеки и SDK

Для начала определимся с терминами. Итак, что именно мы будет разрабатывать.

Что такое API

API (Application Programming Interface) — это ваш «контракт». То, что библиотека может принимать на вход и какой выход от нее ожидать. Публичные интерфейсы изначально стоит продумывать такими, чтобы их не менять в дальнейшем. При изменении «правил игры» все те, кто реализовал этот интерфейс ранее не могут безболезненно обновиться на новую версию. Правила то поменялись…

По сути, тем, кто будет использовать вашу библиотеку в первую очередь интересно ЧТО будет делать библиотека, а не КАК она будет это реализовывать. Вот именно на этот вопрос и отвечает API.

Что такое программная библиотека

Библиотека, когда мы говорим про программирование — это готовая подпрограмма, которую можно использовать AS IS внутри вашей программы. Если быть последовательным, то у вас есть API, которое описывает то, как библиотека будет себя вести и непосредственно ее реализация.

Примеров библиотек великое множество. В этом и состоит прелесть модульного программирования. А именно — вам не надо второй раз писать то, что до вас было сделано, протестировано и используется в других проектах. Например Picasso для загрузки картинок; Retrofit для написания REST клиентов; GSON для сериализации данных и т.д.

Использовать библиотеку или писать самому — вечный холивар среди разработчиков. Лично я придерживаюсь простого правила. Если есть готовая библиотека, которая делает практически то, что вам нужно, у нее много forkов и starзов на github и часто обновляется — использую её.


Fork, stars, used by на Github

Что такое SDK

SDK (Software Development Kit) — это набор инструментов для разработки. Просто библиотеку сложно назвать SDK, хотя зачастую так и делают. Предполагаю, что основная цель такого наименования — выделить то, что это именно целевая библиотека, а не отдельное приложение. Примеры таких псевдо-SDK: Stripe SDK, Anyline SDK и др. «Четсные» SDK это Android SDK, iOS SDK, Java Development kit и др.

По правде говоря, использовать аббревиатуру SDK для обозначение более-менее комплексных библиотек — удобно, и я сам тоже так делаю 🙂 Грань, когда ваш набор библиотек становится полноценным набором инструмент для разработчиков — условная.

Можно сказать, что ваш набор библиотек уже можно назвать SDK, когда образуется тесная двусторонняя связь между основной программной и библиотекой.

Предпосылки создания SDK и основные проблемы

Мы на проекте делаем Android приложение, (большую) часть которого можно встраивать как внутрь других приложений. Причем довольно тесно. То есть не просто открыть стороннюю камеру и вернуть результат в виде ссылки на картинку в системе.

В связи с этим есть ряд интересных задач о связке внешнего приложения и библиотекой-SDK внутри Android. Как то:

  • Если внешнее приложение имеет LockScreen по таймауту, а время, проведенное в SDK может оказаться значительным — как сделать незаметный переход и white label, чтобы случайно, при возврате, пользователь не столкнулся с экраном блокировки.
  • Существуют сценарии, когда в рамках одного пользовательского сценария необходимо несколько раз «переключаться» между библиотекой и внешним приложением, причем поддерживая «общий стек» экранов. Т.е. обратный путь должен тоже чередовать внешнее приложение и SDK.
  • Простота интеграции. Естественно, ваши библиотеки мало кто захочет интегрировать, если внедрение будет вызывать боль и страдания.
  • Логирование. Мы сами же интегрируем свое SDK. Так сказать «родное» внешнее приложение. И вот тут надо из библиотеки отправлять аналитику во внешние системы, никак не связанные с самим SDK.
  • Поддержка стилизации экранов SDK с учетом темы внешнего приложения, но с возможной «блокировкой» цветовой палитры фирменного стиля поставщика библиотеки.

И это еще не весь список…

Проблемы и их решения будем разбирать шаг за шагом в серии статей, посвященных разработке библиотек под Android. Ссылки будут добавляться в подвал этой статьи. Поехали!

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

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

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

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

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