Android Yazılım Yığını
Android uygulamaların, işletim sisteminin, çalışma zamanı ortamının, ara katman yazılımının, hizmet ve kütüphaneleri içeren bir yazılım yığını biçiminde tasarlanmıştır. Bu mimari, belki de en iyi aşağıdaki görseldeki gibi temsil edilebilir. Telefonlarımızda yüklü olan ve son kullanıcıya hitap eden Applicaiton Katmanından, Geliştiricilerin üzerinde uygulama içinde ulaştığı Application Framework ve Libraries katmanı ve en son olarak Çekirdek katmanı olmanı olmak üzere 4 temel katmandan oluşmaktadır.
Android katmanlarına en alt katmandan başlayarak bakalım.
Linux Çekirdeği
Android çekirdeği, Android yazılım yığınının altına yerleştirilir ve aygıt donanımı ile Android yazılım yığını üst katmanları arasında soyutlama düzeyi sağlar. Linux sürüm 2.6'ya dayanarak, çekirdek, aygıt ekranı, Wi-Fi ve ses gibi donanım için bir ağ yığını ve aygıt sürücüsü sağlamanın yanı sıra, önleyici çok görevli, bellek, işlem ve güç yönetimi gibi düşük düzeyli çekirdek sistem hizmetleri sunar.
Android'in yalnızca Linux çekirdeğini kullandığını belirtmek önemlidir. Bununla birlikte, Linux çekirdeğinin başlangıçta geleneksel bilgisayarlarda masaüstü ve sunucular şeklinde kullanılmak üzere geliştirildiğini belirtmek gerekir. Aslında, Linux şu anda en kritik kurumsal sunucu ortamlarında konuşlandırılmıştır. Bu, bugünün mobil cihazlarının gücünü ve bu yazılımın Android yazılım yığınının kalbinde bulduğumuz Linux çekirdeğinin verimliliğini ve performansını kanıtlıyor.
Android Çalışma Zamanı Modülü – Dalvik Sanal Makinesi
Daha önce belirtildiği gibi, Linux çekirdeği, birden fazla işlemi eş zamanlı olarak yürütmeye izin veren çok görevli bir yürütme ortamı sağlar. Bu nedenle, her bir Android uygulamasının doğrudan bir süreç olarak doğrudan Linux çekirdeği üzerinde çalıştığını varsaymak kolay olacaktır. Aslında, bir Android cihazında çalışan her uygulama, Dalvik sanal makinenin (VM) kendi örneğinde olduğu gibi.
Sanal makinelerde uygulamaları çalıştırmak bir takım avantajlar sağlar. Öncelikle uygulamalar, işletim sistemiyle veya diğer uygulamalarda zararlı olarak (kasten veya başka şekilde) müdahale edemeyecekleri veya aygıt donanımına doğrudan erişemeyecekleri için sanal alanlara ayrılmıştır. İkincisi, bu zorla soyutlama seviyesi, uygulamaları belirli bir donanıma bağlanmamaları nedeniyle platformları tarafsız hale getirir.
Dalvik sanal makinesi, Google tarafından geliştirilmiş ve düşük seviyeli işlevler için altta yatan Linux çekirdeğine güveniyor. Bellek kullanımı açısından standart Java VM'den daha etkilidir ve özellikle bir mobil cihazın kaynak kısıtlamaları içinde birden fazla örneğin verimli bir şekilde çalışmasına izin vermek için tasarlanmıştır.
Bir Dalvik VM içinde çalıştırmak için, uygulama kodu, standart Java sınıf kodundaki dosyalardan standart Java bayt kodu yerine% 50 daha küçük bellek paylaşımlı Dalvelik yürütülebilir (.dex) biçimine dönüştürülmelidir. Standart Java sınıfı dosyalar Android SDK ile birlikte gelen dx aracını kullanarak genellikle (her zaman değil de) Dex biçimine dönüştürülebilir.
Android Çalışma Zamanı Modülü – Temel Kütüphaneler
Android Core Kütüphaneleri (Dalvik Kütüphaneleri olarak da anılır) üç ana kategoriye ayrılır ve bunların her biri ayrı bir açıklama ister:
Dalvik VM Özel Kütüphaneler
Bu ağırlıklı olarak doğrudan Dalvik VM'nin bir örneğiyle etkileşim kurmak için kullanılan ve çoğu Android uygulaması geliştiricisi tarafından kullanılacak gibi görünmeyen bir dizi kütüphane.
Java birlikte çalışabilirlik kitaplıkları
Android uygulamaları çoğunlukla Java programlama dili kullanılarak geliştirilmektedir. Standart Java geliştirme ortamı, çekirdek Java çalışma zamanı kitaplıklarında bulunan geniş bir sınıf dizisini içerir. Bu kütüphaneler, dize işlenmesi, ağ oluşturma ve dosya işleme gibi görevler için destek sağlar (ancak birkaç ad verir) ve platforma bakılmaksızın Java geliştiricileri tarafından da yaygın şekilde kullanılmaktadır.
Java birlikte çalışabilirlik kitaplıkları, bir Dalvik VM içinde çalışan uygulamalar tarafından kullanılmak üzere uyarlanmış ve dönüştürülmüş olan Standart Java çekirdek kitaplıklarının bir alt kümesinin açık kaynaklı bir uygulamasıdır (Apache Harmony projesine dayalıdır).
Android Kitaplıklar
Bu kategori, Android'in geliştirilmesine özgü Java tabanlı kitaplıkları kapsar. Bu kategorideki kütüphanelere örnek olarak, kullanıcı arayüzü oluşturma, grafik çizimi ve veritabanı erişimini kolaylaştıran uygulamalara ek olarak uygulama çerçeve kütüphaneleri de dahildir.
Android geliştiricisinin kullanabileceği bazı temel çekirdek Android kitaplıklarının bir özeti şöyledir:
Android.app – Uygulama modeline erişim sağlar ve tüm Android uygulamalarının temel taşını oluşturur.
Android.content – Uygulamalar ve uygulama bileşenleri arasında içerik erişimi, yayınlama ve mesajlaşmayı kolaylaştırır.
Android.database – İçerik sağlayıcılar tarafından yayınlanan verilere erişmek için kullanılır ve SQLite veritabanı yönetim sınıflarını içerir.
Android.graphics – Renkler, noktalar, filtreler, dikdörtgenler ve tuvaller içeren düşük düzeyli 2D grafik çizim API'si.
Android.hardware – ivmeölçer ve ışık sensörü gibi donanıma erişim sağlayan bir API sunar.
Android.opengl – OpenGL ES 3D grafik işleme API'sine Java arabirimi.
Android.os – İletiler, sistem hizmetleri ve işlemler arası iletişim dahil olmak üzere standart işletim sistemi hizmetlerine erişim sağlayan uygulamalar sağlar.
Android.media – Ses ve videonun oynatılmasını sağlamak için sınıflar sağlar.
Android.net – Ağ yığınına erişim sağlayan bir dizi API. Cihazın kablosuz yığınına erişim sağlayan android.net.wifi içerir.
Android.provider – Takvim ve iletişim uygulamaları tarafından sağlananlar gibi standart Android içerik sağlayıcısı veritabanlarına erişim sağlayan bir dizi kolaylık sınıfı.
Android.text – Cihaz görüntüsündeki metni işlemek ve değiştirmek için kullanılır.
Android.util – Dizgi ve sayı dönüştürme, XML işleme ve tarih ve saat değiştirme gibi görevleri yerine getirmek için kullanılan yardımcı program sınıfları kümesidir.
Android.view – Uygulama kullanıcı arayüzlerinin temel yapı taşları.
Android.widget – Düğmeler, etiketler, liste görünümleri, düzen yöneticileri, radyo düğmeleri vb. Gibi önceden hazırlanmış kullanıcı arabirimi bileşenlerinin zengin bir koleksiyonu.
Android.webkit – Uygulamalara web tarama yetenekleri yerleştirilmesine izin verilen bir dizi sınıf.
Java tabanlı temel kitaplıkları Android çalışma zamanında kapattıktan sonra, dikkatimizi Android yazılım yığınının bu katmanında bulunan C / C ++ tabanlı kütüphanelere çevirme zamanı geldi.
C / C ++ Kitaplıklar
Bir önceki bölümde özetlenen Android çalışma zamanı çekirdeği kitaplıkları Java tabanlıdır ve Android uygulamaları yazan geliştiriciler için birincil API'ler sağlar. Bununla birlikte, çekirdek kütüphanelerin fiili işlerin pek çoğunu gerçekleştirmediklerini ve aslında C / C ++ tabanlı kütüphanelerin etrafında aslında "Java sarıcıları" olduklarını not etmek önemlidir. Örneğin, cihaz görüntüsünde 3D grafikler çizmek için android.opengl kitaplığına çağrı yaparken, kitaplık aslında sonuçta çizim görevlerini yerine getirmek için temel Linux çekirdeğiyle çalışan OpenGL ES C ++ kitaplığına çağrılar yapar .
2D ve 3D grafik çizimi, Güvenli Yuva Katmanı (SSL) iletişim, SQLite veritabanı yönetimi, ses ve video oynatma, bitmap ve vektör yazı tipi oluşturma, ekran alt sistemi ve grafik katmanı dahil olmak üzere geniş ve çeşitli işlevleri yerine getirmek için C / C ++ kitaplıkları bulunur. Yönetimi ve standart C sistem kitaplığının (libc) bir uygulaması.
Uygulamada, tipik Android uygulaması geliştiricisi bu kütüphanelere yalnızca Java tabanlı Android çekirdek kitaplığı API'leri aracılığıyla erişecektir. Bu kütüphanelere doğrudan erişime ihtiyaç duyulması halinde, bunun amacı, Java programlama dili olmayan yerli yöntemlerini (C ve C ++ gibi) yerel olarak çağırmak olan Android Native Development Kit (NDK) kullanılarak elde edilebilir. Java Native Interface (JNI) kullanarak Java kodunda.
Uygulama Çerçevesi
Uygulama Çerçevesi, Android uygulamalarının çalıştırıldığı ve yönetildiği ortamı topluca oluşturan bir dizi hizmettir. Bu çerçeve, Android uygulamalarının yeniden kullanılabilir, değiştirilebilir ve değiştirilebilir bileşenlerden oluşturulduğu kavramını uygular. Bu konsept, bir uygulamanın yeteneklerini ilgili veri ile birlikte yayımlayabilmesi ve böylece diğer uygulamalar tarafından bulunması ve tekrar kullanılabilmesi için bir adım daha ileri götürülmüştür.
Android çerçevesinde aşağıdaki temel hizmetler bulunur:
Etkinlik Yöneticisi – Uygulama yaşam döngüsü ve etkinlik yığınının tüm yönlerini kontrol eder.
İçerik Sağlayıcıları – Uygulamaların diğer uygulamaları ile veri yayımlama ve paylaşma izni verir.
Kaynak Yöneticisi – Dizeler, renk ayarları ve kullanıcı arabirimi düzenleri gibi kodlamanın gömülü olmayan kaynaklara erişim sağlar.
Bildirimler Yöneticisi – Uygulamaların, kullanıcılara uyarı ve bildirim görüntülemesine izin verir.
View System – Uygulama kullanıcı arabirimleri oluşturmak için kullanılan genişletilebilir bir görünüm grubu.
Paket Yöneticisi – Uygulamaların, cihazda o anda yüklü olan diğer uygulamalar hakkında bilgi bulabileceği sistem.
Telefon Yöneticisi – Durum ve abone bilgileri gibi cihazda bulunan telefon hizmetleri hakkında uygulamaya ilişkin bilgi sağlar.
Konum Yöneticisi – Bir uygulamanın konum değişikliği ile ilgili güncellemeleri almasına izin veren konum servislerine erişim sağlar.
Uygulamalar
Android yazılım yığınının en üstünde yer alan uygulamalar var. Bunlar hem belirli Android uygulamasına (örn. Web tarayıcısı ve e-posta uygulamaları) verilen yerel uygulamaları ve cihazı satın aldıktan sonra kullanıcı tarafından yüklenen üçüncü taraf uygulamaları içerir.
Özet
Android mimarisinin ana hedefleri hem uygulama yürütülürken hem de uygulama tasarımında yeniden kullanımın uygulanmasında performans ve verimliliktir.