iOS Deployment Target: bu nima, minimal iOS versiyasi va sozlash

Muallif: IT Sectr Nashr etilgan: 2026-02-08 O'qish vaqti: 14 daq

iOS Deployment Target (shuningdek iOS Target, Deployment Target) — ilova ishga tushirilishi mumkin bo'lgan Apple operatsion tizimining minimal versiyasi. Parametr Xcode loyihasida o'rnatiladi va moslik chegarasini belgilaydi: iOS 16.0 tanlanganda ilova faqat iOS 16.0 va undan yangi qurilmalarga o'rnatiladi. Apple Developer Documentation ga ko'ra, to'g'ri Deployment Target tanlashi ham auditoriya qamroviga, ham yangi Swift va Objective-C framework API lariga kirishga ta'sir qiladi.

Asosiy fikrlar

  • iOS Deployment Target — ilovani o'rnatish va ishga tushirish uchun minimal iOS versiyasi, Android uchun minSdkVersion ning to'liq analogi
  • Xcode-da sozlash: Project → Info → iOS Deployment Target, shuningdek Swift Package Manager va CocoaPods-da
  • @available va #available — joriy Deployment Target dan yuqori API larni xavfsiz chaqirish uchun Swift mexanizmlari
  • Har bir yangi Deployment Target SwiftUI, UIKit, Foundation, AppKit ning yangi API lariga kirish beradi, lekin qurilma qamrovini kamaytiradi
  • App Store ilovalarni qurilmaning iOS versiyasiga qarab filtrlaydi — Deployment Target mos kelmasa ilova ko'rsatilmaydi

iOS Deployment Target nima?

iOS Deployment Target — ilova ishlay oladigan eng erta iOS, iPadOS, tvOS, watchOS yoki visionOS versiyasini ko'rsatadigan Xcode sozlash parametri. Har bir Xcode loyihasi ushbu sozlamani har bir platforma uchun alohida o'z ichiga oladi. Masalan, iOS ilovasi Deployment Target 16.0 ga, watchOS kengaytmasi esa 9.0 ga ega bo'lishi mumkin. Agar foydalanuvchi qurilmasi iOS 15.0 da ishlayotgan bo'lsa, Target 16.0 bo'lgan ilova App Store da ko'rsatilmaydi va to'g'ridan-to'g'ri tarqatish orqali o'rnatilmaydi.

Deployment Target ning ishlash mexanizmi o'rnatish vaqtida OS versiyasini tekshirishga asoslangan. iOS App Store Info.plist dan (MinimumOSVersion kaliti) Deployment Target qiymatini foydalanuvchi qurilmasidagi OS versiyasi bilan solishtiradi. Qurilma versiyasi pastroq bo'lsa — "Yuklab olish" tugmasi bloklanadi va App Store API ushbu qurilma uchun qidiruv natijalarida ilovani qaytarmaydi. Xuddi shunday xatti-harakat TestFlight, ad-hoc va enterprise tarqatish uchun ham amal qiladi.

StatCounter ma'lumotlariga ko'ra, 2025 yil iyun holatiga iOS 16 faol iPhone qurilmalarining taxminan 48% ini, iOS 17 — 35% ini, iOS 18 — 12% ini, eski versiyalar — taxminan 5% ini tashkil qiladi. Deployment Target 16.0 tanlashi qurilmalarning 83% ini qamrab oladi, Target 17.0 — 35% (faqat iOS 17+). Bu raqamlar qaror qabul qilish uchun juda muhim: Target qanchalik baland bo'lsa, auditoriya shunchalik kichik, lekin eng yangi SwiftUI va UIKit API lari shunchalik qulayroq.

Deployment TargetQurilma ulushi (iyun 2025)Mavjud funksiyalar
iOS 15.0~90%Swift Concurrency, async/await, Focus State
iOS 16.0~83%SwiftUI NavigationStack, Layout, Live Activities
iOS 17.0~35%Observation, SwiftData, TipKit, Reactive Editing
iOS 18.0~12%Yangi Apple Intelligence API lari, yaxshilangan SwiftUI

Har bir yangi iOS versiyasi nafaqat foydalanuvchi funksiyalarini, balki dasturchilar uchun API larni ham qo'shadi. Yangi SwiftUI modifierlari, UIKit metodlari, SwiftData va Observation kabi frameworklar faqat ma'lum Deployment Target da mavjud. Dasturchi auditoriya qamrovi va zamonaviy vositalarning mavjudligi o'rtasida muvozanatni saqlashi kerak.

iOS Deployment Target vs minSdkVersion: Android bilan solishtirish

iOS Deployment Target va Androidning minSdkVersion i bir xil funksiyani bajaradi — ilova uchun minimal OS versiyasini belgilaydi. Biroq, amalga oshirish mexanizmlari va qo'shimcha vositalar farqlanadi. Ushbu farqlarni tushunish ikkala platformada ishlaydigan dasturchilar uchun foydalidir va ekotizimlar o'rtasida o'tishda chalkashliklarning oldini olishga yordam beradi.

iOS da minimal versiya Xcode build settings (IPHONEOS_DEPLOYMENT_TARGET) orqali o'rnatiladi va Info.plist da (MinimumOSVersion) saqlanadi. Android da — build.gradle (minSdkVersion) va AndroidManifest.xml (<uses-sdk android:minSdkVersion>) orqali. iOS da targetSdkVersion va compileSdkVersion analoglari yo'q — iOS dagi xatti-harakat o'zgarishlari ilova kompilyatsiya qilingan SDK (Base SDK) va qurilmadagi OS versiyasi tomonidan boshqariladi.

ParametriOSAndroid
Minimal versiyaDeployment Target (IPHONEOS_DEPLOYMENT_TARGET)minSdkVersion
Qayerda ko'rsatiladiXcode Build Settings → Info.plistbuild.gradle → AndroidManifest.xml
Kodda tekshirish@available / #available / if #availableBuild.VERSION.SDK_INT
Maqsadli versiyaBase SDK (har doim eng oxirgi)compileSdkVersion + targetSdkVersion
Do'konda filtrlashApp Store: MinimumOSVersionGoogle Play: minSdkVersion

Asosiy farq — iOS da Base SDK har doim Xcode da o'rnatilgan eng so'nggi versiyadir. Dasturchi Android dagi kabi compileSdkVersion ni tanlay olmaydi — ilova har doim mavjud eng so'nggi SDK ga qarshi kompilyatsiya qilinadi. iOS dagi yangi xatti-harakat o'zgarishlari Deployment Target dan qat'iy nazar, yangi Base SDK bilan kompilyatsiya qilingan barcha ilovalarga qo'llaniladi. Android da targetSdkVersion xatti-harakat o'zgarishlari ustidan nazorat beradi, iOS da bunday bo'linish yo'q.

iOS vs Android da xatti-harakat o'zgarishlari

Android dan farqli o'laroq, bu erda xatti-harakat o'zgarishlari targetSdkVersion ga bog'liq, iOS o'zgarishlarni yangi Xcode va Base SDK versiyasi bilan kompilyatsiya qilingan barcha ilovalarga qo'llaydi. Masalan, iOS 13 Dark Mode ni taqdim etdi — Xcode 11 va iOS 13 SDK bilan qurilgan barcha ilovalar Deployment Target dan qat'iy nazar avtomatik ravishda qorong'u mavzu qo'llab-quvvatlashini oldi. Android da shunga o'xshash o'zgarish (Scoped Storage) faqat targetSdk >= 29 bo'lganda qo'llaniladi. iOS dasturchisi har bir yangi Xcode bilan xatti-harakat o'zgarishlariga tayyor bo'lishi kerak, kechiktirish imkoniyatisiz.

Ikkala platformani bilish minimal versiyani tanlash oqibatlarini bashorat qilish va yangi API lar uchun kod yangilanishlarini rejalashtirish imkonini beradi. IT Sectr da 2017 yildan beri ikkala ekotizimdan foydalanamiz — amaliyot shuni ko'rsatadiki, iOS Deployment Target qamrov va funksionallik muvozanati uchun joriy versiyadan 2–3 versiya past tanlanishi kerak.

Xcode-da Deployment Target ni qanday sozlash

