Android Sürümlerinin Yakın Geçmişi
Android KitKat sürümüne gelene kadar son 3 Android sürümünde büyük yenilikler oldu. Bu yazıda kullanıcıları ve biz geliştiricileri ilgilendiren yenilikleri bulacaksınız.
Android platformu, işletim sistemiyle, orta katman (middleware) yazılımlarla ve temel uygulamalarla örülü, kocaman bir yazılım bütünü. Bu yazılım bütünü 1 milyarın üzerinde akıllı telefon ve tablette çalışıyor. Android denilince esas oyuncu olarak akla önce Google geliyor olsa da, Android’in geliştirilmesini sağlayan sektör oyuncularını Open Handset Alliance biraraya getiriyor.
Bu yazıda Linux çekirdeği temelinde çalışan işletim sisteminin, platform ile birlikte değişen API sürümlerinin detaylarına değineceğiz. API numarasını artırmamış ufak sürüm güncellemelerine değinmediğim yazımızın, API geçişlerinde nelerin değiştiğini merak eden ve yeniliklere uyum sağlamak isteyen geliştiriciler tarafından keyifle okunacağını düşünüyorum.
Android KitKat öncesi telefonlar ve tabletler
Eskiden platformun iki tür çeşitlemesi (flavor) vardı. Biri, telefonlara özel yani daha çok küçük ekranlara yönelik iken, diğeri tabletlere özel olan Android 3.0 HoneyComb idi. Yine de tüm tabletler bu sürümü kullanamadı. Bazıları Android 2.x kullanmaya devam etti.
Şu an platformun son sürümü KitKat. Bu sürüm kullanıcılar ve geliştiriciler için birçok yenilikle geldi. Daha az kaynak tüketimi bunlardan en önde duranı. Aşağıda Ice Cream Sandwich, Jelly Bean ve sonrasındaki KitKat platformlarının gelişimini API seviyesinde ele alıp, gelen bazı yeniliklere geliştiriciler ve son kullanıcılar açısından bakacağız ve bu platform sürümlerinin pazar paylarına bakacağız.
Önce yandaki pazar paylarına göz atalım. Tablo, Google’ın her ay yayınladığı istatistiklere göre Kasım 2013 itibariyle Android sürümlerinin kullanım oranlarını gösteriyor.
Bu rakamlara göre dünya çapındaki Android cihazlarının %54’ünün Jelly Bean kullandığı görülebiliyor.
Kaynak: http://developer.android.com/about/dashboards/index.html
Şimdi, Ice Cream Sandwich’ten başlayarak KitKat’ın ilk sürümünün yayınlanmasına kadar geçen sürede Android platformunda ne tür yenilikler olduğuna, uygulama geliştiriciler ve kullanıcılar gözüyle bakalım.
Android Ice Cream Sandwich (4.0 / API 14)
Uzun bir aradan sonra, Android 4.0 sürümü şu yeni özellikleri beraberinde getirdi:
- Telefon ve tabletler için aynı düz arayüz
- Varsayılan olarak Roboto yazı tipi
- Önceki sürümlerde olmayan zengin bildirimler
- Yeniden boyutlandırılabilir ana ekran widget’ları
- Gelişmiş kamera yetenekleri
- Izgara şeklinde tasarlanmış galeri
- Dâhili fotoğraf düzenleme aracı
- Dâhili ekran görüntüsü alma aracı
- Yüz tanıma ile kilit açma olanağı
- Veri kullanımına bakma ve sınır koyma olanağı
Ice Cream Sandwich, Adobe firması tarafından Flash Player’ın resmen desteklendiği son sürüm oldu.
Geliştiriciler açısından Ice Cream Sandwich’in sunduğu bazı önemli yenilikleri şöyle sıralayabiliriz:
- Tabletlere de telefonlara da aynı UI Framework
- Yeni davranışlar eklenmiş ActionBar (ekran dar olduğunda navigasyon çubuğunun yerini değiştirmesi. Örnek için bkz: Adding Navigation Tabs)
- GridLayout (İçindeki view nesnelerini kare kare ızgara şeklinde barındıran yeni bir layout)
- Tüm pencerelere donanım hızlandırması: Performans ve daha akıcı animasyonlar için varsayılan olarak donanım hızlandırılması açıldı.
- Yazım denetimi servisi: Kendi yazım denetimi servisini gerçeklemek isteyen geliştiriciler, servislerini belli sınıflardan türetip bunu yapabilir.
- Social API: ContactsContract içerik sağlayıcısı tarafından sağlanan Contact API’si, artık cihaz sahibinin profili, cihazında kurulu sosyal ağ uygulamalarındaki arkadaşları gibi sosyal ağ odaklı bilgileri sağlar hale getirildi.
- Calendar API: Artık takvimler oluşturmak/düzenlemek, etkinlikler, hatırlatmalar, uyarılar eklemek, düzenlemek ve silmek için Calender Provider kullanılabilir. Uygulamanıza takvim okuma/düzenleme izni vermenize gerek kalmadan Takvim Intent‘leri vasıtasıyla bu işlemleri yapabilirsiniz.
- Android Beam: NFC destekli iki Android ICS yüklü cihazı birbirine dokundurarak aralarında veri aktarma olanağı.
- Text-to-speech API: Artık farklı TTS motorlarını kullanabilmek daha kolay.
Android Ice Cream Sandwich (4.0.3-4.0.4 / API 15)
İlk sürümünün yayınlanmasından 2 ay sonra ICS, kararlılık, performans ve hata giderme açısından bir güncelleme daha aldı. API seviyesi bu güncellemeyle 15’e yükseltildi.
4.0.3 sürümüyle
- Social Stream API: Uygulamalar, ContractsContract içerik sağlayıcında yapılan geliştirmeyle cihaz sahibinin ve kişi listesindeki kişilerin durum güncellemelerine, yer bildirimlerine yani sosyal akışlarına erişebilir oldular.
- Calendar Provider için güncellemeler: Artık hesap ve türüne göre takvimlerde renklendirme yapılabiliyor. Bunun yanındakatılımcılar için bazı yeni tipler ve durum güncellemeleri de eklendi.
- Erişilebilirlik geliştirmeleri.
Android Jelly Bean (4.1 / API 16)
Google, yeni Android sürümü Jelly Bean‘i 27 Haziran 2012’deki Google IO etkinliğinde ilan etti. Kullanıcı arayüzünde işlevsellik ve performans açısından önemli yeniliklerle gelen Jelly Bean, 4.1 sürümüyle API seviyesini 16’ya çekti.
Project Butter isimli projeyle kullanıcıya akıcı bir grafik deneyimi sağlanması için işlemci, grafik kartı ve sanal belleğin daha optimize bir şekilde çalıştırılarması hedeflendi. Böylece dokunma tahmini ve dikey eşzamanlama zamanı artırılmış ve arayüzde gösterilen kare hızı saniyede 60 kareye çıkartılarak daha kaygan arayüzler sağlanmış oldu. Project Butter’ın Android arayüzüne kattığı hızı buradaki ağır çekim videoyu izleyerek fark edebilirsiniz.
İlan edildikten sonra 9 Temmuz 2012’de kodları açılan Android 4.1, resmi olarak ilk önce Nexus 7 tabletlerde yerini aldı. Android 4.1 Jelly Bean, kullanıcılar için şu yenilikleri içeriyor:
- Daha hızlı tepki veren Android
- Google Now (Kullanıcılar için bir asistan uygulaması)
- Varsayılan internet tarayıcısı olarak Google Chrome
- Sesli arama
- İyileştirilmiş kamera uygulaması
- Genişletilmiş bildirimler
- İki yönlü metinler ve artırılmış dil desteği
- Yeniden boyutlandırılabilir widget’lar
- Kişi listesinde Google+’tan gelen yüksek çözünürlüklü fotoğraflar
Geliştiriciler açısından Jelly Bean’a baktığımızda, bir geliştirici konferansında ilan edilmesini daha iyi anlayabiliyoruz. Bu sürümde gelen bazı yenilikler şunlardı:
- Project Butter ile daha akışkan animasyonlar
- Görselli, eylemleri olan bildirimler (Bkz: Android 4.1 Notifications)
- Activity zinciri (stack) üzerinde “Yukarı” gidişler için kolaylıklar (Bkz: android:parentActivityName)
- Animasyon kullanarak Activity başlatma olanağı (Bkz: Android 4.1 Animation)
- Sistem arayüzünü (System UI) daha iyi yönetmek için yeni bayraklar
- Roboto font ailesine yeni üyeler
- Yeni izinler (Bkz: Android 4.1 Permissions)
- Kendi kullanıcı ID’si ile ayrı bir iş sürecinde çalışabilen izole servisler (Bkz: android:isolatedProcess). Böyle bir servise farklı bir süreçten (process) erişeceğiniz için kuracağınız yapı da IPC yapısında olacaktır.
Jelly Bean’ın ilan edildiği tarihte Google, Cloud-to-messaging (C2DM) isimli bulut mesaj servisini betadan çıkardı ve Google Cloud Messaging (GCM) ismiyle duyurdu. Jelly Bean’ın ilanıyla birlikte Google Play’in “Smart Update” veya “Delta Update” adı verilen güncelleme özelliği de devreye alındı. Buna göre Google Play Store’da tutulan bir uygulama eğer güncelleme almışsa, bu güncellemeyi indirecek kullanıcılar uygulamanın sadece değişen kısımlarını indiriyorlar.
Android Jelly Bean (4.2 / API 17)
2012 yılının Kasım ayına gelindiğinde Google, Nexus cihazları için Jelly Bean’in 4.2 sürümünü yayınladı. “Jelly Bean’ın yeni bir çeşitlemesi” olarak tanıtılan 4.2 ile kullanıcılar için güzel yenilikler de beraberinde geldi.
Jelly Bean 4.2’nin kullanıcılar için sağladığı yenilikleri şöyle özetlemek mümkün:
- Fotoğraf küresi özelliğiyle her açıdan panoramik fotoğraf
- Kilit ekranında da çalışan widget’lar
- Birden fazla kullanıcı
- Cihaz şarj olurken ya da kızağına konduğunda çalışan Daydream
- Miracast üzerinden harici ekran kullanabilme özelliği (kablolu veya kablosuz başka bir görüntü cihazına görüntü aktarmak, ekranın belli köşesiyle sunum yapmak için ideal)
- Sağdan sola yazılan diller için tamamiyle yerel destek
Jelly Bean 4.2, geliştiriciler için özellikle güvenlik ve performans açısından birçok yenilikle geliyor:
- WebView için performans iyileştirmeleri
- Nested Fragments (İç içe fragment’lar): İhtiyaç olduğunda Fragment’ın içinde yeni bir Fragment oluşturmak, dinamik ve tekrar kullanılabilir arayüzler için daha verimli bir yol haline geldi.
- Settings.System sınıfıyla sağlanan bazı cihaz ayarları artık sadece salt okunabilir. Eğer Android 4.2 ve yukarısı çalıştıran bir cihazda bu ayarları değiştirmeye kalkışırsanız bu işlem başarısız olacaktır. Bu arada bu Settings.System sınıfındaki ayarlar artık Systems.Global sınıfında yer alıyor. Bununla beraber eğer android:targetSdkVersion ve android:minSdkVersion değeri 17’nin aşağısında olan uygulamalarınızı Android 4.2 ve üzerinde çalıştıracak olursanız, yine Systems.Global sınıfındaki ayarları değiştiremezsiniz.
- Eğer uygulamanızda kullanıcının lokasyon bilgisini almak için ACCESS_COARSE_LOCATION iznini alıyor fakat ACCESS_FINE_LOCATION iznini almıyorsanız, eski Android sürümlerine göre daha az hassas bir lokasyon bilgisi alırsınız. Sadece ACCESS_COARSE_LOCATION izniyle lokasyon bilgisi almaya çalıştığınızda şehir seviyesinden daha hassas bir bilgi beklememelisiniz.
- Artık WebView kullandığınız targetSdkVersion değeri 17 ve üzeri olan uygulamalarınızda, eklenmiş bir güvenlik katmanıyla Javascript metotlarını Android kodlarınıza daha güvenli bir şekilde bağlayabilirsiniz. (Bkz: Javascript kodunu Android koduna bağlamak)
- Content Provider’lar artık varsayılan olarak dışarı açılmıyor. Eğer Content Provider’ınızın diğer uygulamalar tarafından kullanılmasını sağlamak istiyorsanız AndroidManifest.xml’de provider tanımlarken android:exported özniteliğini “true” yapmalısınız.
Android Jelly Bean (4.3 / API 18)
Yeni Jelly Bean “Daha tatlı Jelly Bean” sloganıyla 24 Temmuz 2013’te duyuruldu.
- Numara çeviricide otomatik tamamlama özelliği.
- Bildirimleri engelleme özelliği.
- Kameradaki fotosfer özelliğinde ilerlemeler.
- Kamera uygulamasının arayüzünde güncelleme.
- 4K çözünürlüklü ekranlarda çalışabilme.
- Tabletler için kısıtlanmış profil oluşturma olanağı.
- Bluetooth düşük enerji teknolojisi desteği
gibi yenilikler Android 4.3’ün ilk akla gelen yeniliklerinden. Geliştiriciler için de API 18 ile güzel yenilikler geldi.
- OpenGL ES 3.0 grafik desteği
- Log işlemi ve hata ayıklama araçlarında geliştirmeler: Artık Systrace aracında donanım birimleri, Dalvik Sanal Makinesi ve çöp toplayıcıya ilişkin daha fazla ayrıntı alabilmek mümkün.
- Sistem seviyesinde geofence (bir alana girildiğini algılama) desteği.
- Yeni Wifi tarama API’leriyle WiFi kapalı olsa bile arkaplanda WiFi lokasyon bilgisini alabilme olanağı.
- VP8 video kodlama yeteneği.
- Ekran üzerinde GPU işlemlerini görme olanağı.
Geliştirici seçeneklerinden etkinleştireceğiniz “Profile GPU Rendering” seçeneğiyle ekranınızın üstüne uygulamaların kare hızlarını çizgi veya çubuk grafik olarak çizdirebilirsiniz. Her View’ın çizilme komutlarını mavi renkten, es geçilen komutları turuncu renkten ve tamamlanması beklenen komutları da sarı renkten anlayabilirsiniz. Yeşil çizgi çizim oluşturmadaki 60 milisaniyelik eşiği ifade ediyor. Bu süreyi geçen çizimlerinizin süresini düşürmek için Systrace aracındaki bilgilerden yararlanabilirsiniz. Görünen her Activity için çizim yapıldığı gibi en alttaki dolaşım çubuğu ve en üstteki bildirim çubuğu için de çizim yapılır.
Android KitKat (4.4 / API 19)
Google, uzun zamandır Key Lime Pie koduyla beklenen sürüm yerine yeni Android’i çikolatalardan bildiğimiz KitKat kod adıyla ve 4.4 sürümüyle 3 Eylül 2013’te duyurdu. Google içinde Project Svelte olarak bilinen KitKat ile daha az kaynak (bellek, işlemci, pil) tükete bir Android hedeflendi. Kablosuz yazıcılara destek, geniş çaplı erişilebilirlik desteği, yenilenmiş WebView yapısı, yeni sanal makine (ART), geliştirilmiş NFC desteği gelen yeniliklerden birkaçı.
Android KitKat, kullanıcılara esas olarak performansı getiren bir sürüm oldu çünkü çok az sistem kaynağı harcıyor. Bir cihazın KitKat ile çalışabilmesi için 512 MB sanal bellek yetiyor. Bu değer de KitKat’ın günümüzde çalışır durumda olan akıllı telefonların neredeyse tamamıyla sorunsuz gidebileceği anlamına geliyor. Tabi burada iş cihaz üreticilerine düşüyor. Çünkü daha önceki sürümlerde olduğu gibi Android’in resmi depolarından KitKat’ı alıp kendi cihazlarındaki donanıma göre elden geçirmeleri gerekiyor. KitKat bunun yanında kullanıcılara
- Yarı saydam bir sistem arayüzü
- Desteklenen cihazlarda (şu an için Nexus 5’te var) adım algılama ve sayma desteği,
- Kablosuz yazıcıları kullanabilme olanağı,
- Yenilenen altyapı ile Web içeriğini daha hızlı görüntüleme ve etkileşime geçebilme,
- Sistem çapında ek açıklamalar ile daha erişilebilir bir arayüz,
sunuyor.
Geliştiriciler açısından Android KitKat
Geliştiriciler açısından Android KitKat, en az Jelly Bean kadar doyurucu yeniliklerle geldi:
- KitKat ile beraber artık kullanıcının SMS verilerine tek bir uygulama erişebiliyor. Sadece kullanıcının seçtiği uygulama SMS_DELIVER_ACTION yayını alabiliyor. Dolayısıyla bu yayını alabilecek uygulama SMS veri sağlayıcısına her türlü ayrıntıyı vermekten de sorumlu oluyor.
- Uygulamanız KitKat ile birlikte harici depolama birimindeki paylaşılan dosyalara artık izin (READ_EXTERNAL_STORAGE) olmadan erişemeyecek. Ancak bununla beraber uygulamanıza has dizine (getExternalFilesDir() ile ulaşılan) erişmek için bu izne artık gerek de görülmüyor.
- Eğer API 19 ve üzeri sürümleri destekleyen ve WebView kullanan bir uygulamanız varsa, WebView hususunda uygulamanız eski sürümlere göre farklı davranabilir. Yeni özellikler eklenen WebView, artık Chromium altyapısını kullanıyor. API 19 ve üzerini kullanacak uygulamalarınız için WebView ile ne tür değişiklikler yapacağınızı öğrenmek istiyorsanız “Android 4.4’teki WebView’a Geçiş” yazısına bir göz atınız.
- Artık gerçek anlamda tam ekran uygulama deneyimini sağlayabilmek Immersive full-screen mode var. Artık SYSTEM_UI_FLAG_IMMERSIVE bayrağıyla alttaki dolaşım çubuğunu dahi gizleyerek tam ekran deneyimini kullanıcılarınıza sağlayabilirsiniz.
- Geliştirilmiş bildirim dinleyicisi (notification listener) ile sistem tarafından gönderilen bildirimlerle ilgili daha fazla veri elde edebilirsiniz.
- AlarmManager kullanan uygulamalarınızda, set() veya setRepeating() metotlarıyla özel bir zamanı hedef alan alarmlarınız KitKat ile beklediğinizden farklı çalışabilir. KitKat ile Android, güç verimliliği açısından alarmları artık farklı ele alıyor. (Bkz: If your app uses AlarmManager…)
- Artık uygulamanızda herhangi tipte bir belgeyi yazdırma ihtiyacı duyduğunuzda yeni Printing Framework’ten yararlanabilirsiniz.
- VideoView nesnesi artık canlı yayınlarda WebVVT altyazılarını destekliyor.
- TYPE_SENSOR_DETECTOR ve TYPE_SENSOR_COUNTER olmak üzere iki yeni tipte sensörü KitKat ile destekleyen cihazlar üzerinde kullanabiliyorsunuz.
Ice Cream Sandwich ile başlayan ve KitKat ile 4.4 olarak yoluna devam eden Android sürümlerindeki gelişmeler bu şekilde.
Android, daha fazla sayıda ve çeşitte cihaz ile daha hızlı, daha hatadan arındırılmış ve kaynak tasarrufuyla çalışarak yoluna devam ediyor. Geliştiricilerin ve kullanıcıların hayatını kolaylaştıran, daha fazla teknolojiye olanak sağlayan yapısıyla gelişimini sürdürüyor.
Geliştirici olarak sizin Android’in gelişimine yorumunuz nedir? Yeni sürümlerin gelişmelerine uygulama anlamında karşılık verebiliyor musunuz? Tüm bunların yanında, geriye dönük uyumluluk ile ilgili geliştiricilere ne söylemek istersiniz?
Kaynak:
- http://developer.android.com/about/versions/
- http://en.wikipedia.org/wiki/Android_version_history
- http://socialcompare.com/en/comparison/android-versions-comparison
- Açılış görseli için etnyk isimli Flickr kullanıcısına teşekkürler.