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 create applications you have to download this software development kit. For example, if you want to create an Android app you require an SDK with java programming, for iOS apps you require an iOS SDK with swift language, and to develop MS Windows apps you require the .net language. There are also SDKs that are installed in apps to provide analytics and data about activity. Prominent examples include Google and Facebook.
It may be something as simple as the implementation of one or more application programming interfaces (APIs) in the form of some 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 may have attached licenses that make them unsuitable for building software intended to be developed under an incompatible license. For example, a proprietary SDK will probably be 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.
A software engineer typically receives the SDK from the target system developer. Often the SDK can be downloaded directly via the Internet. Many SDKs are provided for free to encourage developers to use the system or language. Sometimes this is used as a marketing tool.
An SDK for an operating system add-on (for instance, QuickTime for Mac OS) may include the add-on software itself, to be used for development purposes if not necessarily for redistribution together with the developed product. An interesting situation arises here 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 use aGestalt-style run-time environment query to determine whether the add-on is present, and ones where the application will simply fail to start. In other words, it is possible to build a single binary that will run on configurations with and without the add-on present, albeit operating with reduced functionality in the latter situation.
Providers of SDKs for specific systems or subsystems may sometimes substitute a more specific term instead of software. For instance, both Microsoft and Apple provide driver development kits (DDK) for developing device drivers.