Android: nedir, sistem mimarisi ve Kotlin ile geliştirme

Yazar: IT Sectr Yayınlanma: 2026-02-07 Okuma süresi: 11 dk

Android, Linux çekirdeği üzerinde çalışan, açık kaynak kodlu (AOSP) bir Google mobil işletim sistemidir. Android geliştirme, Android Studio ortamında Kotlin kullanılarak yapılır. Bu makale, işletim sistemi mimarisini, uygulama bileşenlerini, Jetpack Compose'u ve Google Play'de yayınlamayı kapsar.

Önemli Noktalar

  • Android — Linux çekirdeği üzerinde dört katmanlı işletim sistemi: çekirdek, HAL, Android Runtime, Application Framework
  • Kotlin — null güvenliği ve asenkron işlemler için coroutine desteği olan ana geliştirme dili
  • Activity, Service, BroadcastReceiver, ContentProvider — Android uygulamasının dört zorunlu bileşeni
  • Jetpack Compose — Google tarafından yeni projeler için önerilen bildirimsel UI framework'ü
  • Google Play — %15–30 komisyon ve Play Integrity güvenlik denetimi ile ana dağıtım kanalı

Android nedir?

Android, Linux çekirdeği tabanlı, Google tarafından 2007'den beri geliştirilen bir mobil işletim sistemidir. Kaynak kodu, Android Open Source Project (AOSP) kapsamında Apache 2.0 lisansı altında açıktır. Her üretici sistemi değiştirebilir ve kendi cihazlarına yükleyebilir.

StatCounter (2026) verilerine göre Android, küresel mobil işletim sistemi pazarının yaklaşık %72'sini elinde tutuyor. En büyük üreticiler Samsung, Xiaomi, Oppo, Vivo, Google Pixel'dir. Parçalanma platformun temel sorunudur: farklı işletim sistemi sürümlerine sahip binlerce model aynı anda kullanılmaktadır.

Android mimarisi izinler (permissions) ilkesi üzerine kurulmuştur: her uygulama ayrı bir Linux UID altında çalışır ve yalnızca kendi verilerine erişebilir. Sistem kaynaklarına (kamera, mikrofon, kişiler) erişim, Android 6 (API 23) ile başlayarak çalışma zamanında Android İzinleri aracılığıyla istenir.

Android Sürüm Geçmişi

Android 1.0, 2008 yılında HTC Dream'de piyasaya sürüldü. Önemli dönüm noktaları: Android 4.0 Ice Cream Sandwich (telefonlar ve tabletler için birleşik arayüz), Android 5.0 Lollipop (Material Design), Android 6.0 (çalışma zamanı izinleri), Android 10 (koyu tema, jestler), Android 12 (Material You). 2023'ten itibaren Google, tatlı isimleri olmayan yıllık ana sürümlere geçti.

Android SürümüYılTemel Yenilik
Android 1.02008HTC Dream'de ilk sürüm
Android 4.0 (ICS)2011Telefonlar ve tabletler için birleşik tasarım
Android 5.0 (L)2014Material Design, Dalvik yerine ART
Android 6.0 (M)2015Çalışma zamanı izinleri, Doze modu
Android 8.0 (O)2017Kotlin'in resmi dil olması
Android 10 (Q)2019Scoped Storage, koyu tema
Android 12 (S)2021Material You, Privacy Dashboard
Android 152024Private Space, uydu bağlantısı

Android Mimarisi: Dört Temel Katman

Android mimarisi, donanımı kullanıcı uygulamalarından ayıran dört ana katmandan oluşur. Her katman, kesin olarak tanımlanmış arayüzler aracılığıyla altındaki katmanın hizmetlerini kullanır.

Linux Çekirdeği ve HAL