iOS Deployment Target ni sozlash loyihaning bir necha joylarida amalga oshiriladi: asosiy Target, Pods loyihasi (CocoaPods ishlatilsa), Swift Package Manager bog'liqliklari va Widget/Extension targetlari. Agar qiymatlar asosiy ilova va kengaytmalar o'rtasida farq qilsa, App Store barchasining maksimalidan foydalanadi — ya'ni kengaytma asosiy ilovadan pastroq Target ga ega bo'la olmaydi.

Xcode loyiha muharririda sozlash

Xcode loyihasini oching → Target ni tanlang → General varag'i → Minimum iOS Deployment bo'limi. Ochiladigan ro'yxat Xcode da o'rnatilgan barcha mavjud iOS SDK versiyalarini ko'rsatadi. O'zgarish barcha qurish sxemalariga qo'llaniladi. Alternativ — Build Settings varag'i → iOS Deployment Target (IPHONEOS_DEPLOYMENT_TARGET). Agar loyiha bir nechta Target-kengaytmalarini (Widget, Watch) o'z ichiga olsa, har biri o'z Deployment Target ga ega.

Swift Package Manager orqali sozlash

SPM orqali tarqatiladigan kutubxonalar uchun Deployment Target Package.swift da platforms parametrida ko'rsatiladi. platforms: [.iOS(.v16)] bo'lgan kutubxona faqat Deployment Target iOS 16.0+ bo'lgan ilovalar uchun mavjud bo'ladi. Bunday kutubxonani Target 15.0 bo'lgan loyihaga ulashda Xcode mos kelmaslik xatosini beradi. CocoaPods da Deployment Target Podfile da o'rnatiladi: platform :ios, '16.0'.

swift
// Package.swift — SPM kutubxonasi uchun Deployment Target
import PackageDescription

let package = Package(
    name: "MyLibrary",
    platforms: [
        .iOS(.v16),
        .macOS(.v13),
        .watchOS(.v9),
        .tvOS(.v16)
    ],
    products: [
        .library(
            name: "MyLibrary",
            targets: ["MyLibrary"]
        )
    ],
    dependencies: [],
    targets: [
        .target(
            name: "MyLibrary",
            swiftSettings: [
                .enableUpcomingFeature("ConciseMagicFile")
            ]
        )
    ]
)

// Kodda moslikni tekshirish
#if swift(>=5.9)
// Swift 5.9+ funksiyalari (Xcode 15+)
#endif

Misol Package.swift da platformalar iOS 16+, macOS 13+, watchOS 9+, tvOS 16+ o'rnatilgan. Deployment Target iOS 16.0 dan past bo'lgan har qanday loyiha ushbu kutubxonani ulay olmaydi. swiftSettings parametri ma'lum bir Swift versiyasi uchun upcoming features ni o'z ichiga oladi. SPM bog'liqlik qo'shishda platforms mosligini avtomatik tekshiradi.

CocoaPods va Podfile

Podfile platform :ios, '16.0' direktivasidan foydalanadi. pod install dan so'ng CocoaPods har bir pod-kutubxonaning Deployment Target ini tekshiradi: agar kamida bittasi loyihadan balandroq Target ga ega bo'lsa, o'rnatish "The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 17.0, but the range of supported deployment target versions is 16.0 to 17.0" xatosi bilan tugaydi. Yechim — muammoli pod ning Target ini pasaytirish yoki loyihaning Target ini oshirish.

ruby
# Podfile — Deployment Target bilan misol
platform :ios, '16.0'

# Deployment Target haqidagi ogohlantirishlarga e'tibor bermaslik
post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.0'
        end
    end
end

Podfile dagi post_install hook barcha pod-kutubxonalar uchun majburiy ravishda Deployment Target 16.0 ni o'rnatadi. Bu pod lardan biri funksionalligi uchun zarur bo'lganidan balandroq Target ko'rsatganda foydalidir. Buni faqat pod yuqori iOS versiyasidan API ishlatmasligiga ishonganingizda qo'llang.

Swift va Objective-C kodida @available va #available tekshirishlari

@available va #available — Swift va Objective-C ning faqat ma'lum OS versiyalarida mavjud API larni xavfsiz chaqirish uchun direktivalari. Loyihaning Deployment Target i iOS 16.0 bo'lsa va metod iOS 17.0 talab qilsa, to'g'ridan-to'g'ri chaqirish iOS 16.0-16.x qurilmalarida runtime crash ga olib keladi. Mavjudlik tekshirishlari — bir nechta iOS versiyalarini qo'llab-quvvatlash uchun majburiy vositadir.

@available — deklarativ tekshirish

@available direktivi sinflarga, metodlarga yoki butun fayllarga qo'llaniladi. Agar @available(iOS 17.0, *) sinfdan oldin ko'rsatilgan bo'lsa, butun sinf faqat iOS 17.0+ da mavjud. Sinfni iOS 16.0 da chaqirishga urinish runtime xatosiga olib keladi. @available dan OS ning ma'lum versiyasiga xos funksionallikning butun modullarini izolyatsiya qilish uchun foydalaning. Sinf ichidagi metodlar uchun @available alohida funksiyalarni yashirish imkonini beradi.

#available — shartli bajarish

#available direktivi (if #available) OS versiyasini runtime da tekshiradi va kodni faqat mos kelganda bajaradi. Funksiyalar ichida yangi va eski implementatsiyalar o'rtasida tanlash uchun ishlatiladi. Objective-C da analog — if ichida @available(iOS 17.0, *). Murakkabroq tekshirishlar uchun versiya komponentlarini (major, minor, patch) solishtirish uchun ProcessInfo.processInfo.isOperatingSystemAtLeast dan foydalaning.

swift
import UIKit
import SwiftUI

// 1. @available — butun sinf faqat iOS 17+ uchun
@available(iOS 17.0, *)
class ObservationViewModel: ObservableObject {
    @Published var name: String = "User"

    // Observation framework dan foydalanadi — faqat iOS 17+ mavjud
    func updateWithObservation() {
        let newName = "Updated via Observation"
        name = newName
    }
}

// 2. #available — funksiya ichida shartli chaqiruv
func configureLiveActivity() {
    if #available(iOS 16.1, *) {
        // Live Activities API — iOS 16.1 dan mavjud
        let activity = Activity<MyAttributes>(
            attributes: MyAttributes(name: "Live"),
            contentState: MyContentState(value: 42)
        )
        Task {
            await activity.activate()
        }
    } else {
        // Fallback: push bildirishnoma yoki hech narsa
        print("Live Activities mavjud emas")
    }
}

// 3. ProcessInfo — aniq versiya tekshiruvi
func checkOSVersion() {
    let osVersion = ProcessInfo.processInfo.operatingSystemVersion
    print("iOS \(osVersion.majorVersion).\(osVersion.minorVersion).\(osVersion.patchVersion)")

    // Komponentlarni solishtirish
    if osVersion.majorVersion >= 17 {
        print("iOS 17+ aniqlandi")
    }
}

// 4. Objective-C @available
// Objective-C da @available ishlatiladi:
// if (@available(iOS 17.0, *)) { }

// 5. @available unavailable argumenti bilan
@available(*, unavailable, message: "Use configureWithSwiftUI instead")
func legacyConfigureMethod() { }

ObservationViewModel sinfi iOS 17 funksionalligini izolyatsiya qilish uchun @available dan foydalanadi. configureLiveActivity funksiyasi Live Activities (iOS 16.1+) tekshirish uchun #available dan ishlatadi, fallback implementatsiyasi bilan. ProcessInfo aniq OS versiyasini tekshiradi. @available(*, unavailable) metodni barcha versiyalarda mavjud emas deb belgilaydi — yangi API ga migratsiya uchun. Ushbu tekshirishlarsiz Deployment Target 16.0 bo'lgan ilova iOS 17 API ni chaqirganda iOS 16.0 qurilmalarida ishdan chiqadi.

Objective-C va @available

Objective-C Swift #available bilan bir xil semantikada @available(iOS 17.0, *) dan foydalanadi. Farq: Objective-C runtime da tekshiradi, Swift #available — ham runtime, lekin tarmoqlanishni optimallashtirish uchun kompilyatorga maslahatlar bilan. Swift bilan o'zaro aloqada bo'lgan Objective-C kodida mavjudlik tekshirishlari Objective-C tomonida kerak — Swift-bridging avtomatik tekshirishlarni qo'shmaydi.

Loyiha uchun to'g'ri Deployment Target ni qanday tanlash

iOS Deployment Target ni tanlash — uch jihatga ta'sir qiluvchi strategik qaror: auditoriya qamrovi, mavjud API lar va kodni qo'llab-quvvatlash murakkabligi. Yagona to'g'ri qiymat mavjud emas — tanlov ilovaning maqsadli auditoriyasiga, minimal talab qilinadigan funksiyalarga va jamoaning orqaga moslikni qo'llab-quvvatlash resurslariga bog'liq.

Birinchi omil — iOS versiyalaridan foydalanish statistikasi. Apple WWDC va Apple Developer Dashboard da iOS o'rnatish ma'lumotlarini e'lon qiladi. 2025 yil iyun holatiga taqsimot: iOS 15 — ~7%, iOS 16 — ~48%, iOS 17 — ~35%, iOS 18 — ~10%. Target 16.0 tanlashi 83% qamrov beradi, Target 17.0 — 35%. Ommaviy ilova uchun (ijtimoiy tarmoqlar, messenjerlar, e-commerce) Target 16.0 tavsiya etiladi. Maxsus API talablari bo'lgan B2B ilovasi uchun — Target 17.0.

Ikkinchi omil — talab qilinadigan API lar. Agar ilovaning asosiy funksiyasi SwiftData (iOS 17+), Observation (iOS 17+) yoki Live Activities (iOS 16.1+) talab qilsa, Target talab qilinadigan versiyadan past bo'lmasligi kerak. Loyihalash bosqichida talab qilinadigan API larni tahlil qilish rivojlanishning yarmida yuqori Target kerak bo'lib qolish holatining oldini oladi. Availability Checks dan zaxira variant sifatida foydalaning, lekin asosiy reja sifatida emas.

Uchinchi omil — test uchun resurslar. Eski iOS versiyalarini qo'llab-quvvatlash simulyatorlarda va ushbu versiyalarga ega real qurilmalarda sinovdan o'tkazishni talab qiladi. iOS 15 iPhone 6s/7 da, iOS 16 — iPhone 8/X da, iOS 17 — iPhone XS/XR da sinovdan o'tkaziladi. Har bir qo'shimcha backward compatibility versiyasi QA vaqtini oshiradi. Agar jamoa kichik bo'lsa, joriy versiyadan 2–3 versiya past Target (16.0) tanlash oqilona — qamrov va mehnat xarajatlari o'rtasidagi muvozanat.

Ilova turiTavsiya etilgan TargetQamrovAsoslash
Ommaviy (ijtimoiy tarmoqlar, marketpleys)iOS 16.0~83%Maksimal auditoriya
Enterprise / B2BiOS 16.0~83%Korporativ qurilmalar sekin yangilanadi
Startap / MVPiOS 17.0~35%Yangi API larda tez rivojlanish
O'yinlar (Metal 3+)iOS 17.0~35%Yangi grafik API larni talab qiladi
Kutubxona/SDKiOS 15.0~90%Mijozlar uchun maksimal moslik

Kutubxonalar va SDK lar imkon qadar past Deployment Target ga (15.0 yoki hatto 14.0) ega bo'lishi kerak — kutubxona iste'molchilari sizdan yuqoriroq Target ga ega bo'lishi mumkin. Agar kutubxona iOS 17.0 talab qilsa, loyihalarning yarmi uni ulay olmaydi. Ilovalar uchun esa, aksincha, yangi API larga kirish uchun yuqoriroq Target ni ko'tara olasiz.

Oshirilgandan keyin Deployment Target ni qanday pasaytirish

iOS Deployment Target ni pasaytirish — auditoriyani kengaytirish yoki eski loyihalar bilan moslikka ega kutubxonani nashr etish zarurati tug'ilganda yuzaga keladigan vazifa. Oshirishdan farqli o'laroq, pasaytirish kod bilan faol ishlashni talab qiladi: yangi (past) Target da mavjud bo'lmagan barcha to'g'ridan-to'g'ri API chaqiruvlarini #available tekshirishlari va fallback implementatsiyalari bilan almashtirish kerak.

