Android, çok çeşitli cihazlar ve form faktörleri için oluşturulmuş açık kaynaklı, Linux tabanlı bir yazılım yığınıdır. Şekil 1'de Android platformunun ana bileşenleri gösterilmektedir.
![Android yazılım yığını](https://developer.android.com/static/guide/platform/images/android-stack_2x.png?authuser=5&hl=tr)
Şekil 1. Android yazılım yığını.
Linux çekirdeği
Android platformunun temeli Linux çekirdeğidir. Örneğin Android Çalışma Zamanı (ART), iş parçacığı oluşturma ve alt düzey bellek yönetimi gibi temel işlevler için Linux çekirdeğini kullanır.
Linux çekirdeği kullanmak, Android'in temel güvenlik özelliklerinden yararlanmasına ve cihaz üreticilerinin bilinen bir çekirdek için donanım sürücüleri geliştirmesine olanak tanır.
Donanım soyutlama katmanı (HAL)
Donanım soyutlama katmanı (HAL), cihaz donanım özelliklerini daha üst düzey Java API çerçevesine maruz bırakan standart arayüzler sağlar. HAL, birden çok kitaplık modülünden oluşur. Bu modüllerin her biri, kamera veya Bluetooth modülü gibi belirli bir donanım bileşeni türü için arayüz uygular. Bir çerçeve API'si cihaz donanımına erişmek için bir çağrı yaptığında, Android sistemi söz konusu donanım bileşeni için kitaplık modülünü yükler.
Android çalışma zamanı
Android 5.0 (API düzeyi 21) veya sonraki sürümleri çalıştıran cihazlarda her uygulama kendi işleminde ve kendi Android Çalışma Zamanı (ART) örneğiyle çalışır. ART, Dalvik Yürütülebilir biçim (DEX) dosyalarını çalıştırarak birden fazla sanal makineyi düşük bellekli cihazlarda çalıştıracak şekilde yazılmıştır. Bu dosya, Android için özel olarak tasarlanmış ve minimum bellek ayak izi için optimize edilmiş bayt kodu biçimidir. d8
gibi araçlar oluşturun. Bu araçlar, Java kaynaklarını Android platformunda çalıştırılabilen DEX bayt kodunda derler.
ART'ın bazı önemli özellikleri şunlardır:
- Ahead-of-time (AOT) ve tam zamanında (JIT) derleme
- Optimize edilmiş çöp toplama (GC)
- Android 9 (API düzeyi 28) ve sonraki sürümlerde bir uygulama paketinin DEX dosyalarını daha kompakt makine koduna dönüştürme
- Özel bir örnekleme profil aracı, ayrıntılı teşhis istisnaları ve kilitlenme raporları gibi daha iyi hata ayıklama desteği ve belirli alanları izlemek için izleme noktaları ayarlama özelliği
Dalvik, Android sürüm 5.0'dan (API düzeyi 21) önce Android çalışma zamanıydı. Uygulamanız ART'da iyi çalışıyorsa Dalvik'te de çalışabilir, ancak tersi doğru olmayabilir.
Android, Java API çerçevesinin kullandığı bazı Java 8 dil özellikleri dahil olmak üzere Java programlama dilinin işlevlerinin çoğunu sağlayan bir dizi temel çalışma zamanı kitaplığı da içerir.
Yerel C/C++ kitaplıkları
ART ve HAL gibi birçok temel Android sistem bileşeni ve hizmeti, C ve C++'ta yazılmış yerel kitaplıklar gerektiren yerel koddan derlenmiştir. Android platformu, bu yerel kitaplıkların bazılarının işlevlerini uygulamalarda kullanıma sunmak için Java çerçeve API'leri sağlar. Örneğin, uygulamanızda 2D ve 3D grafikler çizme ve bunları değiştirme desteği eklemek için Android çerçevesinin Java OpenGL API'si aracılığıyla OpenGL ES'ye erişebilirsiniz.
C veya C++ kodu gerektiren bir uygulama geliştiriyorsanız bu yerel platform kitaplıklarından bazılarına doğrudan yerel kodunuzdan erişmek için Android NDK'yı kullanabilirsiniz.
Java API çerçevesi
Java dilinde yazılmış API'ler aracılığıyla Android OS'in tüm özellik grubunu kullanabilirsiniz. Bu API'ler, aşağıdakiler de dahil olmak üzere temel, modüler sistem bileşenleri ve hizmetlerinin yeniden kullanımını basitleştirerek Android uygulamaları oluşturmak için ihtiyacınız olan yapı taşlarını oluşturur:
- Bir uygulamanın kullanıcı arayüzünü oluşturmak için kullanabileceğiniz, listeler, ızgaralar, metin kutuları, düğmeler ve hatta yerleştirilebilir bir web tarayıcısı içeren zengin ve genişletilebilir bir görünüm sistemi
- Yerelleştirilmiş dizeler, grafikler ve düzen dosyaları gibi kod olmayan kaynaklara erişim sağlayan bir kaynak yöneticisi
- Tüm uygulamaların durum çubuğunda özel uyarılar göstermesine olanak tanıyan bir bildirim yöneticisi
- Uygulamaların yaşam döngüsünü yöneten ve ortak bir gezinme geri yığını sağlayan etkinlik yöneticisi
- Uygulamaların Kişiler uygulaması gibi diğer uygulamalardaki verilere erişmesini veya kendi verilerini paylaşmasını sağlayan içerik sağlayıcılar
Geliştiriciler, Android sistem uygulamalarının kullandığı çerçeve API'lerine tam erişime sahiptir.
Sistem uygulamaları
Android'de e-posta, SMS mesajlaşması, takvimler, internette gezinme, kişiler ve daha fazlası için bir dizi temel uygulama bulunur. Platformda yer alan uygulamaların, kullanıcının yüklemeyi seçtiği uygulamalar arasında özel bir durumu yoktur. Böylece, bir üçüncü taraf uygulaması kullanıcının varsayılan web tarayıcısı, SMS mesajı, hatta varsayılan klavyesi olabilir. Sistemin Ayarlar uygulaması gibi bazı istisnalar vardır.
Sistem uygulamaları hem kullanıcılar için uygulama olarak işlev görür hem de geliştiricilerin kendi uygulamalarından erişebilecekleri temel özellikleri sağlar. Örneğin, uygulamanızın SMS mesajları göndermesini istiyorsanız bu işlevi sizin oluşturmanız gerekmez. Bunun yerine, belirttiğiniz alıcıya bir mesaj göndermek için yüklü olan SMS uygulamasını çağırabilirsiniz.