← Blog'a Dön

Android Katman Katman Nasıl Çalışır?

Android Katman Katman Nasıl Çalışır?
Bir Binayı Anlamak İstiyorsanız Mimari Planına Bakın
Android'i bir binaya benzetebiliriz. Dışarıdan baktığınızda güzel bir cephe görürsünüz — uygulamalar, arayüz, animasyonlar. Ama o cephenin arkasında birbirinin üzerine kurulmuş, her biri farklı bir işlev üstlenen katmanlar vardır.
Bu katmanları anlamadan Android geliştirme yapmak mümkündür. Ama bu katmanları tanıyan bir geliştirici, platformun neden böyle davrandığını çok daha hızlı kavrar, sorunları çok daha isabetli teşhis eder.

En Alttan Başlayalım: Linux Kernel
Her şeyin temeli Linux çekirdeğidir. Donanımla doğrudan konuşan tek katman burasıdır.
İşlemciye iş dağıtmak, belleği yönetmek, dosya sistemini düzenlemek, ağ bağlantılarını yönetmek — bunların tamamı Linux çekirdeğinin sorumluluğundadır. Kamera, ekran, pil, GPS, sensörler — her donanım bileşeninin sürücüsü bu katmanda yaşar.
Bir Android uygulaması olarak siz bu katmana doğrudan erişemezsiniz. Üstteki katmanlar bu erişimi sizin adınıza yönetir ve güvenli bir şekilde soyutlar. Bu soyutlama hem güvenliği hem de uyumluluğu sağlar.

İkinci Katman: HAL — Donanım Soyutlama Katmanı
Hardware Abstraction Layer, isminden de anlaşıldığı üzere donanımı soyutlar.
Düşünün: Dünyada yüzlerce farklı kamera modülü var. Her birinin kontrolü farklı komutlar gerektirir. Eğer Android framework'ü her kamera üreticisine özel kod yazmak zorunda kalsaydı, bu sürdürülemez bir karmaşaya dönüşürdü.
HAL bu sorunu çözer. Her donanım üreticisi kendi HAL modülünü yazar. Android framework'ü ise yalnızca HAL'ın standart arayüzüyle konuşur. Bu sayede framework, altta hangi donanımın çalıştığından bağımsız olarak çalışır.
Bir geliştirici olarak HAL ile doğrudan muhatap olmazsınız. Ama kamera API'sinin farklı cihazlarda farklı davranmasının kökeninde çoğunlukla bu katman yatar.

Üçüncü Katman: Android Runtime ve Temel Kütüphaneler
Bu katman iki önemli bileşenden oluşur.
Android Runtime (ART), uygulamalarınızın çalıştırıldığı ortamdır. Yazdığınız Kotlin ya da Java kodu bytecode'a derlenir, ART bu bytecode'u cihazın işlemcisinin anlayabileceği native koda çevirir. ART sayesinde aynı uygulama farklı işlemci mimarilerine sahip yüzlerce cihazda sorunsuz çalışabilir.
Temel Kütüphaneler ise C ve C++ ile yazılmış sistem düzeyindeki bileşenlerdir. SQLite veritabanı motoru, OpenGL grafik kütüphanesi, ses işleme bileşenleri, SSL güvenlik kütüphanesi bu katmanda yaşar. Bunlar performans gerektiren ve donanıma yakın çalışması gereken bileşenlerdir.

Dördüncü Katman: Android Framework
Bir Android geliştiricisi olarak zamanınızın büyük bölümünü bu katmanla geçirirsiniz.
Activity, Fragment, Service, BroadcastReceiver, ContentProvider — Android'in temel bileşenlerinin tamamı burada tanımlıdır. Bildirim sistemi, konum servisleri, pencere yöneticisi, paket yöneticisi, telefon servisleri bu katmanda çalışır.
Framework katmanı size bir sözleşme sunar: "Bu API'leri kullanırsan, altta hangi donanım ya da hangi Android versiyonu olursa olsun ben gerekli işi hallederim." Bu sözleşme sayesinde geliştirici olarak donanım detaylarıyla değil, uygulama mantığıyla ilgilenirsiniz.

En Üst Katman: Uygulamalar
Kullanıcının gördüğü ve dokunduğu her şey bu katmandadır. Sistem uygulamaları da (Telefon, Kamera, Ayarlar) aynı katmanda üçüncü parti uygulamalarla birlikte yaşar.
Android bu açıdan demokratik bir yapıya sahiptir. Google'ın kendi uygulamaları da sizin yazdığınız uygulama da aynı API'leri kullanır, aynı sandbox kısıtlamalarına tabidir. Teorik olarak hiçbir uygulama diğerinden ayrıcalıklı değildir.

Katmanlar Neden Bu Kadar Önemli?
Bu mimariyi anlamak soyut bir bilgi değildir. Günlük geliştirme pratiğinizde çok somut karşılıkları vardır.
Farklı cihazlarda aynı kodun farklı davranması çoğunlukla HAL katmanındaki üretici özelleştirmelerinden kaynaklanır. Uygulamanızın belirli cihazlarda çökmesi ART'ın o versiyondaki davranışıyla ilgili olabilir. Bir API'nin beklediğiniz gibi çalışmaması framework katmanının o sürümündeki bir değişiklikten kaynaklanıyor olabilir.
Katmanları tanıyan bir geliştirici bu soruları çok daha hızlı sorar — ve çok daha isabetli yerlere bakar.