SDK — ma’lum platforma, operatsion tizim, xizmat yoki dasturlash muhiti uchun dastur yaratishga mo‘ljallangan vositalar to‘plami. Uning to‘liq nomi Software Development Kit hisoblanadi.
SDK odatda faqat bitta librarydan iborat bo‘lmaydi. U kod yozish, compile qilish, test, debug, package va platformaga ulanish uchun zarur komponentlarni bir paketda taqdim etadi.
SDK tarkibi
SDK quyidagilarni o‘z ichiga olishi mumkin:
- compiler;
- linker;
- debugger;
- header fayllar;
- library;
- API client;
- emulator yoki simulator;
- command-line vositalar;
- documentation;
- code sample;
- project template;
- package manager integratsiyasi;
- signing va deployment vositalari.
Tarkib platformaga qarab farq qiladi.
Platform SDK
Operatsion tizim SDKsi ilovaga platforma APIlaridan foydalanish imkonini beradi.
Masalan:
- window;
- file;
- network;
- notification;
- camera;
- sensor;
- authentication;
- background service;
- package format.
SDK ma’lum OS versiyasi uchun API declaration va build vositalarini beradi.
Cloud SDK
Cloud provider SDKsi service APIlarini dasturlash tilidagi class va methodlar orqali ishlatadi.
Masalan:
storage.upload(file)
queue.send(message)
database.query(...)
SDK ichkarida:
- HTTP request;
- authentication;
- retry;
- serialization;
- pagination;
- endpoint
ni boshqarishi mumkin.
API va SDK farqi
API — dasturiy interfeys va uning qoidalari.
SDK — shu API bilan ishlash va dastur yaratish uchun vositalar to‘plami.
API HTTP endpointlar ko‘rinishida bo‘lishi mumkin. SDK esa ularni qulay methodlar orqali chaqiradi.
SDKsiz ham APIga bevosita HTTP request yuborish mumkin, agar protocol ochiq bo‘lsa.
Library va SDK farqi
Library qayta ishlatiladigan kod to‘plami.
SDK librarylardan tashqari:
- build tool;
- debugger;
- generator;
- documentation;
- emulator;
- deployment tool
berishi mumkin.
Har SDK ichida library bo‘lishi mumkin, ammo har library SDK emas.
SDK versiyasi
SDK versiyasi quyidagilarni belgilaydi:
- mavjud API;
- compiler xatti-harakati;
- target platform;
- build format;
- warning;
- minimum runtime;
- packaging qoidasi.
Yangi SDK bilan build qilingan dastur eski platformada ishlashi uchun target va minimum version alohida belgilanadi.
Target SDK
Ba’zi platformalarda target SDK ilova qaysi platforma xatti-harakatlari uchun tayyorlanganini bildiradi.
Yangi target:
- yangi permission modeli;
- security cheklovi;
- background limit;
- API semantikasi
ni yoqishi mumkin.
Bu faqat compile qilish vositasi versiyasi emas, platforma compatibility shartidir.
Minimum version
Minimum platform versiyasi dastur ishlashi mumkin bo‘lgan eng eski muhitni ko‘rsatadi.
SDK yangi APIlarni bilishi mumkin, ammo kod runtime’da eski versiyada shu API mavjudligini tekshirishi kerak.
Conditional API check ishlatiladi.
Toolchain
SDK ichidagi compiler, linker va boshqa vositalar birgalikda toolchain hosil qiladi.
Toolchain quyidagilarga bog‘liq:
- host operating system;
- target architecture;
- debug yoki release;
- ABI;
- standard library;
- sysroot.
Cross-compilation SDKsi bir platformada boshqa platforma uchun artifact yaratadi.
Sysroot
Sysroot target tizimning header, library va filesystem tuzilmasini build muhiti uchun taqdim etadi.
Cross compiler hostdagi tasodifiy library o‘rniga sysrootdagi target libraryga ulanadi.
Noto‘g‘ri sysroot ABI mos kelmasligiga sabab bo‘ladi.
Emulator va simulator
Mobile yoki embedded SDK ko‘pincha virtual test muhiti beradi.
Emulator target CPU va qurilmalarni taqlid qilishi mumkin.
Simulator esa platforma APIlarini host tizimda model qiladi.
Yakuniy tekshiruv real qurilmada ham bajariladi.
Project template
SDK tayyor loyiha tuzilmasini yaratadi.
- konfiguratsiya;
- entry point;
- dependency;
- test;
- package metadata;
- build script
ni beradi.
Template versiyasi eski bo‘lsa, yangi SDK qoidalariga mos kelmasligi mumkin.
Documentation
SDK hujjati faqat method ro‘yxati emas.
Unda:
- authentication;
- lifecycle;
- limit;
- error;
- thread safety;
- compatibility;
- code sample;
- migration
bo‘lishi kerak.
SDK versiyasiga mos hujjatdan foydalaniladi.
Code generator
API schema asosida client code avtomatik yaratilishi mumkin.
Manbalar:
Generated code qo‘lda tahrir qilinmaydi. Generator va schema versiyasi buildda belgilanadi.
Authentication
Cloud SDK credentialni quyidagi manbalardan olishi mumkin:
Credential source tartibi tushunilmasa, dastur noto‘g‘ri account bilan ishlashi mumkin.
Retry
SDK vaqtinchalik network xatolarida avtomatik retry qilishi mumkin.
- exponential backoff;
- jitter;
- maksimal urinish;
- idempotency
qoidalariga tayanadi.
Yozuv amali idempotent bo‘lmasa, yashirin retry duplicate natija keltirishi mumkin.
SDK o‘rnatilishi
SDK:
orqali o‘rnatilishi mumkin.
Bir kompyuterda bir nechta versiya saqlanishi mumkin. Loyiha aniq versiyani tanlaydi.
CI muhiti
CI’da SDK versiyasi pin qilinadi.
Aks holda “latest” yangilanganda:
mumkin.
Cache SDK va dependency versiyasi bilan bog‘lanadi.
Litsenziya
SDKdan foydalanish va tarqatish shartlari litsenziyada belgilanadi.
Ayrim SDK:
talablariga ega bo‘lishi mumkin.
Diagnostika
SDK bilan bog‘liq muammoda:
- SDK versiyasi;
- target;
- minimum version;
- toolchain path;
- architecture;
- sysroot;
- environment;
- credential;
- generated code;
- runtime mosligi
tekshiriladi.
IDE o‘rnatilgan bo‘lsa ham kerakli platform SDKsi alohida o‘rnatilmagan bo‘lishi mumkin.
Bog‘liq tushunchalar
API, Library, Toolchain, Compiler, Runtime, IDE, Emulator, Sysroot, Target platform, Code generator