Android Platform Version
Merhaba herkese. Bu yazımda size android platform versiyonlarının ne olduğunu ve hangisini kullanmak gerektiğini ve versiyon farklılıkların ne olduğunu dilimin döndüğü kadarıyla anlatmaya çalışacağim keyifli okumalar.
Android Nedir ?
Öncelikle android ne olduğundan bahsedelim. Android, temel olarak akıllı telefonlar ve tabletler gibi dokunmatik ekranlı mobil cihazlar için tasarlanmış, Linux çekirdeğinin ve diğer açık kaynaklı yazılımların değiştirilmiş bir sürümünü temel alan bir mobil işletim sistemidir. Android, Google developerlar tarafından geliştirilmiştir. Mobil işletim olarak sürülen ve ilk kez Eylül 2008'de piyasaya sürülen ilk ticari Android cihazla 2007'de tanıtıldı.
Android API Nedir ?
Her Android Framework API’sinin integer cinsinden tekil (unique) bir API Level değeri bulunur. Framework API, uygulamamız ile işletim sisteminin haberleşmesini ve etkileşimde bulunmasına yarar. Android platformu, uygulamaların temeldeki Android sistemiyle etkileşimde bulunmak için kullanabileceği bir framework API sağlar.
Peki bir framework API nelerden oluşur ?
- Temel paketler ve sınıflar kümesi.
- Bir manifest dosyası bildirmek için bir dizi XML öğesi ve nitelik.
- Kaynakları bildirmek ve bunlara erişmek için bir dizi XML öğesi ve öznitelik.
- Android geliştirmek için oluşan amaçlar.
- Uygulamaların talep edebileceği izin ve sisteme dahil edilmek için istenen izin uygulamaları.
Android platformun birbirini izleyen her sürümünde sunduğu Android uygulama frameworku API’sına göre güncelleme isteyebilir. Peki yapılan güncellemeler sonrasında bu API’dan sonra kullanımaz hale gelmiyor ve yeni gelen framework API önceki sürümleriyle uyumlu kalabilmesi için tasarlanılıyor. Başka bir deyişle API’daki çoğu değişiklik eklemelidir ve yeni veya değiştirme işlevi sunmaktadır. API’ın parçaları yükseldikçe, değiştirilen eski parçalar kullanımdan kaldırılır ancak tam olarak silinmez ki mevcut uygulamaların bunları kullanmaya devam edebilir olması sağlanır böylece. Bazı önemli durumlarda tam kaldırılma sağlanması olabilmektedir güvenlik ve sistem sağlamlığı açısından önemli değişikliklerde silme veya değiştirme yapılır.
Android API levellerin kullanımları
API levelleri, kullanıcılar ve uygulama geliştiricileri için mümkün olan en iyi deneyimi sağlamada önemli bir rol oynar:
- Uygulamaların, ihtiyaç duydukları framework API gözden geçirmeye ve açıklamasına olanak sağlar.
- Eğer o uygulama o sürümde desteklemiyorsa kullanıcılara uygulamanın kurulumunda yüklenmez ve bunun hakkında bilgiler sağlar.
- Her Android platform sürümü, API leveli Android sisteminin kendisinde dahili olarak depolar.
Android geliştiriciler için geliştirme hususları
İleriye dönük uygulama özelliği
- Android uygulamaları genellikle Android platformunun yeni sürümleriyle ileriyle uyumludur çünkü API frameworkun neredeyse tümü eklemelidir, API’nin herhangi bir sürümünde bir Android platformunun sonraki sürümleri ve daha fazla yüksek API düzeyleri ile ileriye dönük olarak uyumludur.
Geriye dönük uygulama özelliği
- Android uygulamaların, derlendikleri sürümden daha eski Android platforma ihtiyaç duymaz ancak her yeni sürümde değişen API parçaları olduğunda ileriki uygulamaların kullanabildiği özellikleri kullanması için API level değişimi yapması gerekmektedir.
Bir platform seçme ve API seviyesi seçme
- Uygulamamızı geliştirirken, uygulamayı derleyeceğimiz platform sürmümüzü seçmek gerekecektir. Genel olarak uygulamamızı destekleyebilceği ve mümkün olan en düşük sürüme göre derlemeliyiz.
Minimum API seviyesini belirlemek
- Eğer ki API’leri veya sistem özelliklerini kullanan bir uygulama oluşturursanız, android: minSdkVersion özniteliğini en son platform sürümünün API Düzeyine ayarlamalısınız. Bu da uygulamanızın cihazlarında düzgün çalışabilmesini sağlar.
API yüksel levellerde uygulama testi
- Uygulamamızı derledikten sonra, uygulamanın android: minSdkVersion özniteliğinde belirtilen platformda test ettiğinizden emin olmalıyız. Bunu yapmak için daha yüksek bir API emülatör kullanabiliriz.
<uses-sdk android:minSdkVersion="integer"
android:targetSdkVersion="integer"
android:maxSdkVersion="integer" />
Google Play, uygulamanızı platform sürümü gereksinimlerini karşılamayan cihazlardan filtrelemek için uygulamanızın manifestinde belirtilen <uses-sdk> özelliklerini kullanır. Bu özellikleri ayarlamadan önce, minSdkVersion, targetSdkVersion ve maxSdkVersion değerlerini vermeliyiz. Bu kodu da <manifest> dosyasının içine koymamız gerekiyo. Manifest kodunu da sizinle paylaşımda bulunayım.Burada belirttiğimiz değer ile uygulamamızın en düşük hangi Android sürümünde çalışabileceğini belirtiyoruz.Uygulamamızın bir cihaza yüklenebilmesi için cihaz üzerinde koşan işletim sisteminin API Level değeri, bizim belirttiğimiz “minSdkVersion” değerinden düşük olmaması gerekiyor, aksi halde uygulamayı cihazımıza kuramayızBurada belirttiğimiz değer ile uygulamamızı belirtilen API Level’de düzgün bir şekilde çalıştığını garanti etmiş oluyoruz. Eğer “targetSdkVersion” değeri belirtilmemişse varsayılan değer olarak “minSdkVersion” değeri verilir. maxSdkVersion uygulamanın üzerinde çalışmak üzere tasarlandığı maksimum API Düzeyini belirten bir tam sayı.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="string"
android:sharedUserId="string"
android:sharedUserLabel="string resource"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
. . .
</manifest>
Burdaki fonksiyonların detaylarını burdan ulaşabilirsiniz.
Gelelim asıl mevzumuza hangisi kullanmalı hangisini seçmeliyiz. Android kullanıcıların tabiki de en son sürümü kullanması uygulamalar açısından çok iyidir lakin geliştiriciler için bazen böyle olmayabiliyor. Bizim developer olarak hangisini kullanmamız gerektiğini seçmemiz gerek onu anlatmaya çalışcam. Öncellikle Android Kitkat ile Android Oreo kıyaslaması yaparak başlayalım. Diğer tüm API özelliklerini bu link üzerinden bakabilirsiniz.
Android Oreo(8.1) vs Android Kitkat(4.4)
Öncelikle seçeceğimiz API’ları tabiki yapcağımız uygulamaya göre seçmemiz gerekiyor biz developerlar olarak çünkü belirlememiz gerek konu minSdkVersion peki hangisini seçmeliyiz. Ayrıca her paketler arasında ne farklar olduğunu google bizlere bildirmektedir. Bkz:API level 19–18 ve 26–27
Android Kitkat sürümünde printing framework, SMS provider, wireless and connectivity, multimedia, animation and graphics, user content, user input ve user interface gibi çok önemli konularda geliştirmeler yapıldı. Tabiki android 4.0 Kitkat üzerine geliştirmeler ile birlikte gerçekten şuan piyasada cumulative distribution (kümülatif dağılım) yani piyasada şuan kullanabilirlik olarak düşünebiliriz. Android 8.1 ile Android 4.4 arasında belli özellikler user interface ve başlıca güvenlik olmak üzere bir sürü yenilik eklenmiştir. En önemli özelliklerden biri 2011 yılında piyasaya çıkan lakin kararlı sürüm olarak 2017 yılında karşımıza gelen kotlin sayesinde android sürümlerinde kodlamalarda ve yeni bir dil olarak gelen kotlin bizim hem kodlarımızı daha optimizasyon ederek ilerlemesini sağlamıştır. Bu bizim developerlar için biraz riskli gözüksede kolayca Javadan kotline geçiş sağlayabiliyoruz bir basit örnekle anlatayım.
AndroidManifest.xml
<manifest>
<application>
...
<meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
android:value="true" />
</application>
</manifest>
Kotlin
Java
Bu kodda yapılan iş güvenli tarama API’sinin web görünümü uygulamasını kullanarak, uygulamamız bir web görünümü örneğinin Google’ın bilinen tehdit olarak sınıflandırdığı bir URL’ye gitmeye çalıştığını algılar. Varsayılan olarak, web görünümü, kullanıcıları bilinen tehdit konusunda uyaran bir geçiş reklamı gösterir. Bu ekran, kullanıcılara URL’yi yine de yükleme veya güvenli olan önceki bir sayfaya dönme seçeneği sunar.
Aslında Google geliştirdiği API’larda önce güvenlikleri ve sonra user interface ve system optimizasyonlarını gerçekleştirmekte. Android güvenlik olarak bir örnek verilirse
2015 yıllarında Android 6 ve öncesi olarak kullanabilen ve güvenlik açığından Stagefright Exploit kullanarak tek bir link göndererek karşı kişinin telefonun root erişimine sağlanabiliyordu. Google Android güvenlik olarak yeni paketlerinde ve yamalar sayesinde bu açığı hızlıca kapatmıştır.
Ayrıca Google Play konsolu, Ağustos 2018 ‘ den başlayarak yeni uygulamaların API düzeyi 26 ‘ ı (Android 8,0) veya üstünü hedef alacak. Mevcut uygulamalar, 2018 Kasım ‘Dan başlayarak API düzeyi 26 veya daha üstünü hedeflemek için gerekecektir. Daha fazla bilgi için bkz. yıllar için Google Play uygulama güvenliğini ve performansını artırma.
Böylelikle sistemimizi seçerken güvenlik, hızlı sistem özellikleri, makine öğrenmesi, multimedia kullanıp kullanmama vb. daha birçok özelliklerini kullanırken hem herkese hitap edebileceğimiz bir API leveli seçmek istiyorsak yapacağımız uygulamanın en düşük ve uygulamamızı çalıştırabilcek API levelini belirlemeliyiz.
Bir sonraki yazıma kadar görüşmek üzere 👋