Software Development Kit (SDK)
A Software Development Kit (SDK) is a software development tool collection that provides software developers with resources to build software applications for specific platforms or frameworks.
- AKA: Devkit, Software Dev Kit.
- Context:
- It can (typically) include libraries for code reuse.
- It can (typically) provide application programming interfaces (API) for system integration.
- It can (typically) contain documentation for developer reference.
- It can (typically) offer sample code for learning purposes.
- It can (typically) include testing tools for application validation.
- It can (typically) incorporate compilers for code compilation.<grok-card data-id="b242a2" data-type="citation_card"></grok-card>
- It can (typically) feature debuggers for error detection.<grok-card data-id="2fe836" data-type="citation_card"></grok-card>
- It can (typically) support integrated development environment (IDE) integration.<grok-card data-id="5486a1" data-type="citation_card"></grok-card>
- ...
- It can (often) support debugging tools for error identification.
- It can (often) include compilers or interpreters for code execution.
- It can (often) provide utility programs for development tasks.<grok-card data-id="c919e7" data-type="citation_card"></grok-card>
- It can (often) support specific programming languages through language bindings.<grok-card data-id="a97f24" data-type="citation_card"></grok-card>
- It can (often) integrate with integrated development environment (IDE)s for streamlined workflows.<grok-card data-id="df89e7" data-type="citation_card"></grok-card>
- It can (often) include tutorials and technical notes for developer guidance.<grok-card data-id="0cddd9" data-type="citation_card"></grok-card>
- It can (often) be platform-specific for targeted hardware platform and operating system combinations.<grok-card data-id="0b57fa" data-type="citation_card"></grok-card>
- It can (often) enable analytics integration and advertising features in mobile apps.<grok-card data-id="e15ecc" data-type="citation_card"></grok-card>
- ...
- It can range from being a Minimal Software Development Kit (SDK) to being a Comprehensive Software Development Kit (SDK), depending on its component inclusion.
- It can range from being a Platform-Specific Software Development Kit (SDK) to being a Cross-Platform Software Development Kit (SDK), depending on its target environment.
- It can range from being an Open-Source Software Development Kit (SDK) to being a Proprietary Software Development Kit (SDK), depending on its licensing model.
- It can range from being a Language-Specific Software Development Kit (SDK) to being a Multi-Language Software Development Kit (SDK), depending on its programming language support.
- ...
- It can support mobile app development for iOS platforms or Android platforms.
- It can enable analytics integration in software applications.<grok-card data-id="137d01" data-type="citation_card"></grok-card>
- It can facilitate advertising feature implementation in mobile apps.<grok-card data-id="4b320a" data-type="citation_card"></grok-card>
- It can provide driver development for hardware devices.
- It can support embedded system development for specialized hardware.
- It can have license compatibility considerations for free software or proprietary software development.<grok-card data-id="988b52" data-type="citation_card"></grok-card>
- It can pose security risks if malicious SDKs are used.<grok-card data-id="54bdb7" data-type="citation_card"></grok-card>
- ...
- Example(s):
- Platform Software Development Kit (SDK)s, such as:
- Android Software Development Kit (SDK) for mobile app development on Android platforms.<grok-card data-id="a3b0c6" data-type="citation_card"></grok-card>
- iOS Software Development Kit (SDK) for mobile app development on iOS platforms.<grok-card data-id="806254" data-type="citation_card"></grok-card>
- Windows Software Development Kit (SDK) for application development on Microsoft Windows.<grok-card data-id="ba4572" data-type="citation_card"></grok-card>
- Tizen Operating System SDK for smart device application development.
- Flutter SDK UI Framework for cross-platform UI development.
- Kotlin Multiplatform for Mobile (KMM) SDK for multiplatform mobile development.
- API Software Development Kit (SDK)s, such as:
- Stripe Software Development Kit (SDK) for payment processing integration.
- Twitter Software Development Kit (SDK) for social media API interaction.
- boto3 Software Development Kit (SDK) for AWS service integration.
- Google Workspace API SDK for productivity tool integration.
- Microsoft Speech API (SAPI) SDK for speech recognition development.
- Analytics Software Development Kit (SDK)s, such as:
- Firebase Analytics Software Development Kit (SDK) for app analytics tracking.<grok-card data-id="99cf7a" data-type="citation_card"></grok-card>
- Mixpanel Software Development Kit (SDK) for user behavior analysis.<grok-card data-id="6a0407" data-type="citation_card"></grok-card>
- GCP Firebase Performance Monitoring SDK for app performance tracking.
- Google Website Analytics Platform SDK for web analytics integration.
- Language-Specific Software Development Kit (SDK)s, such as:
- JavaScript Software Development Kit (SDK) for web application development.
- Swift Software Development Kit (SDK) for iOS app creation.
- Java Development Kit (SDK) for Java platform development.<grok-card data-id="2e43a1" data-type="citation_card"></grok-card>
- Cloud Software Development Kit (SDK)s, such as:
- AWS Software Development Kit (SDK) for cloud computing services.
- Google Cloud Software Development Kit (SDK) for Google Cloud Platform integration.
- GCP Firebase SDK for cloud-based app development.
- Azure OpenAI On Your Data Feature SDK for AI integration with custom data.
- Azure EA for OpenAI Services SDK for enterprise AI services.
- Gaming Software Development Kit (SDK)s, such as:
- AI Software Development Kit (SDK)s, such as:
- Robotics Software Development Kit (SDK)s, such as:
- Driver Software Development Kit (SDK)s, such as:
- .NET Framework SDK for Windows driver development.<grok-card data-id="e35f2b" data-type="citation_card"></grok-card>
- ...
- Platform Software Development Kit (SDK)s, such as:
- Counter-Example(s):
- Application Programming Interface (API)s, which define interaction protocols without providing full development tools.<grok-card data-id="d94816" data-type="citation_card"></grok-card>
- Software Librarys, which are individual code collections without comprehensive documentation and tools.
- Software Frameworks, which provide structural foundations rather than complete development kits.
- Integrated Development Environment (IDE)s, which are development platforms that may use SDKs but focus on code editing.
- No-Code Software Development Platforms, which enable application creation without programming, unlike coding-focused SDKs.
- Software Engines, which are runtime components rather than development tools.
- See: Integrated Development Environment, Software Development Tool, Software Framework, Library (Computing), Device Driver, License Compatibility, Mobile App, Application Programming Interface (API), Compiler, Debugger, Embedded System, Free Software, Proprietary Software, Eclipse IDE, LLVM Compiler System, Apache Beam, NVIDIA CUDA GPU Framework, Google Assistant Service, 3rd-Party Software Framework, Software Application Development Framework.
References
2020
- https://blog.instabug.com/what-is-an-sdk-sdk-vs-library-vs-framework/
- QUOTE: SDKs have a wider scope than libraries do. In fact, all SDKs will contain one or more libraries. An SDK is a collection of libraries, APIs, documentation, utilities, and/or sample code that help you implement certain features without having to do the work from scratch. SDKs vary in scope and function from implementing a feature or set of features, like an analytics SDK for instance, to building whole applications for a specific platform, as is the case with the Android SDK for example.
Going back to our house analogy, if a library is a stove, then an SDK is a whole kitchen. While you can go and buy all your kitchen appliances, cabinets, and counters separately, it will be a lot easier to buy a full kitchen set, complete with built-in appliances and instructions on how to assemble it. SDKs can be limited in scope such as in the case with one room, but they can also have a bigger scope of a collection of rooms or even the whole house.
- QUOTE: SDKs have a wider scope than libraries do. In fact, all SDKs will contain one or more libraries. An SDK is a collection of libraries, APIs, documentation, utilities, and/or sample code that help you implement certain features without having to do the work from scratch. SDKs vary in scope and function from implementing a feature or set of features, like an analytics SDK for instance, to building whole applications for a specific platform, as is the case with the Android SDK for example.
2017
- (Wikipedia, 2017) ⇒ https://en.wikipedia.org/wiki/software_development_kit Retrieved:2017-6-22.
- 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 an iOS/Android app. For example, the development of an Android application requires an SDK with Java, for iOS apps an iOS SDK with Swift, and for MS Windows the .NET Framework SDK with .NET. There are also SDKs that are installed in apps to provide analytics and data about activity. Prominent examples include Google, InMobi 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.
- 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 an iOS/Android app. For example, the development of an Android application requires an SDK with Java, for iOS apps an iOS SDK with Swift, and for MS Windows the .NET Framework SDK with .NET. There are also SDKs that are installed in apps to provide analytics and data about activity. Prominent examples include Google, InMobi and Facebook.
2017b
- (Wikipedia, 2017) ⇒ https://en.wikipedia.org/wiki/software_development_kit#Details Retrieved:2017-6-22.
- 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.
The average Android mobile app implements 15.6 SDKs, with gaming apps implementing an average of 17.5 SDKs. The most popular SDK categories for Android mobile apps are analytics and advertising.
SDKs may be unsafe (as SDKs are implemented within apps, but are running an independent code). Malicious SDKs (with honest intentions or not) may violate users’ data privacy, damage the apps’ performance or even get apps banned from Google Play or iTunes. New technologies allow app developers to control and monitor SDKs in real time.
A software engineer typically receives the SDK from the target system developer. Often the SDK can be downloaded directly via the Internet or via SDKs 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 may still be able to monetize, based on user data taken from the apps, which may serve the interests of big players in the ecosystem, for example the operating system.
A SDK for an operating system add-on (for instance, QuickTime for classic Mac OS) may include the add-on software itself to be used for development purposes, albeit 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 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, 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.
- 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.