Збірка та публікація мобільного додатка — це процес перетворення вихідного коду в інсталяційний файл (APK, AAB, IPA) та його завантаження в магазини додатків. За даними Google Play Console (2025), Android App Bundle (AAB) — обов'язковий формат для публікації в Google Play із серпня 2021 року. У цій статті розберемо формати збірок, компіляцію, підпис коду, процес публікації та бета-тестування.
Головне
APK (Android Package Kit) — традиційний формат збірки та публікації мобільних додатків на Android. APK містить весь код, ресурси та маніфест додатка. AAB (Android App Bundle) — формат, введений Google у 2018 році та обов'язковий для нових додатків із серпня 2021. AAB не встановлюється безпосередньо — Google Play динамічно генерує оптимізований APK для кожного пристрою з AAB.
Переваги AAB: розмір завантаження в середньому на 15% менший (завдяки доставці тільки потрібних ресурсів: правильні щільності екрану, мови, архітектури процесора). AAB також підтримує модульну доставку — ви можете завантажувати модулі на вимогу (Play Feature Delivery) або відкладено (Play On-Demand). Для розробників AAB обов'язковий; для поширення поза Google Play (сайдлоад, маркетплейси) — тільки APK.
IPA (iOS App Store Package) — інсталяційний файл iOS, який є ZIP-архівом із підписаним додатком. IPA містить папку Payload/ з .app-бандлом, Provisioning Profile та підпис. IPA збирається тільки на macOS через Xcode, який створює архів (.xcarchive) та експортує IPA. Для поширення через App Store IPA підписується Apple Distribution Certificate, для Ad Hoc або Enterprise — відповідними сертифікатами.
| Параметр | APK | AAB | IPA |
|---|---|---|---|
| Платформа | Android | Android (Google Play) | iOS |
| Формат | ZIP-архів | ZIP-архів | ZIP-архів |
| Встановлення напряму | Так | Ні (через Google Play) | Через App Store / MDM |
| Підпис | Keystore (JKS) | Keystore (JKS/PEPK) | Apple Certificate |
| App Thinning | Ні | Так (автоматично) | Так (Slicing, Bitcode) |
JIT (Just-In-Time) — компіляція коду під час виконання додатка, що впливає на швидкість збірки та публікації. На Android до версії 5.0 (Lollipop) використовувався Dalvik VM із JIT-компіляцією. При кожному запуску додатка байткод DEX перетворювався на машинний код «на льоту». Недолік: уповільнення при першому запуску та додаткове споживання енергії. AOT (Ahead-Of-Time) — компіляція коду до запуску додатка, під час встановлення. Починаючи з Android 7.0 (Nougat), ART (Android Runtime) компілює додаток повністю при встановленні.
ART (Android Runtime) — середовище виконання, яке замінило Dalvik в Android 5.0. ART використовує гібридний підхід: AOT-компіляція при встановленні + JIT для часто виконуваних методів. Це поєднує швидкість AOT (швидкий запуск) із гнучкістю JIT (адаптивна оптимізація). Результат: продуктивність Android-додатків зросла на 20–30% порівняно з Dalvik. Для розробників перехід на ART прозорий — код не потребує змін.
Bitcode — проміжне представлення коду (IR), яке Apple використовує для перекомпіляції IPA під різні архітектури процесорів. Bitcode опціональний: для iOS-додатків він увімкнений за замовчуванням, для watchOS та tvOS — обов'язковий. Apple може перекомпілювати Bitcode при виході нових процесорів без участі розробника. App Thinning — технологія Apple, що включає Slicing (доставка тільки потрібних ресурсів для пристрою) та On-Demand Resources (завантаження ресурсів на вимогу). App Thinning скорочує розмір завантаження з App Store на 30–50%.
DEX — формат байткоду для Android, який виконується ART/Dalvik. Вихідний код Kotlin/Java компілюється в class-файли, потім у DEX через dx або d8 (сучасний та швидший інструмент). Multidex — механізм для додатків, які перевищують ліміт у 65 536 методів в одному DEX-файлі. У сучасних проектах multidex вмикається автоматично, якщо targetSdkVersion >= 21.
Keystore — файл, що містить приватний ключ та сертифікат для підпису Android-додатка при збірці. Keystore створюється через keytool (ключ -genkey) або Android Studio. Важливо: Keystore не можна втрачати — без нього ви не зможете оновити додаток у Google Play. Параметри для підпису: keyAlias, keyPassword, storePassword та storeFile. Формат: JKS (Java KeyStore) або PEPK (Play Encrypted Private Key) для AAB.
App Bundle ID (Android) — унікальний ідентифікатор додатка в пакетній нотації (com.example.app). Version Code — ціле число для внутрішньої нумерації версій (кожна нова збірка збільшує його). Version Name — рядок, що відображається користувачеві (1.2.3). Ці параметри задаються в build.gradle рівня app.
Apple Certificate — цифровий сертифікат, що засвідчує особу розробника. Типи: Development (для налагодження), Distribution (для App Store), Ad Hoc (для обмеженого поширення). Сертифікати створюються в Apple Developer Account та завантажуються в Keychain. Provisioning Profile — файл, що пов'язує сертифікат, App ID (Bundle Identifier) та список дозволених пристроїв. Без Provisioning Profile додаток не запуститься на пристрої.
Bundle ID (iOS) — унікальний ідентифікатор додатка (com.example.app). Build Number — версія збірки, збільшується з кожним білдом. Marketing Version — версія, що показується користувачеві. Управління версіями: для iOS параметри задаються в Info.plist та Project Settings, для Android — в build.gradle. В IT Sectr ми автоматизуємо оновлення версій через Fastlane — це виключає людські помилки при релізі.
Google Play Console — інструмент для публікації Android-додатків. Процес: реєстрація облікового запису розробника ($25 разово), створення додатка, заповнення метаданих (назва, опис, скріншоти, категорія), завантаження AAB, налаштування цін та поширення, рев'ю. Google перевіряє додаток автоматично (на віруси, невідповідність політикам) та вручну для деяких категорій. Рев'ю займає від кількох годин до 2–3 днів.
App Store Connect — платформа Apple для публікації iOS-додатків. Процес: обліковий запис розробника Apple ($99/рік), створення додатка в App Store Connect, підготовка IPA в Xcode (Archive → Distribute App → App Store Connect), завантаження через Transporter або Xcode, заповнення метаданих, відправка на рев'ю. App Review — ручна перевірка Apple може зайняти від 24 годин до 7 днів. Типові причини відмови: несправні кнопки, неповний вміст, запит дозволів без пояснення.
TestFlight — офіційний інструмент Apple для бета-тестування iOS-додатків. TestFlight підтримує Internal Testing (до 100 тестувальників за email, без рев'ю) та External Testing (до 10 000 тестувальників, з рев'ю Apple). Збірки доступні 90 днів, після чого потрібно завантажити нову. TestFlight автоматично оновлює додаток у тестувальників при завантаженні нової збірки.
Internal Testing (Android) — до 100 тестувальників, без рев'ю Google, збірка доступна одразу. Closed Beta — до 1000 тестувальників за email або Google Groups, без рев'ю. Open Beta — необмежена кількість тестувальників через публічне посилання, з рев'ю Google. Staged Rollout — поступове збільшення відсотка користувачів, які отримують оновлення (5% → 20% → 50% → 100%). Це найбезпечніший спосіб релізу.
App Thinning (iOS) — автоматичне зменшення розміру завантажуваного IPA: Slicing (тільки потрібні ресурси для пристрою), Bitcode (оптимізація під процесор), On-Demand Resources (завантаження на вимогу). В IT Sectr ми використовуємо TestFlight для бета-тестів iOS та Internal Testing для Android — це дозволяє виявити проблеми до масового релізу.
Часто задавані питання
APK — універсальний інсталяційний файл, працює на будь-якому пристрої. AAB — формат для Google Play, який генерує оптимальний APK для кожного пристрою. Розмір завантаження через AAB на 15% менший. Для Google Play обов'язковий AAB, для сайдлоаду — APK.
Ви не зможете оновити додаток у Google Play — доведеться створювати новий додаток із новим package name. Зберігайте Keystore у безпечному місці (менеджер паролів, зашифрований Git). Google Play App Signing (використання ключів Google) знижує цей ризик.
Google Play — $25 разово за обліковий запис розробника. App Store — $99/рік. Обидві суми включають необмежену кількість додатків. Для iOS також потрібен Mac (від $999) або хмарна оренда Mac.
Staged Rollout — поступове викочування оновлення: спочатку 5% користувачів, потім 20%, 50% та 100%. Якщо на будь-якому етапі виявлено краші — викочування зупиняється. Доступно в Google Play Console.
Для Android — ні, ви можете встановлювати APK на пристрій через USB або емулятор без облікового запису. Для iOS — так, без облікового запису $99/рік додаток працюватиме тільки на симуляторі, не на реальному пристрої.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.