AndroidManifest Nedir ?

Bekir Çağlar
3 min readJun 23, 2024

--

Selamlar, Android alanındaki ilk yazımda, Android yolculuğumun ilk adımı olan “AndroidManifest Nedir?” sorusunu kendi deneyimlerimle ve bilgilerimle cevaplayacağım.

AndroidManifest.xml Dosyası Nedir ?

AndroidManifest.xml dosyası, her Android uygulamasının kök dizininde bulunan ve uygulamanın temel yapı taşlarını tanımlayan bir dosyadır. Bu dosya, uygulamanızın Android işletim sistemi ile nasıl etkileşime gireceğini belirler.

Yukarıdaki örnekte de gördüğümüz gibi AndroidManifest.xml dosyasında uygulamamızın bazı özelliklerini bildirebiliyoruz bunlar :

  • Uygulamamızın versiyon kodu ve versiyon adı.
  • Uygulamamızın çalışacağı minimum ve hedef SDK sürümü.
  • Uygulamamızın cihazda kullanacağı izinler.
  • Uygulamamızın içindeki aktiviteler, servisler, broadcast receiverlar ve content provider gibi bileşenler.
  • Uygulamanın simgeleri (ikon ve yuvarlak ikon) ve teması gibi görsel özellikler.
  • Uygulamanın yedekleme desteği ve sağdan sola yazı desteği gibi özellikler.

Bu özellikleri belirtirken ilgili taglar arasında işlemleri yapmamız lazım biraz da bunlara bakalım.

<manifest>: Dosyaya adını da veren manifest tag’ı altında paket adı, versiyon kodu ve adı, uygulamayı indirme konumu gibi özellikleri belirtiriz.Manifest tagı içerisinde application tagı kullanılması zorunludur.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="string"
android:sharedUserId="string" // API level 29 dan sonra desteklenmez ve kullanılması önerilmiyor
android:sharedUserLabel="string resource"
android:sharedUserMaxSdkVersion="integer"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
...
</manifest>

Uygulama Bilgileri :

<application>: Uygulamanın genel özelliklerini tanımlar. İkon, tema, sağdan sola yazma desteği, başlatma aktivitesi gibi bilgileri içerir.

    <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">

<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

Aktiviteler, Servisler ve Alıcılar :

<activity>: Uygulamanın aktivitelerini tanımlar. Her bir aktivitenin kullanıcı arayüzü bileşenleri ve nasıl başlatılacağı hakkında bilgi verir.

<intent-filter>: Activity, service ve broadcast receiver bileşenler için intent tipini belirtmek için kullanılan bir tagdır. İçerisinde <action>, <category>, <data> taglarını kullanabiliriz. <action> tag’ı kullanılması zorunludur.

<service>: Arka planda çalışacak servisleri tanımlar.

<receiver>: Broadcast receiver’ları tanımlar. Uygulama, belirli sistem olaylarına veya özel yayınlara yanıt verebilir.

<provider>: content provider’ları tanımlar, veri paylaşımı için kullanılır.

<manifest
...

<application
...

<!-- MainActivity tanımı -->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<!-- İkinci bir aktivite tanımı -->
<activity android:name=".SecondActivity" />

<!-- Arka planda çalışacak bir servis tanımı -->
<service android:name=".MyBackgroundService" />

<!-- Yayın alıcısı (BroadcastReceiver) tanımı -->
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.BATTERY_LOW" />
</intent-filter>
</receiver>

<!-- İçerik sağlayıcı (ContentProvider) tanımı -->
<provider
android:name=".MyContentProvider"
android:authorities="com.example.myapp.provider"
android:exported="true" />

</application>

</manifest>

İzinler :

<uses-permission>: Uygulamanın çalışması için gerekli olan izinleri belirtir. Örneğin, internet erişimi, kamera kullanımı gibi izinler.

Not: Kamera ve bunun gibi bazı izinler için SDK sürümü önemli olabiliyor.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<!-- İnternete bağlanma ve konumu kullanabilmek için alınan izinler-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
...
</application>

</manifest>

Donanım ve Yazılım Gereksinimleri :

<uses-feature>: Uygulamanın çalışması için gerekli olan donanım ve yazılım özelliklerini belirtir. Örneğin, GPS, dokunmatik ekran gibi özellikler. Eğer belirttiğimiz özellikleri opsiyonel yapmak istersek ‘android:required’ ile bunu sağlarız.

<uses-sdk>: Uygulamanın desteklediği minimum ve hedef SDK sürümlerini belirtir.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">

<!-- Uygulamamızın çalışacağı minimum ve hedef SDK sürümü -->
<uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="30" />

<!-- Uygulamamızın çalışması için gerekli olan donanım ve yazılım özellikleri -->
<uses-feature android:name="android.hardware.location.gps" android:required="true" />
<uses-feature android:name="android.hardware.touchscreen" android:required="true" />
<uses-feature android:name="android.hardware.camera" android:required="false" />

</manifest>

Kendi bildiklerimce AndroidManifest Nedir ? sorusuna cevap verdim. Hatalarım olmuş olabilir şimdiden özür diliyorum, düzeltebilmek için önerilere açığım. Sonraki yazılarda görüşmek üzere ❤

--

--