En alt katman, değiştirilmiş bir Linux çekirdeğidir (LTS, Android 15'te sürüm 6.x). Bellek yönetimi, süreçler, ağ yığını ve sürücüleri yönetir. Donanım Soyutlama Katmanı (HAL), donanımla (kamera, Bluetooth, Wi-Fi, sensörler) etkileşim için birleşik bir API sağlar. Üreticiler, üst katmanları etkilemeden HAL modülleri uygular.

Android Runtime (ART)

ART, uygulamaların DEX bayt kodunu çalıştırır. Android 5.0'den itibaren ART, Dalvik'in yerini aldı ve performansı artırmak için Ahead-of-Time (AOT) derlemesi kullanır. Her uygulamanın ayrı bir ART örneği ile kendi süreci vardır. Çöp toplama (GC) minimum duraklamalarla çalışır — tipik bir GC duraklaması 2-4 ms'dir.

Application Framework

Framework, geliştiricinin doğrudan çalıştığı katmandır. Activity Manager (ekran yığını), Content Providers (veri erişimi), Resource Manager (yerelleştirme, kaynaklar), Notification Manager, Location Manager içerir. Tüm sistem servisleri, Android'in süreçler arası iletişim mekanizması olan Binder IPC aracılığıyla çağrılır.

kotlin
// AIDL arayüzü üzerinden Binder ile çalışma örneği
interface IDataService : android.os.IInterface {
    fun getData(): List<DataItem>
    fun saveData(item: DataItem): Boolean
}

// Hizmet uygulaması
class DataService : Service() {
    private val binder = object : IDataService.Stub() {
        override fun getData(): List<DataItem> = repository.getAll()
        override fun saveData(item: DataItem): Boolean = repository.save(item)
    }

    override fun onBind(intent: Intent?): IBinder = binder
}

Sistem Uygulamaları

En üst katman standart sistem uygulamalarından oluşur: Telefon, Kişiler, Kamera, Ayarlar, Tarayıcı. Kullanıcı uygulamalarından daha yüksek ayrıcalıkları yoktur, ancak üçüncü taraf uygulamalarla değiştirilebilirler. Android 15'te sistem uygulamaları, üretici OTA güncellemelerinden bağımsız olarak Google Play System Updates aracılığıyla güncellenir.

Kotlin — Android Geliştirmenin Ana Dili

Kotlin, JetBrains tarafından geliştirilen, JVM üzerinde çalışan statik olarak tiplendirilmiş bir programlama dilidir. Google, 2017'de Google I/O'da Kotlin'i resmi Android dili olarak duyurdu. Kotlin, Java ile tamamen uyumludur ancak eksikliklerini giderir: null güvenliği, veri sınıfları, genişletme fonksiyonları ve coroutine'ler.

Null Güvenliği ve Türler

Kotlin'in ana özelliği, NullPointerException'a karşı yerleşik korumadır. Türler nullable (String?) ve non-null (String) olarak ayrılır. Derleyici, nullable erişimi derleme zamanında kontrol eder. Safe call (?.) ve Elvis operatörü (?:), iç içe kontroller olmadan isteğe bağlı değerlerle çalışmayı basitleştirir.

kotlin
// Coroutine ve Flow ile Kotlin kodu örneği
data class User(
    val id: Long,
    val name: String,
    val email: String
)

class UserRepository(
    private val api: UserApi,
    private val dao: UserDao
) {
    suspend fun getUser(id: Long): Result<User> {
        return try {
            val cached = dao.getUser(id)
            if (cached != null) {
                return Result.success(cached)
            }
            val remote = api.fetchUser(id)
            dao.insertUser(remote)
            Result.success(remote)
        } catch (e: Exception) {
            Result.failure(e)
        }
    }

    fun observeUsers(): Flow<List<User>> {
        return dao.observeAll()
            .map { list -> list.sortedBy { it.name } }
            .flowOn(Dispatchers.Default)
    }
}

Örnek, asenkron ağ ve veritabanı erişimi için coroutine'leri (suspend fonksiyonu), veri değişikliklerinin reaktif gözlemi için Flow'ı ve güvenli hata işleme için Result'ı gösterir. Coroutine'ler, iş parçacığı yükü olmadan callback'lerin ve RxJava'nın yerini alır.

Kotlin Coroutine'leri ve Flow

Kotlin coroutine'leri, paylaşılan bir iş parçacığı havuzunda çalışan hafif iş parçacıklarıdır. Ağ ve disk için Dispatchers.IO, UI için Dispatchers.Main, CPU yoğun görevler için Dispatchers.Default. viewModelScope ve lifecycleScope, bileşen yok edildiğinde coroutine'leri otomatik olarak iptal eder.

kotlin
// Coroutine ve StateFlow ile ViewModel
class UserViewModel(
    private val repository: UserRepository
) : ViewModel() {

    private val _users = MutableStateFlow<List<User>>(emptyList())
    val users: StateFlow<List<User>> = _users.asStateFlow()

    private val _loading = MutableStateFlow(false)
    val loading: StateFlow<Boolean> = _loading.asStateFlow()

    init {
        viewModelScope.launch {
            repository.observeUsers().collect { userList ->
                _users.value = userList
            }
        }
    }

    fun refresh() {
        viewModelScope.launch {
            _loading.value = true
            repository.getUser(42).onSuccess { user ->
                _users.value = listOf(user)
            }
            _loading.value = false
        }
    }
}

Android Studio ve Geliştirme Araçları

Android Studio, IntelliJ IDEA tabanlı resmi IDE'dir ve Google tarafından geliştirilmiştir. Kod düzenleyici, Layout Inspector, cihaz emülatörü, APK Analyzer, Profiler (CPU, Bellek, Ağ, Enerji) ve Firebase entegrasyonu içerir. Android Studio 2024 (Ladybug), çok platformlu KMP moduyla Kotlin 2.0'ı destekler.

Android Emülatörü

Android Emülatörü, donanım hızlandırması için KVM (Linux) veya Hyper-V (Windows) kullanır. GPS, sensörler, kamera, aramalar ve SMS simülasyonunu destekler. Google Pixel 9 Pro, API 35 ve 8 GB emülatör RAM'i ile test için önerilen yapılandırmadır.

Android Profiler ve Hata Ayıklama

Profiler, gerçek zamanlı olarak CPU yükünü, bellek tahsisini, ağ isteklerini ve enerji tüketimini gösterir. Memory Profiler, referans ağacı aracılığıyla heap dökümü ve sızıntı analizine olanak tanır. Network Inspector, gövde ve başlıklarla birlikte tüm HTTP/HTTPS isteklerini kaydeder. Derinlemesine analiz için Android Studio Canary kullanılır.

Android Uygulama Bileşenleri

Bir Android uygulaması, her biri kendi giriş noktasına ve yaşam döngüsüne sahip dört tür bileşenden oluşur. Bileşenler AndroidManifest.xml dosyasında kaydedilir.

BileşenAmaçGiriş Noktası
ActivityKullanıcı etkileşimi için UI ekranıAction.MAIN ve LAUNCHER kategorisi ile Intent
ServiceUI olmadan arka plan görevi yürütmestartService() veya bindService()
BroadcastReceiverSistem veya özel etkinlikleri almaManifestte veya kodda kayıt
ContentProviderYapılandırılmış verilere erişimi yönetmeContentResolver aracılığıyla URI

Activity ve Intent

Activity, kullanıcı arayüzünün temel bileşenidir. Her ekran ayrı bir Activity veya Activity içinde bir Fragment'tir. Ekranlar arasında gezinme, bir eylem (ACTION_VIEW, ACTION_SEND) ve veri (URI) içeren bir nesne olan Intent aracılığıyla yapılır. Jetpack Navigation Graph'ta gezinme XML'de tanımlanır.

Service ve WorkManager

Service arka plan görevlerini yürütür, ancak Android 8'den itibaren arka plan servisleri kısıtlanmıştır. WorkManager, zincirler, kısıtlamalar (örneğin, yalnızca şarj olurken) ve çökme sonrası yeniden başlatma desteği ile ertelenmiş ve garanti edilmiş arka plan görevleri için önerilen kitaplıktır.

Jetpack Compose vs XML Layouts

Jetpack Compose ve geleneksel XML düzenleri arasındaki seçim, bir Android projesine başlarken ana mimari karardır. XML Düzenleri (RecyclerView, ConstraintLayout, FrameLayout) 2008'den beri standarttır. Jetpack Compose, 2021'de bildirimsel bir alternatif olarak tanıtıldı.

KriterXML LayoutsJetpack Compose
ParadigmaEmir kipi (View ağacı)Bildirimsel (@Composable fonksiyonlar)
Minimum SürümHerhangi biri (API 1+)API 21+ (Android 5.0)
DüzenXML + data binding / ViewBindingModifier ile Kotlin kodu
RecyclerView benzeriRecyclerView + Adapter + ViewHolderLazyColumn / LazyGrid
ÖnizlemeAndroid Studio'da XML önizlemeEtkileşimli @Preview ek açıklaması
Yeniden BirleştirmenotifyDataSetChanged (tam)Otomatik, ayrıntılı (DiffUtil)
Birlikte ÇalışabilirlikTam (tüm kitaplıklar)XML'de ComposeView / Compose'da AndroidView

Google, tüm yeni projeler için Jetpack Compose'u önerir. XML Düzenleri, eski proje desteği ve maksimum View özelleştirmesi (Canvas, SurfaceView) gereken durumlar için geçerliliğini korur. Compose kodu, eşdeğer XML + ViewBinding'den ortalama %40 daha kısadır.

kotlin
// Jetpack Compose — kullanıcı profili ekranı
@Composable
fun ProfileScreen(
    user: User,
    onEditClick: () -> Unit,
    modifier: Modifier = Modifier
) {
    Column(
        modifier = modifier
            .fillMaxSize()
            .padding(16.dp),
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        AsyncImage(
            model = user.avatarUrl,
            contentDescription = "Kullanıcı avatarı",
            modifier = Modifier
                .size(120.dp)
                .clip(CircleShape)
        )

        Spacer(modifier = Modifier.height(16.dp))

        Text(
            text = user.name,
            style = MaterialTheme.typography.headlineMedium
        )

        Text(
            text = user.email,
            style = MaterialTheme.typography.bodyLarge,
            color = MaterialTheme.colorScheme.onSurfaceVariant
        )

        Spacer(modifier = Modifier.height(24.dp))

        Button(onClick = onEditClick) {
            Icon(Icons.Default.Edit, contentDescription = null)
            Spacer(modifier = Modifier.width(8.dp))
            Text("Profili düzenle")
        }
    }
}

@Preview(showBackground = true, showSystemUi = true)
@Composable
fun ProfileScreenPreview() {
    MaterialTheme {
        ProfileScreen(
            user = User(1, "Anna Petrova", "anna@example.com"),
            onEditClick = {}
        )
    }
}

ProfileScreen fonksiyonu @Composable olarak bildirilir — View örnekleri oluşturmadan UI'ı bildirimsel olarak tanımlar. Compose, user değiştiğinde ekranı otomatik olarak günceller. @Preview, derleme ve emülatörde çalıştırma olmadan sonucu doğrudan IDE'de gösterir.

Activity ve Fragment Yaşam Döngüsü

Android'deki her Activity altı yaşam döngüsü durumundan geçer: onCreate, onStart, onResume, onPause, onStop, onDestroy. Fragment, onAttach, onCreateView, onViewCreated ekler. Yaşam döngüsünü anlamak, bellek yönetimi ve sızıntıları önleme için kritiktir.

Activity'nin Ana Durumları

onCreate — Activity oluşturulduğunda bir kez çağrılır. Burada başlatma yapılır: setContentView, bağdaştırıcı kurulumu, LiveData aboneliği. onResume — Activity ön plandadır ve kullanıcıyla etkileşim halindedir. onPause — Activity odağı kaybeder (diyalog, başka Activity). onStop — Activity görünmez. onDestroy — Activity yok edilir.

kotlin
// LifecycleScope ile yaşam döngüsü yönetimi olan Activity
class MainActivity : ComponentActivity() {
    private val viewModel: UserViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContent {
            MaterialTheme {
                lifecycleScope.launch {
                    repeatOnLifecycle(Lifecycle.State.STARTED) {
                        viewModel.users.collect { users ->
                            updateUi(users)
                        }
                    }
                }
            }
        }
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putString("last_search", searchQuery)
    }

    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        searchQuery = savedInstanceState.getString("last_search", "")
    }
}

