Un kit de desarrollo de software ( SDK ) es una colección de herramientas de desarrollo de software en un solo paquete instalable. Facilitan la creación de aplicaciones al contar con un compilador, un depurador y, en ocasiones, un marco de software . Normalmente son específicos de una combinación de plataforma de hardware y sistema operativo. Para crear aplicaciones con funcionalidades avanzadas como anuncios, notificaciones push, etc.; la mayoría de los desarrolladores de software de aplicaciones utilizan kits de desarrollo de software específicos.
Algunos SDK son necesarios para desarrollar una aplicación específica de la plataforma. Por ejemplo, el desarrollo de una aplicación Android en la plataforma Java requiere un kit de desarrollo de Java . Para las aplicaciones iOS (apps), se requiere el SDK de iOS . Para la Plataforma universal de Windows, se puede utilizar el SDK de .NET Framework . También hay SDK que agregan funciones adicionales y se pueden instalar en aplicaciones para proporcionar análisis, datos sobre la actividad de la aplicación y opciones de monetización. Algunos creadores destacados de este tipo de SDK son Google, Smaato, InMobi y Facebook.
Un SDK puede tomar la forma de interfaces de programación de aplicaciones [1] en forma de bibliotecas en el dispositivo de funciones reutilizables utilizadas para interactuar con un lenguaje de programación particular , o puede ser tan complejo como herramientas específicas de hardware que pueden comunicarse con un sistema integrado particular . [2] Las herramientas comunes incluyen instalaciones de depuración y otras utilidades , a menudo presentadas en un entorno de desarrollo integrado . [3] Los SDK pueden incluir software de muestra y/o notas técnicas junto con documentación y tutoriales para ayudar a aclarar los puntos planteados por el material de referencia principal. [4] [5]
Los SDK suelen incluir licencias que los hacen inadecuados para la creación de software destinado a ser desarrollado bajo una licencia incompatible. Por ejemplo, un SDK propietario es generalmente incompatible con el desarrollo de software libre , mientras que un SDK con Licencia Pública General GNU podría ser incompatible con el desarrollo de software propietario, por razones legales. [6] [7] Sin embargo, los SDK creados bajo la Licencia Pública General Reducida GNU suelen ser utilizables para el desarrollo propietario. [8] En los casos en los que la tecnología subyacente es nueva, los SDK pueden incluir hardware. Por ejemplo, el SDK de comunicación de campo cercano de AirTag de 2012 incluía tanto la mitad de pago como la mitad de lectura de la pila de hardware necesaria. [9]
La aplicación móvil Android promedio implementa 15,6 SDK separados, y las aplicaciones de juegos implementan en promedio 17,5 SDK diferentes. [10] [11] Las categorías de SDK más populares para las aplicaciones móviles Android son análisis y publicidad. [11]
Los SDK pueden ser inseguros (porque se implementan dentro de las aplicaciones pero ejecutan código separado). Los SDK maliciosos (con intenciones honestas o no) pueden violar la privacidad de los datos de los usuarios , dañar el rendimiento de las aplicaciones o incluso provocar que se prohíban las aplicaciones en Google Play o App Store . [12] Las nuevas tecnologías permiten a los desarrolladores de aplicaciones controlar y monitorear los SDK de los clientes en tiempo real.
Los proveedores de SDK para sistemas o subsistemas específicos a veces sustituyen el término "software" por un término más específico . Por ejemplo, tanto Microsoft [13] como Citrix [14] ofrecen un kit de desarrollo de controladores para desarrollar controladores de dispositivos .
Algunos ejemplos de kits de desarrollo de software para diversas plataformas incluyen: