A software development kit (SDK) is a collection of
software development
Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development invol ...
tools in one installable package. They facilitate the creation of
applications by having a compiler, debugger and sometimes a
software framework
In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard ...
. They are normally specific to a hardware platform and
operating system combination.
To create applications with advanced functionalities such as advertisements,
push notifications,
etc; most application software developers use specific software development kits.
Some SDKs are required for developing a platform-specific app. For example, the development of an
Android
Android may refer to:
Science and technology
* Android (robot), a humanoid robot or synthetic organism designed to imitate a human
* Android (operating system), Google's mobile operating system
** Bugdroid, a Google mascot sometimes referred to ...
app on the
Java platform requires a
Java Development Kit. For
iOS applications (apps) the
iOS SDK is required. For
Universal Windows Platform the
.NET Framework SDK
Microsoft Windows SDK, and its predecessors Platform SDK, and .NET Framework SDK, are software development kits (SDKs) from Microsoft that contain documentation, header files, libraries, samples and tools required to develop applications for Mic ...
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
Smaato is a digital ad tech platform and ad server. Smaato's self-serve omnichannel monetization solution gives publishers the ability to manage their entire ad stack in one place. Ad monetization technology lets publishers keep their content free ...
,
InMobi
InMobi is an Indian multinational mobile advertising technology company, based in Bengaluru. Its mobile-first platform allows brands, developers and publishers to engage consumers through contextual mobile advertising.
The company was found ...
,
and
Facebook.
Details
An SDK can take the form of
application programming interface
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how t ...
s (APIs)
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.
Common
tools
A tool is an object that can extend an individual's ability to modify features of the surrounding environment or help them accomplish a particular task. Although many animals use simple tools, only human beings, whose use of stone tools dates ba ...
include debugging facilities and other
utilities, often presented in an
integrated development environment (IDE).
SDKs may include sample software and/or technical notes along with documentation, and tutorials 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, for legal reasons.
However, SDKs built under the
GNU Lesser General Public License (LGPL) are typically usable for proprietary development.
In cases where the underlying technology is new, SDKs may include hardware. For example,
AirTag
AirTag is a tracking device developed by Apple. AirTag is designed to act as a key finder, which helps people find personal objects (e.g. keys, bags, apparel, small electronic devices, vehicles). To locate lost items, AirTags use Apple's crowds ...
's 2021
NFC
NFC may refer to:
Psychology
* Need for cognition, in psychology
* Need for closure, social psychological term
Sports
* NFC Championship Game, the National Football Conference Championship Game
* NCAA Football Championship (Philippines)
* Nati ...
SDK included both the paying and the reading halves of the necessary hardware stack.
The average
Android
Android may refer to:
Science and technology
* Android (robot), a humanoid robot or synthetic organism designed to imitate a human
* Android (operating system), Google's mobile operating system
** Bugdroid, a Google mascot sometimes referred to ...
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, 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.
New technologies allow
app developers to control and monitor client SDKs in real time.
Providers of SDKs for specific systems or
subsystems
A system is a group of interacting or interrelated elements that act according to a set of rules to form a unified whole. A system, surrounded and influenced by its environment, is described by its boundaries, structure and purpose and expressed ...
sometimes substitute a more specific term instead of ''software''. For instance, both
Microsoft and
Citrix provide a driver development kit (DDK) for developing
device driver
In computing, a device driver is a computer program that operates or controls a particular type of device that is attached to a computer or automaton. A driver provides a software interface to hardware devices, enabling operating systems and ot ...
s.
Examples
Examples of software development kits for various platforms include:
*
AmigaOS NDK
*
Android NDK
Code written in C/C++ can be compiled to ARM, or x86 native code (or their 64-bit variants) using the Android Native Development Kit (NDK). The NDK uses the Clang compiler to compile C/C++. GCC was included until NDK r17, but removed in r18 in 2 ...
*
iOS SDK
*
Java Development Kit
*
Java Web Services Development Pack
*
Microsoft Windows SDK
Microsoft Windows SDK, and its predecessors Platform SDK, and .NET Framework SDK, are software development kits (SDKs) from Microsoft that contain documentation, header files, libraries, samples and tools required to develop applications for Micr ...
*
VaxTele SIP Server SDK VaxTele SIP Server SDK (Software Development Kit) is a complete development toolkit, which allows software vendors and Internet telephony service providers (ITSP) to develop SIP Server and (SIP) Session Initiation Protocol based VoIP systems for Mic ...
*
Visage SDK
*
Vuforia Augmented Reality SDK
Vuforia is an augmented reality software development kit (SDK) for mobile devices that enables the creation of augmented reality applications. It uses computer vision technology to recognize and track planar images and 3D objects in real time. This ...
*
Windows App SDK
Windows App SDK (formerly known as Project Reunion) is a software development kit (SDK) from Microsoft that targets the development of native desktop applications on Windows 11 and Windows 10 back to version 1809.
Windows App SDK does not replac ...
*
Xbox Development Kit
See also
*
Application programming interface
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how t ...
*
Game development kit
Game development kits (GDK) are specialized computer hardware, hardware and software used to create commercial video games for game consoles. They may be partnered with game development tools, special game engine licenses, and other middleware to a ...
*
Widget toolkit (or GUI toolkit)
References
{{DEFAULTSORT:Software Development Kit
Computer libraries
Software development