Комплект разработки программного обеспечения ( SDK ) — это набор инструментов разработки программного обеспечения в одном устанавливаемом пакете. Они облегчают создание приложений , имея компилятор, отладчик и иногда программную среду . Обычно они зависят от комбинации аппаратной платформы и операционной системы . [1] [2] [3] Для создания приложений с расширенными функциями, такими как реклама, [4] push-уведомления, [5] и т. д.; большинство разработчиков прикладного программного обеспечения используют специальные комплекты разработки программного обеспечения. [6]
Некоторые SDK необходимы для разработки приложения для конкретной платформы. Например, для разработки приложения Android на платформе Java требуется Java Development Kit . Для iOS -приложений (приложений) требуется iOS SDK . Для универсальной платформы Windows можно использовать .NET Framework SDK . Существуют также SDK, которые добавляют дополнительные функции и могут быть установлены в приложениях для предоставления аналитики, данных об активности приложений и вариантов монетизации. Некоторые известные создатели SDK такого типа включают Google , [7] Smaato , [8] InMobi , [9] и Facebook . [10]
SDK может принимать форму интерфейсов прикладного программирования (API) [3] в виде встроенных в устройство библиотек многократно используемых функций, используемых для взаимодействия с конкретным языком программирования , или он может быть таким же сложным, как аппаратные инструменты, которые могут взаимодействовать друг с другом. с конкретной встроенной системой . [11] Общие инструменты включают средства отладки и другие утилиты , часто представленные в интегрированной среде разработки (IDE). [12] SDK могут включать образцы программного обеспечения и/или технические примечания, а также документацию и учебные пособия, помогающие разъяснить моменты, содержащиеся в основном справочном материале. [13] [14]
SDK часто включают лицензии , которые делают их непригодными для создания программного обеспечения, предназначенного для разработки под несовместимой лицензией. Например, проприетарный SDK обычно несовместим с разработкой свободного программного обеспечения , тогда как SDK под лицензией GPL может быть несовместим с разработкой проприетарного программного обеспечения по юридическим причинам. [15] [16] Однако SDK, созданные под лицензией GNU Lesser General Public License (LGPL), обычно можно использовать для проприетарной разработки. [17] В случаях, когда базовая технология является новой, SDK может включать аппаратное обеспечение. Например, NFC SDK AirTag 2021 включал в себя как платную, так и считывающую половины необходимого аппаратного стека. [18]
Среднестатистическое мобильное приложение Android реализует 15,6 отдельных SDK, а игровые приложения реализуют в среднем 17,5 различных SDK. [19] Самыми популярными категориями SDK для мобильных приложений Android являются аналитика и реклама. [19]
SDK могут быть небезопасными (поскольку они реализованы в приложениях, но выполняют отдельный код). Вредоносные SDK (с честными намерениями или нет) могут нарушить конфиденциальность данных пользователей , нанести ущерб производительности приложений или даже привести к их блокировке в Google Play или App Store . [20] Новые технологии позволяют разработчикам приложений контролировать и отслеживать клиентские SDK в режиме реального времени.
Поставщики SDK для конкретных систем или подсистем иногда заменяют термин «программное обеспечение» более конкретным . Например, и Microsoft [21], и Citrix [22] предоставляют комплект разработки драйверов (DDK) для разработки драйверов устройств .
Примеры комплектов разработки программного обеспечения для различных платформ включают: