Details[edit]
An SDK can take the form of application programming interfaces[1] in the form of on-device libraries of reusable functions used to interface to a particular programming language, or it may be as complex as hardware-specific tools that can communicate with a particular embedded system.[2] Common tools include debugging facilities and other utilities, often presented in an integrated development environment.[3] SDKs may include sample software and/or technical notes along with documentation, and tutorials to help clarify points made by the primary reference material.[4][5]
SDKs often include licenses that make them unsuitable for building software intended to be developed under an incompatible license. For example, a proprietary SDK is generally incompatible with free software development, while a GNU General Public License'd SDK could be incompatible with proprietary software development, for legal reasons.[6][7] However, SDKs built under the GNU Lesser General Public License are typically usable for proprietary development.[8] In cases where the underlying technology is new, SDKs may include hardware. For example, AirTag's 2021 near-field communication SDK included both the paying and the reading halves of the necessary hardware stack.[9]
The average Android mobile app implements 15.6 separate SDKs, with gaming apps implementing on average 17.5 different SDKs.[10] The most popular SDK categories for Android mobile apps are analytics and advertising.[10]
SDKs can be unsafe (because they are implemented within apps yet run separate code). Malicious SDKs (with honest intentions or not) can violate users' data privacy, damage app performance, or even cause apps to be banned from Google Play or the App Store.[11] New technologies allow app developers to control and monitor client SDKs in real time.
Providers of SDKs for specific systems or subsystems sometimes substitute a more specific term instead of software. For instance, both Microsoft[12] and Citrix[13] provide a driver development kit for developing device drivers.
Examples of software development kits for various platforms include: