App Thinning, istifadəçinin cihazı üçün lazım olan resursların yalnız çatdırılması hesabına quraşdırılan tətbiqin ölçüsünü azaldan Apple texnologiyasıdır. Apple Developer Documentation, 2026-ya görə, App Thinning üç mexanizmi əhatə edir: Slicing, Bitcode və On-Demand Resources. Hər bir komponenti və onun paylama ölçüsünə təsirini nəzərdən keçirək.
Əsas Məqamlar
App Thinning, Apple tərəfindən iOS 9 ilə birlikdə tətbiq edilən (sentyabr 2015) iOS tətbiqlərinin paylanmasının kompleks optimallaşdırma texnologiyasıdır. App Thinning-in məqsədi, mənbə kodu və funksionallığı dəyişdirmədən istifadəçinin cihazına yüklədiyi tətbiqin ölçüsünü minimallaşdırmaqdır. Texnologiya üç səviyyədə işləyir: qurma mərhələsində (kompilasiya), App Store tərəfində (çatdırılma) və cihazda (resursların idarə edilməsi).
App Thinning yaranmazdan əvvəl tərtibatçılar ikili fayla bütün mümkün cihazlar üçün resursları daxil edirdilər — @2x və @3x şəkilləri, 32-bit və 64-bit kodu, müxtəlif GPU-lar üçün Metal şeyderləri. Bu, tətbiq ölçüsünün şişməsinə səbəb olurdu: Retina HD ekranlı iPhone 6 Plus istifadəçisi heç vaxt istifadə olunmayan iPad Pro üçün vektor resursları alırdı. Apple bu problemi, qurma işinin bir hissəsini App Store serverlərinə köçürməklə həll etdi.
Apple-ın araşdırmalarına görə (WWDC 2015, Sessiya 412), çoxlu arxitektura və həlli dəstəkləyən tipik tətbiq App Thinning tətbiq edildikdən sonra 30-50% azala bilər. Çoxsaylı yüksək detallı teksturaları olan oyunlar üçün qazanc 70-80%-ə çata bilər. Apple texnologiyanı təkmilləşdirməyə davam edir: iOS 17-də ARM64e üçün optimallaşdırma əlavə edildi və Swift Package Manager istifadə edən tətbiqlər üçün On-Demand Resources ilə iş təkmilləşdirildi.
Mobil tətbiqlərin ölçüsü daim artır. Sensor Tower (2025) məlumatlarına görə, iOS tətbiqinin orta ölçüsü son 5 ildə 45% artıb. Məhdud tarif planı və ya yavaş interneti olan istifadəçilər üçün hər meqabayt əhəmiyyətlidir. App Thinning bu problemi tərtibatçının iştirakı olmadan həll edir — sadəcə layihə parametrlərində dəstəyi aktivləşdirmək və build-i App Store Connect-ə yükləmək kifayətdir.
App Thinning prosesi tətbiq arxivinin App Store Connect-ə yüklənməsindən sonra başlayır. App Store ikili faylı təhlil edir və onu arxitekturalara (armv7, arm64, arm64e), ekran həllərinə (iPhone, iPad) və iOS versiyalarına görə seqmentlərə ayırır. Hər kombinasiya üçün ayrıca variant (variant) yaradılır. İstifadəçi “Yüklə” düyməsini kliklədikdə, App Store cihaz modelini, iOS versiyasını və qoşulma növünü (Wi-Fi / mobil şəbəkə) müəyyən edir və yalnız müvafiq variantı göndərir.
İstifadəçi üçün proses şəffafdır — “yüngül versiya” seçimi və ya parametrlərlə dialoq yoxdur. App Store yükləmə sorğusu zamanı serverə ötürülən cihaz metadata məlumatları əsasında ən uyğun variantı avtomatik seçir. Cihaz Wi-Fi istifadə edirsə, App Store daha yüksək keyfiyyətli resursları olan variantı göndərə bilər (məsələn, iPhone 16 Pro üçün ProRes video). Mobil şəbəkə ilə yükləmə zamanı minimum mümkün dəst istifadə olunur.
İkinci optimallaşdırma səviyyəsi — Bitcode. ENABLE_BITCODE opsiyası aktiv olduqda Xcode tətbiqi maşın koduna deyil, aralıq LLVM təsvirinə kompil edir. App Store Bitcode-i istifadəçinin prosessor arxitekturası üçün yenidən kompil edir ki, bu da Apple-a tərtibatçı tərəfindən tətbiq yenilənmədən yeni nəsil çiplər (A17, M4) üçün kompilator optimallaşdırmalarını tətbiq etməyə imkan verir. Bitcode watchOS və tvOS üçün məcburidir, lakin iOS üçün isteğə bağlıdır.
App Thinning üç müstəqil mexanizmdən ibarətdir, hər biri optimallaşdırmanın öz aspektinə cavabdehdir. Slicing (kəsmə) ikili faylı arxitektura və ekran həllinə görə variantlara ayırır. Tərtibatçı Slicing-i Asset Catalogs vasitəsilə konfiqurasiya edir — Xcode avtomatik olaraq kəsimə yalnız hədəf cihaza uyğun resursları daxil edir. Məsələn, iPhone SE (üçüncü nəsil) yalnız @2x şəkilləri və arm64 kodunu alacaq, iPad Pro M4 isə @3x şəkilləri və arm64e kodunu alacaq.
Bitcode LLVM IR (Intermediate Representation) — maşından asılı olmayan proqram təsviridir. Bitcode aktiv olduqda Xcode yekun maşın kodunu yaratmır, aralıq təsviri saxlayır. App Store Connect build yüklənərkən Bitcode-i alır və onu dəstəklənən bütün cihazların arxitekturaları üçün yenidən kompil edir. Bitcode Apple-a tərtibatçının kompilasiya mərhələsində əldə olunmayan optimallaşdırmaları tətbiq etməyə imkan verir — məsələn, M4 çiplərində yeni prosessor təlimatlarından (SME, SVE) istifadə.
On-Demand Resources (ODR) — üçüncü mexanizm, istifadədən sonra tətbiq resurslarını boşaltmağa imkan verir. Tərtibatçı resursları (oyun səviyyələri, onboarding şəkilləri, video) ODR teqləri ilə işarələyir. iOS işarələnmiş resursları tələb əsasında fon yükləyir və yaddaş çatışmazlığı və ya istifadədən sonra onları boşaldır. ODR xüsusilə çoxlu məzmunu olan oyunlar üçün effektivdir — ilk səviyyələri tətbiqin tərkibində çatdırmaq, qalanlarını isə keçid irəlilədikcə yükləmək olar.
App Thinning mexanizmlərinin seçimi tətbiqin növündən və hədəf auditoriyasından asılıdır. Slicing həmişə aktivləşdirilməsi tövsiyə olunur — Asset Catalogs-un düzgün təşkilindən başqa tərtibatçıdan əlavə tədbir tələb etmir və sabit 20-30% ölçü azalması verir. Bitcode, tətbiq xüsusi Metal şeyderlərindən istifadə edərsə və ya yenidən qurmadan Apple-ın yeni arxitekturalarını dəstəkləməyi planlaşdırarsa aktivləşdirilməlidir. ODR çoxlu məzmunu olan tətbiqlər üçün əsaslandırılmışdır — oyunlar, foto redaktorları, striminq tətbiqləri.
Tipik biznes tətbiqi üçün (məlumat lentləri, formalar, REST API) Slicing və onboarding şəkilləri üçün minimal ODR konfiqurasiyası kifayətdir. Oyunlar 3D qrafika ilə hər üç mexanizmdən faydalanır: Slicing lazımsız şeyderləri silir, Bitcode renderinqi GPU altında optimallaşdırır, ODR isə tamamlanmış səviyyələri boşaldır. Apple-a görə (WWDC 2024), hər üç mexanizmin kombinasiyası universal ikili faylla müqayisədə ilkin quraşdırma ölçüsünü orta hesabla 45-55% azaldır.
| Mexanizm | Nə edir | Harada işləyir | Tərtibatçı tədbiri tələb edir |
|---|---|---|---|
| Slicing | Digər cihazlar üçün resursları silir | App Store + cihaz | Asset Catalogs |
| Bitcode | Arxitektura üçün yenidən kompilasiya | App Store | ENABLE_BITCODE=YES |
| ODR | Tələb əsasında resursların yüklənməsi | Cihaz | Layihədə ODR teqləri |
Xcode layihəsində App Thinning-i aktivləşdirmək üçün bir neçə addım yerinə yetirilməlidir. Slicing qurma parametrlərində App Thinning vasitəsilə konfiqurasiya edilir: Build Settings → App Thinning. Üç dəyər mövcuddur: None (optimallaşdırmasız), Automatic (standart avtomatik konfiqurasiya) və Manual (test üçün konkret variantların seçimi ilə). Apple əksər layihələr üçün Automatic-i tövsiyə edir.
Asset Catalogs üçün resursları düzgün təşkil etmək vacibdir: şəkillər universal kataloqda eni/hündürlüyü göstərilməklə yerləşdirilir, Xcode isə avtomatik olaraq @1x, @2x və @3x variantlarını yaradır. Xcode qurma zamanı layihədə istifadə olunan həlləri daxil edir. Metal şeyderləri hər GPU ailəsi üçün ayrıca kompil edilir — Apple GPU, PowerVR, Mali, bu da Asset Catalogs vasitəsilə idarə olunur.
Bitcode Build Settings-də ENABLE_BITCODE = YES bayrağı ilə aktivləşdirilir. iOS üçün bu bayraq isteğə bağlıdır (Xcode 14-dən standart olaraq söndürülüb), lakin watchOS və tvOS üçün məcburidir. Üçüncü tərəf kitabxanalarından istifadə edən layihədə Bitcode aktivləşdirilərkən, onların hamısı da Bitcode ilə qurulmalıdır, əks halda qurma xəta ilə bitəcək. Bitcode kompilasiya müddətini 20-30% artırır, lakin gələcək arxitekturalarla tam uyğunluğu təmin edir.
App Store Connect-ə yüklədikdən sonra kəsiklərin ölçülərini Activity → Build Metric bölməsində yoxlamaq olar. App Store Connect müxtəlif cihazlar üçün Estimated App Store Size göstərir. Yerli yoxlama üçün Xcode yerli maşında kəsiklər yaratmaq üçün -exportArchive bayrağı və thinning opsiyası ilə xcodebuild əmrini təqdim edir. Slicing nəticəsini arxivləşdirmədən sonra Organizer-də (Window → Organizer) görmək olar — App Thinning Profiles nişanı müxtəlif cihazlar üçün ölçüləri göstərir.
# Slicing-in yerli yoxlanışı
xcodebuild -exportArchive \
-archivePath "App.xcarchive" \
-exportPath "export/" \
-exportOptionsPlist "export.plist" \
-thinning "<thin-for-all-variants>"
Xcodebuild -thinning bayrağı ilə arxitektura, bitlik və GPU kombinasiyalarının hər biri üçün .app faylları yaradır. <thin-for-all-variants> parametri bütün mümkün variantları yaradır — yoxlama üçün faydalıdır. CI pipeline-ları üçün konkret kombinasiya təyin edilir, məsələn iPhone14,4 (iPhone SE 3). Nəticədə .app faylları app-size utilitesi ilə təhlil edilə bilər.
App Thinning-in əsas üstünlüyü son istifadəçi üçün yükləmə ölçüsünün azaldılmasıdır. Apple-a görə (WWDC 2024), hər üç App Thinning mexanizmindən istifadə edən tipik tətbiq mobil şəbəkə ilə orta hesabla 40% daha sürətli yüklənir və diskdə 35% daha az yer tutur. Bu, birbaşa quraşdırma konversiyasına təsir edir: Sensor Tower-ə görə, tətbiq ölçüsünün hər 10 MB-ı konversiyanı 1% azaldır.
İkinci üstünlük Bitcode sayəsində gələcək cihazlar üçün optimallaşdırmadır. Apple tərtibatçının iştirakı olmadan Bitcode tətbiqlərini yeni arxitekturalar üçün yenidən kompil edə bilər. Məsələn, Intel-dən Apple Silicon (M1)-ə keçid zamanı Bitcode tətbiqləri əlavə qurma olmadan Rosetta 2 vasitəsilə macOS-da işləyirdi. Bitcode-i aktivləşdirməyən tərtibatçılar tətbiqləri arm64 altında yenidən qurmağa məcbur idilər.
Üçüncü üstünlük — ODR (On-Demand Resources) cihaz yaddaşına yükü azaldır. Asphalt 8: Airborne kimi onlarla səviyyəsi olan oyunlar keçid irəlilədikcə yeni trasları yükləmək üçün ODR-dən istifadə edir. Tərtibatçı tətbiqlə birlikdə yüklənən resurslar üçün Initial Install Tags və quraşdırmadan sonra fon yüklənən məzmun üçün Prefetch Tags təyin edə bilər. Apple ODR limitlərinə nəzarət edir: sorğu başına 512 MB-a qədər və cihazda ümumi kesh 20 GB-a qədər.
App Thinning-in tətbiqin layihələndirilməsi zamanı nəzərə alınmalı bir neçə vacib məhdudiyyəti var. Birincisi, Slicing Enterprise (in-house) və ya Ad Hoc vasitəsilə paylanan tətbiqlərə tətbiq edilmir — bu build-lər bütün variantları ehtiva edir və App Store-dan keçmir. Slicing testi üçün tərtibatçı Apple serverləri tərəfindən Slicing-i emal edən TestFlight-dan istifadə edə bilər.
İkincisi, Bitcode qurma müddətini və .xcarchive arxivinin ölçüsünü təxminən 30-50% artırır. Bütün üçüncü tərəf kitabxanaları Bitcode-i dəstəkləmir — əgər ən az bir asılılıq Bitcode olmadan qurulubsa, ENABLE_BITCODE ilə layihənin qurulması xəta ilə bitəcək. Apple Bitcode-i aktivləşdirməzdən əvvəl kitabxanaların uyğunluğunu yoxlamağı tövsiyə edir. Bundan əlavə, Bitcode Swift Package Manager-i tam həcmdə dəstəkləmir — bəzi Swift paketləri Bitcode qurmasını poza bilər.
Üçüncüsü, On-Demand Resources məzmunun dərhal əlçatanlığına zəmanət vermir — ODR yüklənməsi fon baş verir və cihaz aşağı batareya səviyyəsi və ya zəif şəbəkə siqnalı rejimində olduqda təxirə salına bilər. Tərtibatçı NSBundleResourceRequest vasitəsilə ODR yükləmə statuslarının emalını tətbiq etməli və istifadəçiyə gedişat göstəricisini göstərməlidir. ODR yükləməsinin uğursuzluğu tətbiqin funksionallığını bloklamamalıdır — graceful fallback lazımdır.
Tez-tez verilən suallar
Xeyr, App Thinning məcburi deyil. App Thinning olmadan tətbiq App Store-a bütün resurs variantlarını ehtiva edən vahid universal ikili fayl kimi yüklənəcək. Bununlarla belə, Apple App Thinning-i aktivləşdirməyi şiddətlə tövsiyə edir, çünki bu, istifadəçi təcrübəsini yaxşılaşdırır və App Store serverlərinə yükü azaldır.
Xcode Organizer arxivləşdirmədən sonra müxtəlif cihazlar üçün Estimated App Store Size göstərir. App Store Connect Activity bölməsində build yükləndikdən sonra dəqiq kəsim ölçülərini göstərir. Yerli yoxlama üçün -thinning bayrağı ilə xcodebuild istifadə edin.
Bəli, App Thinning SwiftUI ilə tam uyğundur. Slicing SwiftUI tərəfindən Image və Color vasitəsilə istifadə olunan Asset Catalogs ilə işləyir. Bitcode SwiftUI layihələrini dəstəkləyir, ancaq bütün asılılıqlar Bitcode ilə qurulmalıdır. ODR çərçivədən asılı olmayaraq NSBundleResourceRequest vasitəsilə idarə olunur.
Slicing işə salınma müddətinə təsir etmir — silinmiş resurslar yüklənmir. Bitcode JIT kompilasiyası səbəbindən ilk başlatmada işə salınma müddətini az da olsa artıra bilər. ODR, Initial Install Tags teqi olan resurslar hələ yüklənməyibsə, işə salınma müddətini artıra bilər. Apple yalnız kritik vacib resursları Initial Install olaraq işarələməyi tövsiyə edir.
Layihə Bitcode tələb edirsə, lakin kitabxana dəstəkləmirsə — iki yol var: kitabxananı layihədən çıxarmaq və Bitcode-ə uyğun alternativ tapmaq və ya Build Settings-də ENABLE_BITCODE vasitəsilə konkret target üçün Bitcode-i söndürmək. Apple iOS üçün Bitcode-in söndürülməsinə icazə verir, lakin watchOS və tvOS məcburi dəstək tələb edir.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun