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
Application may refer to:
Mathematics and computing
* Application software, computer software designed to help the user to perform specific tasks
** Application layer, an abstraction layer that specifies protocols and interface methods used in a c ...
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
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
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 app on the
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
platform requires a
Java Development Kit
The Java Development Kit (JDK) is a distribution of Java Technology by Oracle Corporation. It implements the Java Language Specification (JLS) and the Java Virtual Machine Specification (JVMS) and provides the Standard Edition (SE) of the Java ...
. For
iOS
iOS (formerly iPhone OS) is a mobile operating system created and developed by Apple Inc. exclusively for its hardware. It is the operating system that powers many of the company's mobile devices, including the iPhone; the term also includes ...
applications (apps) the
iOS SDK
The iOS SDK (iOS Software Development Kit), formerly the iPhone SDK, is a software development kit (SDK) developed by Apple Inc. The kit allows for the development of mobile apps on Apple's iOS and iPadOS operating systems.
The iOS SDK is a fre ...
is required. For
Universal Windows Platform
Universal Windows Platform (UWP) is a computing platform created by Microsoft and first introduced in Windows 10. The purpose of this platform is to help develop universal apps that run on Windows 10, Windows 10 Mobile (discontinued), Windows 1 ...
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
Google LLC () is an American multinational technology company focusing on search engine technology, online advertising, cloud computing, computer software, quantum computing, e-commerce, artificial intelligence, and consumer electronics. ...
,
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
Facebook is an online social media and social networking service owned by American company Meta Platforms. Founded in 2004 by Mark Zuckerberg with fellow Harvard College students and roommates Eduardo Saverin, Andrew McCollum, Dustin M ...
.
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
A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vir ...
of reusable functions used to interface to a particular
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
, or it may be as complex as hardware-specific tools that can communicate with a particular
embedded system
An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is ''embedded'' as ...
.
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
A public utility company (usually just utility) is an organization that maintains the infrastructure for a public service (often also providing a service using that infrastructure). Public utilities are subject to forms of public control and r ...
, often presented in an
integrated development environment
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools a ...
(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
A license (or licence) is an official permission or permit to do, use, or own something (as well as the document of that permission or permit).
A license is granted by a party (licensor) to another party (licensee) as an element of an agreeme ...
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
Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, no ...
development, while a
GPL
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general u ...
-licensed SDK could be incompatible with proprietary software development, for legal reasons.
However, SDKs built under the
GNU Lesser General Public License
The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
(LGPL) are typically usable for proprietary development.
In cases where the underlying technology is new, SDKs may include hardware. For example,
AirTag'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 mobile app
A mobile application or app is a computer program or software application designed to run on a mobile device such as a phone, tablet, or watch. Mobile applications often stand in contrast to desktop applications which are designed to run on d ...
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
Information privacy is the relationship between the collection and dissemination of data, technology, the public expectation of privacy, contextual information norms, and the legal and political issues surrounding them. It is also known as data pr ...
, damage app performance, or even cause apps to be banned from
Google Play
Google Play, also known as the Google Play Store and formerly the Android Market, is a digital distribution service operated and developed by Google. It serves as the official app store for certified devices running on the Android (operating sys ...
or the
App Store
An App Store (or app marketplace) is a type of digital distribution platform for computer software called applications, often in a mobile context. Apps provide a specific set of functions which, by definition, do not include the running of the co ...
.
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
Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washing ...
and
Citrix
Citrix Systems, Inc. is an American multinational cloud computing and virtualization technology company that provides server, application and desktop virtualization, networking, software as a service (SaaS), and cloud computing technologies. C ...
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
AmigaOS is a family of proprietary native operating systems of the Amiga and AmigaOne personal computers. It was developed first by Commodore International and introduced with the launch of the first Amiga, the Amiga 1000, in 1985. Early version ...
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 ...
*
iOS SDK
The iOS SDK (iOS Software Development Kit), formerly the iPhone SDK, is a software development kit (SDK) developed by Apple Inc. The kit allows for the development of mobile apps on Apple's iOS and iPadOS operating systems.
The iOS SDK is a fre ...
*
Java Development Kit
The Java Development Kit (JDK) is a distribution of Java Technology by Oracle Corporation. It implements the Java Language Specification (JLS) and the Java Virtual Machine Specification (JVMS) and provides the Standard Edition (SE) of the Java ...
*
Java Web Services Development Pack
The Java Web Services Development Pack (JWSDP) is a free software development kit (SDK) for developing Web Services, Web applications and Java applications with the newest technologies for Java.
Oracle replaced JWSDP with GlassFish. All component ...
*
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
*
Visage SDK
Visage may refer to:
*A synonym of face
*Visage Mobile, an American software as a service company
*Visage, Georgia, a community in the United States
* ''Visage'' (film), also known as ''Face'', a 2009 French film
* ''Visage'' (video game), a survi ...
*
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
The Xbox Development Kit (XDK) is a software development kit created by Microsoft used to write software for the Xbox gaming system. The XDK includes libraries, a compiler, and various tools used to create software for the Xbox. The XDK has the ...
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
A widget toolkit, widget library, GUI toolkit, or UX library is a library or a collection of libraries containing a set of graphical control elements (called ''widgets'') used to construct the graphical user interface (GUI) of programs.
Most widg ...
(or GUI toolkit)
References
{{DEFAULTSORT:Software Development Kit
Computer libraries
Software development