Налаштування App Thinning (Slicing, Bitcode, On-Demand Resources) для iOS

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Налаштування App Thinning (Slicing, Bitcode, On-Demand Resources) для iOS
Середній
від 1 дня до 3 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Налаштування App Thinning (Slicing, Bitcode, On-Demand Resources) для iOS

Програма важить 180 MB при завантаженні на iPhone 13 mini. На iPad Pro — той же бінарний файл з тими ж ресурсами. Хоча iPad не потребує @2x-ассетів під 390pt екран — він їх отримує разом із всім іншим. App Thinning вирішує саме це: App Store сам збирає варіант програми для конкретного пристрою та відправляє тільки потрібне.

Три складові App Thinning

Slicing

App Store створює окремі варіанти IPA під кожну комбінацію пристрій/OS. iPhone 8 отримує лише @2x-ресурси та ARMv8 slice бінарника. iPad Pro — @3x ресурси та ARM64e.

Вимога до розробника: Asset Catalog. Ресурси поза .xcassets (що лежать просто в папці) не беруть участь у slicing — вони потрапляють у всі варіанти. Перевіряємо: всі зображення повинні бути в Asset Catalog з правильними розмірними слотами (@1x/@2x/@3x) та trait variations (iPhone/iPad/Mac).

Перевірка результату: Xcode → Product → Archive → Distribute → Ad Hoc/Development → Export → App Thinning: All compatible device variants. Після експорту дивимося App Thinning Size Report.txt — таблиця з розмірами для кожного пристрою.

On-Demand Resources (ODR)

Контент, який потребується не завжди — рівні гри, навчання, рідко використовувані фільтри — помічаються тегами та завантажуються за запитом. Зберігаються на серверах Apple, не в самому IPA.

Налаштування: у Xcode Target → Build Phases → Copy Bundle Resources → для ресурсу в Asset Catalog встановлюємо On Demand Resource Tags. У коді:

let request = NSBundleResourceRequest(tags: ["level_5"])
request.conditionallyBeginAccessingResources { available in
    if available {
        // ресурс вже завантажено
    } else {
        request.beginAccessingResources { error in
            guard error == nil else { return }
            // ресурс завантажено, можна використовувати
        }
    }
}

Обмеження: initial install bundle — до 200 MB, on-demand resources — до 20 GB, одночасно завантажених ODR — до 2 GB. Для ігор з великим контентом це принципово змінює розмір установочного файлу.

Bitcode

Bitcode — проміжне представлення LLVM, яке Apple може перекомпілювати під нові архітектури без повторної публікації розробником. Для iOS-програм з Xcode 14+ Bitcode не потребується та не підтримується — Apple видалила вимогу. Для watchOS та tvOS — до Xcode 14 був обов'язковим.

Якщо програма збирається на старому Xcode (< 14) або підтримує watchOS/tvOS extension — Bitcode включається в Build Settings → ENABLE_BITCODE = YES. Всі сторонні бібліотеки та .framework-файли повинні містити Bitcode. Якщо хоч одна залежність без Bitcode — вся програма втрачає Bitcode capability.

Типові помилки налаштування

  • Ресурси додані через File → Add Files замість Asset Catalog — не беруть участь у slicing
  • ODR-теги призначені файлам, але NSBundleResourceRequest не викликає endAccessingResources() — ресурс не звільняється з локального сховища
  • ODR-тестування не проведено в offline-режимі — на користувачах виявляється, що завантаження контенту не обробляє помилку відсутності мережі

Часові рамки

Налаштування App Thinning для готового проекту — 1–3 дні. Якщо ресурси не в Asset Catalog — додатково 2–5 днів на міграцію залежно від об'єму.