Android Manifest Nedir?

Selamlar, Android uygulamaların vazgeçilmezi olan Android Manifest dosyasının ne olduğunu öğreneceğiz. Hazırsanız haydi başlayalım.

AndroidManifest Nedir?

Uygulama başlamadan önce uygulama içinde gelen AndroidManifest.xml dosyasını okur, hangi bileşenlerin kullanılacağını öğrenir. Manifest dosyası uygulama hakkında çeşitli detaylar verdiği için son derece önemlidir. Her projede aynı isimle Manifest dosyası bulundurmak zorundadır. Kitaplarda bulunan içindekiler bölümü neyse Android uygulamalarda da Manifest dosyaları o işlevi yapmaktadır.

Android Manifest’in görevleri aşağıdaki gibidir :

  • Uygulamanın ihtiyacı olan kullanıcı izinleri tanımlanır. Rehber’e erişim ya da Kamera’yı açtırma gibi birçok izin burada tanımlanır.

versionCode, uygulamanın sürüm numarası verilir. Her güncellemede bu değer arttırılır.

versionName, kullanıcıya gösterilen sürüm ismidir. Kullanıcıya bilgi vermesi açısından kullanılır.

Şimdide etiketlerin ne işe yaradığına bakalım.

<manifest> : AndroidManifest.xml dosyasının root etiketidir. Diğer tüm etiketler buraya eklenir.

xmlns:android, Android namespace tanımlanır. Burası her zaman için http://schemas.android.com/apk/res/android değeri ile set edilir. Otomatik olarak eklenir.

package, uygulamanızın paket adıdır. Bu her app için benzersiz olması gerekir. Uygulama mağazada yayınlandıktan sonra değiştiremezsiniz.

<uses-permission> : Uygulamanın sağlıklı bir şekilde çalışabilmesi için izinlerin tanımlaması gerekmektedir. İzinler tanımlanmazsa uygulama çalışmaz. Örneğin Getir’den sipariş vereceksiniz. Fakat geliştiricilerden sizden lokasyon izni almadan, ilgili işlemleri yapsa dahi sizin konumunuzu bilemeyeceği için uygulama doğru çalışmayacaktır. İzin istemesi gerekmektedir.

İzinlerin alındığı etiketin base’i şu şekildedir :

<uses-permission 
android:name="string"
android:maxSdkVersion="integer" />

name, verilecek iznin ismi buraya verilir. İnternet izni için aşağıdaki gibi name değeri verilir.

<uses-permission android:name="android.permission.INTERNET" />

maxSdkVersion, verilen izin için max bir API seviyesi belirlenir.

<uses-permission 
android:maxSdkVersion="27"
android:name="android.permission.INTERNET" />

<uses-feature> : Uygulamada kullanılacak bir yazılım ya da donanımı bildirmek için kullanılır. Her donanım ya da yazılım için bunlar ayrı etiketlerde tanımlanmalıdır.

<uses-feature
android:name="string"
android:required=["true" | "false"]
android:glEsVersion="integer"/>

Uygulamanızda kamera özellikleri isteniyorsa aşağıdaki etiketi kullanmalısınız.

<uses-feature android:name="android.hardware.camera2" />

name, uygulama tarafından kullanılan yazılım, donanım bilgisinin burada olduğu belirtilir.

Donanım özellikleri :

android.hardware.camera // Uygulama cihazın arka kamerasını kullanır.android.hardware.microphone // Uygulamada ses kaydı için mikrofunu kullanır.android.hardware.location // Uygulamada konum belirleyebilmek için kullanır.

Yazılım özellikleri :

android.software.device_admin // Cihaz politikasını kullanmak için tanımlanır.android.software.webview // Uygulamada internetten bir içerik göstermek için kullanılır.android.software.backup // Yedekleme, geri yükleme için mantık işlemi içermektedir.

Detaylı bilgi için aşağıdaki url’i inceleyebilirsiniz :

https://developer.android.com/guide/topics/manifest/uses-feature-element

required, cihaz tarafından zorunlu olup olmadığı bilgisini verir.

glEsVersion, uygulamanın gerektirdiği OpenGL Es versiyon bilgisi burada verilir.

<uses-sdk> : Bir ya da daha fazla Android platformuyla uygulamanın uyumluluğunu sağlayan etikettir. Temel amaç, API seviyesini belirlemektir.

<uses-sdk
android:minSdkVersion="23"
android:targetSdkVersion="30"
android:maxSdkVersion="30"/>

minSdkVersion, uygulamanın çalışacağı minimum API seviyesidir. Bu özellik belirtilmezse default 1 olarak atanır.

targetSdkVersion, uygulamanın hedeflendiği API seviyesidir.

maxSdkVersion, uygulamanın çalışacağı maksimum API seviyesidir.

API Seviyesi Nedir?

Android platformu için oluşturulan tamsayı değerlerdir. Her bir platformun kendine özgü değeri vardır. Güncel API seviyesi 30'dur.

Detaylı bilgi için aşağıdaki adresi ziyaret edebilirsiniz :

https://developer.android.com/studio/releases/platforms

<application> : Uygulamanın kendisini bildirmek için kullanılan etikettir. Tüme etiketleri etkileyecek özellikleri barındırır.

allowBackup, uygulamanın yedekleme, geri yükleme altyapısına katılmasına izin verilmesini sağlayan özelliktir. Default olarak true değeriyle gelir. Sistem her uygulamayı yedekleyip geri yükleyebilir.

icon, uygulamanın icon tanımıdır. Burada her app için default bir icon bulunur.

label, uygulamanın hepsi için geçerli olan, kullanıcı tarafından okunabilen bir özelliktir.

theme, uygulamada bulunan tüm Activity için tema belirtilmesinin yapıldığı alandır.

<intent-filter> : Activity, service ve broadcast receiver bileşenler için intent tipini belirtmek için kullanılan etikettir. İçerisinde <action>, <category>, <data> etiketleri bulundurur. <action> etiketi mutlaka eklenmesi gerekiyor.

<action> : Intent için bir action tanımı yapılması gerekir.

<intent-filter>
<action android:name="android.intent.action.EDIT" />
</intent-filter>

name, fiilin ismini belirleyen özelliktir.

  • android.intent.action.VIEW : Kullanıcıya veri gösterme fiil.

<category> : Intent filter için kategori tanımının yapıldığı etikettir.

<category android:name="android.intent.category.LAUNCHER" />

Uygulamayı launcher içinde en üst seviyede göstermesi için kullanılır.

Detaylı bilgi için Android Developers sitesinden inceleyebilirsiniz:

https://developer.android.com/guide/topics/manifest/manifest-intro

Android Manifest dosyasını öğrenip, içerisindeki etiketleri inceledik. Gelecek yazılarda görüşmek üzere 👋

Android Developer 👨🏻‍💻