Asoftware development kit (SDK) is a collection of software development tools in one installable package. They facilitate the creation of applications by having a compiler, debugger and sometimes asoftware framework. They are normally specific to a hardware platform and operating system combination. To create applications with advanced functionalities such as advertisements, push notifications, etc; mostapplication software developers use specific software development kits.
Some SDKs are required for developing a platform-specific app. For example, the development of an Android app on the Java platform requires aJava Development Kit. For iOS applications (apps) theiOS SDK is required. For Universal Windows Platform the.NET Framework SDK might be used. There are also SDKs that add additional features and can be installed in apps to provide analytics, data about application activity, and monetization options. Some prominent creators of these types of SDKs include Google, Smaato, InMobi, and Facebook.
An SDK can take the form ofapplication programming interfaces[1] in the form of on-devicelibraries of reusable functions used to interface to a particularprogramming language, or it may be as complex as hardware-specific tools that can communicate with a particularembedded system.[2] Commontools include debugging facilities and otherutilities, often presented in anintegrated 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 includelicenses that make them unsuitable for building software intended to be developed under an incompatible license. For example, a proprietary SDK is generally incompatible withfree software development, while aGNU General Public License'd SDK could be incompatible with proprietary software development, for legal reasons.[6][7] However, SDKs built under theGNU Lesser General Public License are typically usable for proprietary development.[8][9] In cases where the underlying technology is new, SDKs may include hardware. For example,AirTag's 2012near-field communication SDK included both the paying and the reading halves of the necessary hardware stack.[10]
The averageAndroidmobile app implements 15.6 separate SDKs, with gaming apps implementing on average 17.5 different SDKs.[11][12] The most popular SDK categories for Android mobile apps are analytics and advertising.[12]
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 fromGoogle Play or theApp Store.[13] New technologies allowapp developers to control and monitor client SDKs in real time.
Providers of SDKs for specific systems orsubsystems sometimes substitute a more specific term instead ofsoftware. For instance, bothMicrosoft[14] andCitrix[15] provide a driver development kit for developingdevice drivers.
Examples of software development kits for various platforms include: