SDK

SDK (англ. software development kit — комплект средств разработки) — это набор инструментов для создания программного обеспечения, объединённых в одном устанавливаемом пакете. SDK упрощает разработку приложений за счёт наличия компилятора, отладчика и иногда программного фреймворка. Обычно SDK ориентированы на конкретную комбинацию аппаратной платформы и операционной системы. Для создания приложений с расширенными возможностями, такими как реклама, push-уведомления и прочее, большинство разработчиков используют специализированные SDK для программного обеспечения.

Некоторые SDK необходимы для разработки приложений под определённую платформу. Например, для создания приложения Android на платформе Java требуется комплект средств разработки Java. Для приложений под iOS используется iOS SDK. Для платформы Universal Windows Platform может применяться .NET Framework SDK. Существуют также SDK, которые добавляют дополнительные функции в приложения, предоставляя аналитику, данные об активности пользователей и возможности монетизации. Среди разработчиков таких SDK выделяются компании Google, Smaato, InMobi и Facebook.

Подробности

SDK может быть реализован в виде интерфейсов программирования приложений (англ. application programming interfaces, API)[1] в виде библиотек функций для работы с определённым языком программирования, либо представлять собой сложные аппаратно-зависимые инструменты для взаимодействия, например, с встраиваемой системой[2]. В состав стандартных инструментов часто входят средства отладки и другие утилиты, зачастую объединённые в интегрированной среде разработки[3]. SDK может содержать примеры программ, технические записки, а также документацию и руководства, разъясняющие материал основной документации[4].

SDK часто поставляются с лицензиями, которые делают их несовместимыми с разработкой программного обеспечения под иной тип лицензии. Например, проприетарный SDK обычно несовместим с разработкой свободного программного обеспечения, а комплект с лицензией GNU GPL, в свою очередь, юридически несовместим с проприетарными разработками[5].

SDK с лицензией GNU LGPL обычно можно использовать и в проприетарных разработках[6]. В случаях, когда технология новая, в состав SDK могут входить аппаратные компоненты. Например, комплект AirTag для технологии ближнего поля (NFC) в 2012 году включал как аппаратную, так и программную часть системы[7].

Среднестатистическое мобильное приложение для Android использует 15,6 различных SDK, а для игровых приложений этот показатель составляет в среднем 17,5[8]. Наиболее популярными категориями SDK для Android-приложений являются аналитика и реклама[9].

SDK потенциально могут представлять опасность, так как они внедряются в приложение, но могут выполнять сторонний код. Вредоносные SDK (независимо от мотивов их разработчиков) способны нарушать конфиденциальность данных пользователей, снижать производительность работы приложения или даже привести к его удалению из Google Play или App Store[10]. Современные технологии позволяют программистам в реальном времени контролировать и отслеживать работу клиентских SDK.

Поставщики SDK для определённых систем или подсистем иногда используют более специализированные термины вместо слова «программный». Например, и Microsoft[11], и Citrix[12] предлагают пакеты для разработки драйверов устройств, называемые driver development kit («комплект средств разработки драйверов»).

Примеры

Примеры комплектов средств разработки для различных платформ:

Примечания