Software development kit
This article needs additional citations for verification. (February 2017) (Learn how and when to remove this template message)
A software development kit (SDK or devkit) is typically a set of software development tools that allows the creation of applications for a certain software package, software framework, hardware platform, computer system, video game console, operating system, or similar development platform. To enrich applications with advanced functionalities, advertisements, push notifications and more, most app developers implement specific software development kits. Some SDKs are critical for developing a platform-specific app. For example, the development of an Android app on Java platform requires a Java Development Kit, for iOS apps the iOS SDK, and for Universal Windows Platform the .NET Framework SDK. There are also SDKs that are installed in apps to provide analytics and data about activity. Prominent examples include Google, InMobi and Facebook.
It could be something as simple as the implementation of one or more application programming interfaces (APIs) in the form of on-device libraries to interface to a particular programming language, or to include sophisticated hardware that can communicate with a particular embedded system. Common tools include debugging facilities and other utilities, often presented in an integrated development environment (IDE). SDKs also frequently include sample code and supporting technical notes or other supporting documentation to help clarify points made by the primary reference material.
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 GPL-licensed SDK could be incompatible with proprietary software development. LGPL SDKs are typically safe for proprietary development.
The average Android mobile app implements 15.6 separate SDKs, with gaming apps implementing on average 17.5 different SDKs. The most popular SDK categories for Android mobile apps are analytics and advertising.
SDKs can be unsafe (because they are implemented within apps, but 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 iTunes. New technologies allow app developers to control and monitor client SDKs in real time.
Developers typically get the SDK from the target system developer. Often the SDK can be downloaded directly via the Internet or via SDK marketplaces. Many SDKs are provided for free to encourage developers to use the system or language. Sometimes this is used as a marketing tool. Freely offered SDKs are often able to monetize, based on user data taken from the apps, which serves the interests of larger players in the ecosystem.
An SDK for an operating system add-on (for instance, QuickTime for classic Mac OS) might include the add-on software itself to be used for development purposes, although not necessarily for redistribution together with the developed product. Between platforms where it is possible to develop applications that can at least start up on a system configuration without the add-on installed, and that use a Gestalt-style run-time environment query to determine whether the add-on is present, and ones where the application will simply fail to start, it is possible to build a single binary that will run on configurations with and without the add-on present, although operating with reduced functionality in the latter situation.
Providers of SDKs for specific systems or subsystems sometimes substitute a more specific term instead of software. For instance, both Microsoft and Apple provide driver development kits (DDK) for developing device drivers.