repeatOnLifecycle kullanımı, Activity arka plana geçtiğinde veri toplamanın duraklamasını ve ön plana döndüğünde devam etmesini sağlar. Bu, sızıntıları ve gereksiz ağ isteklerini önler. onSaveInstanceState, ekran döndürmede geçici durumu kaydeder.

Google Play: Yayınlama ve Gereksinimler

Google Play, resmi Android uygulama mağazasıdır. Geliştirici hesabı kaydı tek seferlik $25 tutarındadır. Her uygulama, kötü amaçlı kod, politika ihlalleri ve yanlış izin kullanımı için otomatik Google Play Integrity denetiminden geçer.

Yayınlama Gereksinimleri

Google, uygulamanın Android App Bundle (AAB) veya APK aracılığıyla imzalanmasını gerektirir. AAB, her cihaz yapılandırması için optimize edilmiş APK'lar oluşturmayı sağlayan önerilen biçimdir. Uygulama, geçerli bir sertifikaya sahip bir anahtarla (keystore) imzalanmalıdır. Google Play App Signing, Google tarafında isteğe bağlı anahtar şifrelemesidir.

Gizlilik Politikası

Kişisel verilere erişim talep eden tüm uygulamalar bir Gizlilik Politikası sağlamalıdır. 2024'ten itibaren Google, toplanan veri türlerini ve işleme amaçlarını belirten bir Data Safety beyanı talep etmektedir. Android 14+ hedefleyen uygulamalar, izinleri bildirmek için Declarations API'yi kullanmalıdır.

GereksinimAçıklama
Android App BundleOptimize edilmiş dağıtım için AAB biçimi
Data SafetyKişisel verilerin toplanması ve işlenmesi hakkında form
Hedef SDKUygulama en son Android API seviyesini hedeflemelidir
İçerik DerecelendirmesiYaş derecelendirme anketi
Mağaza ListesiAd, simge, ekran görüntüleri, açıklama

Sıkça Sorulan Sorular

Android geliştirme için hangi dil en iyisidir?

Kotlin — Google tarafından Android için resmi olarak önerilen dil. Java da eski projeler için desteklenmektedir. Kotlin, null güvenliği, coroutine'ler ve genişletme fonksiyonları sunarak kod hacmini Java'ya kıyasla %30-40 oranında azaltır.

Ne seçmeli: Jetpack Compose mu XML Layouts mu?

Jetpack Compose, bildirimsel sözdizimi ve otomatik yeniden birleştirme optimizasyonu sayesinde tüm yeni projeler için önerilir. XML Layouts, eski projelerde ve Canvas veya SurfaceView'in ayrıntılı özelleştirilmesinin gerektiği durumlarda kalır.

Google Play'de yayınlamanın maliyeti nedir?

Google Play geliştirici kaydı tek seferlik $25 tutarındadır. Mağaza komisyonu ilk 1 milyon $ gelir için %15, sonrasında %30'dur. Abonelikler için komisyon ilk günden itibaren %15'tir. Apple Developer Program'ın aksine yıllık ücret yoktur.

