SDK (Software Development Kit), belirli bir platform için uygulama geliştirmek üzere araç ve kütüphane setidir. Stack Overflow (2025)'a göre, mobil geliştirme için doğru SDK ve frameworkleri seçmek geliştirme süresini %40–60 oranında azaltabilir. 10 yıllık deneyime sahip IT Sectr, düzinelerce SDK denemiş ve optimum yığını seçmek için pratik deneyimlerini paylaşmaktadır.
Önemli Noktalar
UI frameworkleri, kullanıcı arayüzünün görünümünü ve davranışını belirler. UIKit, 2008'den beri kullanılan iOS'un ana frameworküdür ve tüm iOS sürümlerini destekler. SwiftUI, 2019'da tanıtılan daha modern bir bildirimsel frameworktür. Mobil geliştirmeye başlarken UI frameworkü seçimi ilk karardır.
SwiftUI bildirimsel bir yaklaşım kullanır: arayüzün nasıl görünmesi gerektiğini tanımlarsınız ve framework güncellemeleri yönetir. SwiftUI, basit ekranlar için UIKit'e kıyasla kodu 2–3 kat azaltır ve otomatik olarak karanlık mod, Dynamic Type ve Erişilebilirliği destekler.
UIKit, daha ince kontrole sahip emir kipi bir frameworktür. UIKit, karmaşık özel arayüzler ve iOS 12 ve öncesini destekleyen uygulamalar için tercih edilmeye devam etmektedir. Birçok üretim uygulaması hibrit bir yaklaşım kullanır: karmaşık ekranlar için UIKit, yeni özellikler için SwiftUI.
Jetpack Compose, Android için Google'ın bildirimsel UI frameworküdür, SwiftUI'ye benzer. Compose, XML düzenleri yerine Kotlin kodu kullanır, geliştirmeyi hızlandırır ve hataları azaltır. AndroidView ve ComposeView aracılığıyla mevcut View tabanlı uygulamalarla uyumludur.
Jetpack, Jetpack Compose, Navigation, Room, WorkManager ve diğerlerini içeren bir Android kütüphane setidir. Jetpack, Android geliştirmenin yaygın görevlerini çözer — navigasyondan arka plan işlerine kadar — geriye dönük uyumluluğa sahip birleşik bir API ile.
Jetpack Compose'ta basit bir ekran örneği:
@Composable
fun Greeting(name: String) {
Column(
modifier = Modifier.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text = "Hello, $name!",
style = MaterialTheme.typography.h4
)
Button(onClick = { /* handle click */ }) {
Text("Click me")
}
}
}
Mobil geliştirme için platformlararası SDK'ler, iOS ve Android için tek bir kod tabanı yazmayı sağlar. Platformlararası bir SDK seçmek, geliştirme bütçesinin %30–50'sinden tasarruf sağlayabilir, ancak performans ve yerel API'lere erişim konusunda ödünler gerektirir.
| Özellik | Flutter (Dart) | React Native (JavaScript/TypeScript) | Xamarin (.NET) |
|---|---|---|---|
| İşleme | Özel motor (Skia) | Yerel bileşenler (Bridge) | Yerel bileşenler |
| Performans | Yüksek (60–120 FPS) | Orta (Bridge'e bağlı) | Yüksek (yerel derleme) |
| Hot Reload | + (1 saniyeden az) | + (Fast Refresh ile) | + (sınırlı) |
| Platformlar | iOS, Android, Web, Masaüstü | iOS, Android, Web, Masaüstü (Electron) | iOS, Android, Windows, macOS |
| UI Bileşenleri | Material + Cupertino | Yerel + üçüncü taraf kütüphaneler | XAML + Yerel |
| Popülerlik | Yüksek (büyüyor) | Çok yüksek | Orta (azalıyor) |
| En iyi kullanım | MVP, startup'lar, tasarım sistemleri | Basit UI'lı uygulamalar, JS ekipleri | Kurumsal, Microsoft ekosistemi |
Google'ın Flutter'ı, özel Skia işleme motoru sayesinde daha iyi performans sunar. Flutter, zengin animasyonlar ve özel tasarıma sahip projeler için idealdir. React Native, JavaScript deneyimi olan ekipler ve basit arayüzlü uygulamalar için daha uygundur.
Kotlin Multiplatform Mobile (KMM), ortak kodun Kotlin'de yazıldığı ve UI'nın yerel olduğu alternatif bir yaklaşımdır. KMM, iOS ve Android arasında iş mantığı, ağ ve modellerin paylaşılmasını sağlar, her platformun yerel UX'ini korur. IT Sectr'ın kurumsal projeler için tercihidir.
Ionic ve Apache Cordova, işleme için WebView kullanır. WebView yaklaşımı daha düşük performans ve UI sunar, ancak web geliştiricilerinin JS/HTML/CSS kullanmasına olanak tanır. Web siteleri üzerinde basit sarmalayıcı uygulamalar için uygundur.
Bağımlılık Enjeksiyonu (DI), bağımlılıkların bir nesneye dışarıdan iletildiği bir desendir. Mobil geliştirmede, DI frameworkleri bağımlılıkların oluşturulmasını ve enjekte edilmesini otomatikleştirir, kodu daha test edilebilir ve bakımı kolay hale getirir.
Dagger, kod üretimi kullanan Android için en popüler DI frameworküdür. Dagger/Hilt, Google'ın Android için resmi DI kütüphanesidir, Dagger üzerine inşa edilmiştir. Hilt, Dagger kurulumunu basitleştirir ve Jetpack bileşenleriyle otomatik olarak entegre olur.
Koin, kod üretimi olmadan Kotlin için bir DI frameworküdür. Koin'in kurulumu daha kolaydır ancak derleme zamanı kontrollerinin olmaması nedeniyle başlatma sırasında daha yavaş çalışır. Kurulum hızının performanstan daha önemli olduğu küçük projeler için uygundur.
Koin'de bir modül kurulumu örneği:
val appModule = module {
single { ApiService() }
factory { Repository(get()) }
viewModel { MainViewModel(get()) }
}
fun main() {
startKoin {
modules(appModule)
}
}
Swinject, basit bir API'ye sahip Swift için bir DI frameworküdür. Swinject, bir Service Container aracılığıyla yapıcı enjeksiyonu, özellik enjeksiyonu ve yöntem enjeksiyonunu destekler. SwinjectStoryboard ve SwinjectAutoregistration aracılığıyla UIKit ve SwiftUI ile entegre olur.
DI frameworkü seçimi, platforma ve proje boyutuna bağlıdır. Android projeleri için IT Sectr, Hilt'i önerir, iOS için — Swinject, Kotlin Multiplatform için — minimum yapılandırma yükü nedeniyle Koin'i önerir.
Mobil geliştirme için ağ kütüphaneleri, HTTP istekleri ve REST API'lerle çalışmayı kolaylaştırır. Retrofit (Android/Kotlin), tipli arayüzlere sahip JVM için en popüler HTTP istemcisidir. JSON'u OkHttp ve dönüştürücüler (Gson, Moshi, Kotlinx Serialization) aracılığıyla otomatik olarak serileştirir/deserileştirir.
Alamofire, Swift'te iOS/macOS için standart HTTP istemcisidir. Alamofire, zincirlenebilir API, otomatik oturum yönetimi, yanıt doğrulama ve hata işleme sağlar. Alamofire'da temel bir HTTP isteği tek satırlık gibi görünür.
Ktor Client, JetBrains'ten platformlararası bir HTTP istemcisidir. Ktor, birleşik API ile JVM, iOS, macOS, Windows, Linux ve JavaScript'te çalışır. Paylaşılan kodun her iki platformda da çalışması gereken KMM projeleri için harikadır.
RxSwift ve RxJava, reaktif programlama için kütüphanelerdir. Rx kütüphaneleri karmaşık asenkron işlemler için kullanılır — ağ isteklerini birleştirme, debounce, throttle, veri akışlarını birleştirme. Combine, Apple'ın Swift için modern alternatifidir.
Mobil geliştirmede görsel yükleme kütüphaneleri üç görevi çözer: asenkron yükleme, önbellekleme ve görüntüleme. Glide, Android için standarttır, milyonlarca uygulamada kullanılır. GIF, video kareleri, animasyonlar, otomatik bellek ve disk önbelleğini destekler.
Coil (Coroutine Image Loader), Kotlin için Glide'a modern bir alternatiftir. Coil, ilk yüklemede Glide'dan %30 daha hızlıdır ve coroutines ile çalışır (suspend functions, Flow). Ağ için OkHttp kullanır ve SVG, GIF'i kutudan çıktığı gibi destekler.
Kingfisher, tek bir geliştirici tarafından iOS için lider kütüphanedir. Kingfisher, önbellek, yer tutucular, ilerleme göstergeleri, hata işleme ve geçiş animasyonlarını destekler. SDWebImage, büyük bir topluluğa sahip daha eski ama hala popüler bir alternatiftir.
Lottie, After Effects animasyonlarını gerçek zamanlı olarak işlemek için bir kütüphanedir. Lottie, JSON dosyalarından vektör animasyonlarını kalite kaybı olmadan ve minimum dosya boyutuyla oynatır. Renk değiştirme, hız, ilerleme ve döngüyü destekler.
Mobil oyun geliştirme için özel SDK'ler ve motorlar kullanılır. Unity, mobil platformlar için en popüler oyun motorudur, tüm mobil oyunların %50'sinden fazlasını çalıştırır. C# kullanır ve iOS, Android, WebGL ve masaüstünü destekler.
Unreal Engine, fotogerçekçi grafiklere odaklanır. Unreal Engine 5, Nanite (sanal geometri) ve Lumen (dinamik aydınlatma) kullanır, mobil cihazlarda konsol kalitesinde görseller sunar. Daha güçlü donanım ve C++ deneyimi gerektirir.
SpriteKit ve SceneKit, Apple'ın iOS/macOS için yerel 2D ve 3D motorlarıdır. SpriteKit, minimum pil tüketimiyle 2D oyunlar için optimize edilmiştir ve gündelik oyunlar için idealdir. SceneKit, fizik, aydınlatma ve animasyon içeren 3D sahneleri işler.
Metal (Apple) ve Vulkan (platformlararası), düşük seviyeli grafik API'leridir. Metal, Apple cihazlarında maksimum performans sağlar, Vulkan ise Android ve masaüstünde (Windows için DirectX 12'ye benzer). OpenGL ES eskidir ancak eski cihazlar için hala kullanılmaktadır.
Sıkça Sorulan Sorular
UIKit ile başlayın, çünkü iOS geliştirmenin temelidir. UIKit, mevcut iOS uygulamalarının %90'ında kullanılır ve eski kodun bakımı için bilinmesi zorunludur. UIKit'ten sonra SwiftUI öğrenin — yeni projeler için giderek standart haline geliyor.
Flutter, her iki platformda daha iyi performans ve birleşik UI sunar. React Native, devasa JavaScript ekosistemi sayesinde öne çıkar. Ekibiniz JS deneyimine sahipse — React Native seçin. Sıfırdan başlıyorsanız — Flutter seçin. Yerel UI'lı kurumsal projeler için — KMM seçin.
5 ekrana kadar olan projeler için DI frameworkü gereksizdir — Service Locator veya manuel enjeksiyon kullanabilirsiniz. Proje 10+ ekrana ulaştığında, DI bir zorunluluk haline gelir — test etmeyi kolaylaştırır ve karmaşık bağımlılıkları önler.
Android için: Glide (evrensel) veya Coil (proje Kotlin Coroutines kullanıyorsa). iOS için: Kingfisher (modern) veya SDWebImage (kanıtlanmış). Platformlararası projeler için: Coil (KMM aracılığıyla Android + iOS'u destekler).
2D oyunlar ve gündelik segment için — Unity (zayıf cihazlarda daha iyi performans). Üst düzey cihazlarda AAA grafikler için — Unreal Engine 5. Unity öğrenmesi daha kolaydır, Unreal C++ deneyimi ve daha güçlü bir ekip gerektirir.
Ö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.