Mobil uygulamanın derlenmesi ve yayınlanması, kaynak kodun yüklenebilir bir dosyaya (APK, AAB, IPA) dönüştürülmesi ve uygulama mağazalarına yüklenmesi sürecidir. Google Play Console (2025)'a göre, Android App Bundle (AAB) Ağustos 2021'den bu yana Google Play'de yayınlama için zorunlu biçimdir. Bu makalede derleme biçimlerini, derlemeyi, kod imzalamayı, yayınlama sürecini ve beta testlerini ele alacağız.
Önemli noktalar
APK (Android Package Kit) — Android'de mobil uygulama derleme ve yayınlamanın geleneksel biçimi. APK, uygulamanın tüm kodunu, kaynaklarını ve manifestosunu içerir. AAB (Android App Bundle) — Google tarafından 2018'de tanıtılan ve Ağustos 2021'den itibaren yeni uygulamalar için zorunlu hale gelen bir biçim. AAB doğrudan yüklenmez — Google Play, her cihaz için AAB'den dinamik olarak optimize edilmiş bir APK oluşturur.
AAB'nin avantajları: indirme boyutu ortalama %15 daha küçüktür (yalnızca gerekli kaynakları teslim ederek: doğru ekran yoğunlukları, diller, CPU mimarileri). AAB ayrıca modüler teslimi destekler — modülleri talep üzerine (Play Feature Delivery) veya gecikmeli (Play On-Demand) yükleyebilirsiniz. Geliştiriciler için AAB zorunludur; Google Play dışında dağıtım (sideloading, pazar yerleri) için — yalnızca APK.
IPA (iOS App Store Package) — iOS yüklenebilir dosyası, imzalanmış bir uygulama içeren ZIP arşividir. IPA, Payload/ klasöründe .app paketi, Provisioning Profile ve imza içerir. IPA yalnızca macOS'ta Xcode aracılığıyla derlenir, bir arşiv (.xcarchive) oluşturur ve IPA'yı dışa aktarır. App Store aracılığıyla dağıtım için IPA, Apple Distribution Certificate ile imzalanır; Ad Hoc veya Enterprise için — ilgili sertifikalarla.
| Parametre | APK | AAB | IPA |
|---|---|---|---|
| Platform | Android | Android (Google Play) | iOS |
| Biçim | ZIP arşivi | ZIP arşivi | ZIP arşivi |
| Doğrudan yükleme | Evet | Hayır (Google Play ile) | App Store / MDM ile |
| İmza | Keystore (JKS) | Keystore (JKS/PEPK) | Apple Certificate |
| App Thinning | Hayır | Evet (otomatik) | Evet (Slicing, Bitcode) |
JIT (Just-In-Time) — uygulama yürütülmesi sırasında kodun derlenmesi, derleme ve yayınlama hızını etkiler. Android 5.0 (Lollipop) sürümüne kadar JIT derlemesi ile Dalvik VM kullanılıyordu. Her uygulama başlatıldığında, DEX bayt kodu «anında» makine koduna dönüştürülüyordu. Dezavantaj: ilk başlatmada yavaşlama ve ek güç tüketimi. AOT (Ahead-Of-Time) — uygulama başlatılmadan önce, kurulum sırasında kodun derlenmesi. Android 7.0 (Nougat) ile birlikte ART (Android Runtime), uygulamayı kurulum sırasında tamamen derler.
ART (Android Runtime) — Android 5.0'da Dalvik'in yerini alan çalışma zamanı ortamı. ART hibrit bir yaklaşım kullanır: kurulum sırasında AOT derlemesi + sık yürütülen yöntemler için JIT. Bu, AOT'nin hızını (hızlı başlatma) JIT'in esnekliğiyle (uyarlanabilir optimizasyon) birleştirir. Sonuç: Android uygulama performansı Dalvik'e kıyasla %20-30 arttı. Geliştiriciler için ART'ye geçiş şeffaftır — kod değişikliği gerektirmez.
Bitcode — Apple'ın farklı işlemci mimarileri için IPA'yı yeniden derlemek için kullandığı bir ara kod temsilidir (IR). Bitcode isteğe bağlıdır: iOS uygulamaları için varsayılan olarak etkindir, watchOS ve tvOS için zorunludur. Apple, yeni işlemciler çıktığında geliştirici katılımı olmadan Bitcode'u yeniden derleyebilir. App Thinning — Apple'ın Slicing (cihaz için yalnızca gerekli kaynakları teslim etme) ve On-Demand Resources (talep üzerine kaynak yükleme) içeren teknolojisi. App Thinning, App Store'dan indirme boyutunu %30-50 oranında azaltır.
DEX — Android için bayt kodu biçimi, ART/Dalvik tarafından yürütülür. Kotlin/Java kaynak kodu class dosyalarına derlenir, ardından dx veya d8 (modern ve daha hızlı bir araç) aracılığıyla DEX'e dönüştürülür. Multidex — tek bir DEX dosyasındaki 65.536 yöntem sınırını aşan uygulamalar için bir mekanizma. Modern projelerde, targetSdkVersion >= 21 ise multidex otomatik olarak etkinleştirilir.
Keystore — derleme sırasında bir Android uygulamasını imzalamak için özel anahtar ve sertifika içeren dosya. Keystore, keytool (-genkey komutu) veya Android Studio aracılığıyla oluşturulur. Önemli: Keystore kaybedilmemelidir — onsuz Google Play'de uygulamayı güncelleyemezsiniz. İmza parametreleri: keyAlias, keyPassword, storePassword ve storeFile. Biçim: JKS (Java KeyStore) veya AAB için PEPK (Play Encrypted Private Key).
App Bundle ID (Android) — paket notasyonunda (com.example.app) benzersiz uygulama tanımlayıcısı. Version Code — dahili sürüm numaralandırması için tam sayı (her yeni derleme bunu artırır). Version Name — kullanıcıya gösterilen dize (1.2.3). Bu parametreler uygulama düzeyindeki build.gradle'de ayarlanır.
Apple Certificate — geliştiricinin kimliğini doğrulayan dijital sertifika. Türleri: Development (hata ayıklama için), Distribution (App Store için), Ad Hoc (sınırlı dağıtım için). Sertifikalar Apple Developer Account'da oluşturulur ve Keychain'e indirilir. Provisioning Profile — sertifikayı, App ID'yi (Bundle Identifier) ve izin verilen cihazların listesini birbirine bağlayan dosya. Provisioning Profile olmadan uygulama bir cihazda çalışmaz.
Bundle ID (iOS) — benzersiz uygulama tanımlayıcısı (com.example.app). Build Number — her derlemede artan derleme numarası. Marketing Version — kullanıcıya gösterilen sürüm. Sürüm yönetimi: iOS için parametreler Info.plist ve Project Settings'de ayarlanır; Android için — build.gradle'de. IT Sectr'de, sürüm güncellemelerini Fastlane aracılığıyla otomatikleştiriyoruz — bu, sürüm sırasında insan hatalarını ortadan kaldırır.
Google Play Console — Android uygulamaları yayınlamak için bir araç. Süreç: geliştirici hesabı kaydı ($25 tek seferlik), uygulama oluşturma, meta verileri doldurma (ad, açıklama, ekran görüntüleri, kategori), AAB yükleme, fiyatlandırma ve dağıtım yapılandırma, inceleme. Google, uygulamayı otomatik (virüsler, politika uyumu) ve bazı kategoriler için manuel olarak kontrol eder. İnceleme birkaç saatten 2-3 güne kadar sürer.
App Store Connect — iOS uygulamaları yayınlamak için Apple'ın platformu. Süreç: Apple geliştirici hesabı ($99/yıl), App Store Connect'te uygulama oluşturma, Xcode'da IPA hazırlama (Archive → Distribute App → App Store Connect), Transporter veya Xcode aracılığıyla yükleme, meta verileri doldurma, incelemeye gönderme. App Review — Apple'ın manuel incelemesi 24 saatten 7 güne kadar sürebilir. Reddetme nedenleri: çalışmayan düğmeler, eksik içerik, açıklama yapılmadan izin isteme.
TestFlight — iOS uygulamalarının beta testi için Apple'ın resmi aracı. TestFlight, Internal Testing (e-posta ile 100 test uzmanına kadar, incelemesiz) ve External Testing (10.000 test uzmanına kadar, Apple incelemesiyle) destekler. Derlemeler 90 gün boyunca kullanılabilir, ardından yeni bir derleme yüklenmelidir. TestFlight, yeni bir derleme yüklendiğinde test uzmanlarının uygulamasını otomatik olarak günceller.
Internal Testing (Android) — 100 test uzmanına kadar, Google incelemesi olmadan, derleme hemen kullanılabilir. Closed Beta — e-posta veya Google Groups ile 1000 test uzmanına kadar, incelemesiz. Open Beta — herkese açık bağlantıyla sınırsız test uzmanı, Google incelemesiyle. Staged Rollout — güncellemeyi alan kullanıcı yüzdesinin kademeli olarak artırılması (%5 → %20 → %50 → %100). Bu, en güvenli yayınlama yöntemidir.
App Thinning (iOS) — indirilen IPA boyutunun otomatik azaltılması: Slicing (cihaz için yalnızca gerekli kaynaklar), Bitcode (işlemci optimizasyonu), On-Demand Resources (talep üzerine indirme). IT Sectr'de, iOS beta testleri için TestFlight ve Android için Internal Testing kullanıyoruz — bu, toplu sürümden önce sorunları yakalamamızı sağlar.
Sıkça sorulan sorular
APK — evrensel yüklenebilir dosya, her cihazda çalışır. AAB — her cihaz için optimum APK oluşturan Google Play biçimi. AAB ile indirme boyutu %15 daha küçüktür. Google Play için AAB zorunludur, sideloading için — APK.
Google Play'de uygulamayı güncelleyemezsiniz — yeni bir package name ile yeni bir uygulama oluşturmanız gerekir. Keystore'u güvenli bir yerde saklayın (şifre yöneticisi, şifrelenmiş Git). Google Play App Signing (Google anahtarlarını kullanma) bu riski azaltır.
Google Play — geliştirici hesabı için $25 tek seferlik. App Store — $99/yıl. Her iki ücret de sınırsız uygulama içerir. iOS için ayrıca bir Mac'ten ($999'dan itibaren) veya bulut Mac kiralamaya ihtiyacınız vardır.
Staged Rollout — kademeli güncelleme dağıtımı: önce %5 kullanıcı, sonra %20, %50 ve %100. Herhangi bir aşamada çökmeler tespit edilirse dağıtım durdurulur. Google Play Console'da kullanılabilir.
Android için — hayır, hesap olmadan USB veya emülatör aracılığıyla bir cihaza APK yükleyebilirsiniz. iOS için — evet, $99/yıllık hesap olmadan uygulama yalnızca simülatörde çalışır, gerçek bir cihazda çalışmaz.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.