Изградња и објављивање мобилне апликације је процес претварања изворног кода у инсталабилну датотеку (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-а (sideloading, маркетплејси) — само 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 на нивоу апликације.
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 — број изградње, повећава се са сваким build-ом. 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 тестера путем е-поште, без прегледа) и External Testing (до 10.000 тестера, са Apple прегледом). Изградње су доступне 90 дана, након чега је потребно отпремити нову изградњу. TestFlight аутоматски ажурира апликацију код тестера када се отпреми нова изградња.
Internal Testing (Android) — до 100 тестера, без Google прегледа, изградња доступна одмах. Closed Beta — до 1000 тестера путем е-поште или 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 је обавезан; за sideloading — 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. године. Саветоваћемо вас и предложити најбоље решење.