Android Jetpack nedir?

Android Jetpack, resmi SDK'ya dahil edilen Google kitaplıkları setidir: Navigation, Room (derleme zamanı sorgu denetimi ile SQLite ORM), WorkManager (garantili arka plan görevleri), ViewModel (durum yönetimi), LiveData ve StateFlow (reaktiflik için).

Bir Android uygulaması için minimum gereksinimler nelerdir?

Yeni projeler için desteklenen minimum sürüm API 24'tür (Android 7.0). AndroidManifest.xml, uygulama bileşenlerini ve izinlerini tanımlar. APK/AAB bir keystore ile imzalanır. Hedef SDK, yayınlama sırasındaki en son API seviyesiyle eşleşmelidir.

Özet

  • Android — Linux çekirdeğinde açık mobil işletim sistemi, %72 küresel pazar payı ve üretici özelleştirme seçenekleri
  • Kotlin — null güvenliği, coroutine'ler ve %100 Java uyumluluğu ile ana Android geliştirme dili
  • Android Mimarisi dört katman üzerine kuruludur: Linux çekirdeği, HAL, Android Runtime, Application Framework
  • Activity, Service, BroadcastReceiver, ContentProvider — manifestte kayıtlı dört bileşen
  • Jetpack Compose — otomatik yeniden birleştirme ile Google tarafından önerilen bildirimsel UI framework'ü
  • Google Play — tek seferlik $25 ödeme, AAB biçimi, zorunlu Data Safety ve Gizlilik Politikası
  • WorkManager — yürütme garantileri ve kısıtlamalarla arka plan görevleri için önerilen API

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.

Projeyi tartış

Ayrıca okuyun