Birinchi qadam — API inventarizatsiyasi. Xcode Target pasaytirilganda kompilyatsiya xatosini bermaydi — faqat sariq ogohlantirishlar bilan ogohlantiradi. Yangi Target dan yuqori bo'lgan N bilan @available(iOS N+, *) bilan belgilangan barcha metod va sinflarni topishingiz kerak. Loyiha bo'ylab qidiruvdan (Cmd+Shift+F) "available(iOS" namunasi bilan foydalaning. Har bir bunday chaqiruv — refaktoring uchun nomzod.

Ikkinchi qadam — #available tekshirishlari bilan almashtirish. Yuqori versiyadan har bir API chaqiruvi if #available(iOS N+, *) { } else { } bilan o'raladi. Butun sinflar uchun #if os(iOS) bilan @available tip darajasida foydalaning. Agar API mantiqiy fallback ga ega bo'lmasa (masalan, Live Activities), funksionallik foydalanuvchiga bildirishnoma bilan eski versiyalarda o'chiriladi.

swift
import UIKit
import SwiftUI

// Deployment Target ni 17.0 dan 16.0 ga pasaytirish

// OLDIN (@available iOS 17.0):
@available(iOS 17.0, *)
func setupObservation() {
    // Observation framework — faqat iOS 17+
    let model = ObservationViewModel()
    // ...
}

// KEYIN (#available tekshiruvi):
func setupObservationCompatible() {
    if #available(iOS 17.0, *) {
        // iOS 17+: Observation framework
        let model = ObservationViewModel()
        // ...
    } else {
        // iOS 16.x: @Published bilan ObservableObject
        let model = LegacyObservableViewModel()
        // ...
    }
}

// UIKit iOS 17+ API uchun:
@available(iOS 17.0, *)
class ModernViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // UIKit TraitChanges (iOS 17+) dan foydalanadi
        registerForTraitChanges([UITraitVerticalSizeClass.self]) { _, _ in }
    }
}

// iOS 16 uchun Fallback:
class LegacyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // registerForTraitChanges yo'q — traitCollectionDidChange dan foydalanamiz
    }

    override func traitCollectionDidChange(_: UITraitCollection?) {
        super.traitCollectionDidChange(nil)
        // iOS 16 uchun traits o'zgarishlarini qayta ishlash
    }
}

// iOS versiyasiga qarab implementatsiyani tanlash uchun fabrika
func makeViewController() -> UIViewController {
    if #available(iOS 17.0, *) {
        return ModernViewController()
    } else {
        return LegacyViewController()
    }
}

Kod Target ni iOS 17.0 dan 16.0 ga pasaytirishni namoyish etadi. setupObservation funksiyasi #available tekshirishi bilan setupObservationCompatible ga almashtirilgan. ViewController Modern (iOS 17+) va Legacy (iOS 16) ga bo'lingan, makeViewController fabrikasi OS versiyasiga qarab implementatsiyani tanlaydi. Bunday arxitektura butun kod bazasini takrorlamasdan ikkita Deployment Target ni saqlashga imkon beradi — faqat versiyalashtirilgan modullar.

Xcode ogohlantirishlari va ularni bartaraf etish

Deployment Target pasaytirilgandan so'ng Xcode yangi Target da mavjud bo'lmagan barcha API chaqiruvlarini sariq rangda belgilaydi. "In iOS 16.0 and later" ogohlantirishi metod yuqori versiyani talab qilishini anglatadi. Yechimlar: @available yoki if #available qo'shish (tavsiya etiladi), bosqichma-bosqich migratsiya uchun @available(*, deprecated) bilan bostirish yoki chaqiruvni olib tashlash. Loyihada "Treat Warnings as Errors" sozlamasi bu ogohlantirishlarni kompilyatsiya xatolariga aylantiradi — nazorat qilish uchun ushbu parametrni yoqing.

Ko'p beriladigan savollar

iOS Deployment Target nima?

iOS Deployment Target — ilova ishlay oladigan minimal iOS versiyasi. Xcode Project → Info → iOS Deployment Target da ko'rsatiladi. Target 16.0 bo'lgan ilova iOS 15.0 va undan pastiga o'rnatilmaydi. App Store ilovalarni ushbu parametr bo'yicha filtrlaydi — qo'llab-quvvatlanmaydigan versiyaga ega foydalanuvchilar ilovani ko'rmaydi. Android dagi analog — minSdkVersion.

iOS Deployment Target minSdkVersion dan qanday farq qiladi?

Ikkala parametr ilovani o'rnatish uchun minimal OS versiyasini belgilaydi. iOS Deployment Target Info.plist da (MinimumOSVersion) saqlanadi, minSdkVersion — AndroidManifest.xml da. iOS da targetSdkVersion va compileSdkVersion analoglari yo'q — barcha xatti-harakat o'zgarishlari yangi Base SDK bilan kompilyatsiya paytida qo'llaniladi. Android da xatti-harakat o'zgarishlari targetSdkVersion orqali boshqariladi. Kodda tekshirish: Swift da @available vs Android da Build.VERSION.SDK_INT.

2026 yilda qaysi iOS Deployment Target ni tanlash kerak?

Ommaviy ilovalar uchun iOS 16.0 (qurilmalarning 83%) va startaplar va SwiftUI Observation/SwiftData loyihalari uchun iOS 17.0 (qurilmalarning 35%) tavsiya etiladi. iOS 16.0 iPhone 8 va undan yangi qurilmalarda qo'llab-quvvatlanadi, SwiftUI Layout, NavigationStack, Live Activities ni o'z ichiga oladi. iOS 17.0 Observation, SwiftData, TipKit beradi. Kutubxona va SDK lar uchun — maksimal moslik uchun iOS 15.0.

Swift kodida iOS versiyasini qanday tekshirish mumkin?

Swift da funksiyalar ichida shartli bajarish uchun #available(iOS 17.0, *) yoki sinf/metod darajasida deklarativ tekshirish uchun @available(iOS 17.0, *) dan foydalaning. Aniq versiya uchun — OperatingSystemVersion qaytaradigan ProcessInfo.processInfo.operatingSystemVersion. Objective-C da if ichida @available(iOS 17.0, *) dan foydalaning. Tekshirishlarsiz Deployment Target dan yuqori API chaqiruvi runtime crash ga olib keladi.

Deployment Target ni nashrdan keyin pasaytirish mumkinmi?

iOS Deployment Target ni pasaytirish mumkin, lekin bu yuqori versiyalardan barcha to'g'ridan-to'g'ri API chaqiruvlarini fallback implementatsiyalari bilan #available tekshirishlariga almashtirishni talab qiladi. Xcode sariq ogohlantirishlar bilan ogohlantiradi, lekin xato bermaydi. Mantiqiy fallback ga ega bo'lmagan API lar (Live Activities, SwiftData) eski versiyalarda o'chiriladi. Murakkab migratsiyani oldini olish uchun joriy versiyadan 2 versiya past Target bilan boshlash tavsiya etiladi.

Xulosa

  • iOS Deployment Target — ilovani ishga tushirish uchun minimal OS versiyasi, Android dagi minSdkVersion analogi
  • Xcode Build Settings da (IPHONEOS_DEPLOYMENT_TARGET) sozlanadi va Info.plist da (MinimumOSVersion) saqlanadi
  • @available va #available — Deployment Target dan yuqori API larni xavfsiz chaqirish uchun asosiy Swift mexanizmlari
  • Target tanlashi qurilma qamroviga ta'sir qiladi: iOS 16.0 — 83%, iOS 17.0 — 35%, iOS 15.0 — 90%
  • Ommaviy ilovalar uchun iOS 16.0, kutubxonalar uchun iOS 15.0, SwiftData startaplari uchun iOS 17.0 tavsiya etiladi
  • Target ni pasaytirish yuqori versiyalarning barcha API chaqiruvlarini fallback bilan #available tekshirishlariga refaktoring qilishni talab qiladi
  • iOS da Base SDK har doim eng oxirgi — xatti-harakat o'zgarishlari Android targetSdkVersion dan farqli o'laroq barcha ilovalarga qo'llaniladi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing