AndroidManifest Nedir?

Canseray Tufan
4 min readSep 26, 2019

--

Her android projesinin, proje kaynak setinin kökünde AndroidManifest.xml adında bir xml dosyası vardır.Bu dosya yeni proje oluşturduğumuzda Android Studio tarafından default olarak proje kökümüze eklenir.MainActivity isimli tek bir activitysi olan projenin manifest dosyası ortalama görseldeki gibi olacaktır.

Manifest dosyası genel olarak uygulamamızın işlevlerini-gereksinimlerini ifade etmemizi sağlıyor.Uygulamamızda sağlamak istediğimiz yapıya göre bu dosyayı tagler ve öznitelikleri ile yönetebiliyoruz.Bu dosyayı yöneterek uygulamamızı nasıl şekillendirebileceğimizi birkaç başlık ile örneklendirecek olursak;

  • Uygulamamızın adını, iconunu, temasını bildirmek
  • Uygulamada kullanılacak version numaralarını, kütüphaneleri, minimum ve geçerli SDK sürümlerini bildirmek
  • Uygulamanın gerektirdiği veya uygulamada kullanacağımız yazılım-donanım özelliklerini bildirmek (kamera, bluetooth vs.)
  • Uygulama izinlerini belirlemek (internet bağlantısı, kullanıcı izinleri vs.)
  • Activitylerimizi yönetmek ve bu activitylerin özelliklerini bildirmek şeklinde devam edilebilir.

Bu dosyanın önemini anlamak için biraz da android uygulamaların çalışma prensipleriyle ilgili temel bilgilere sahip olmalıyız.Aşağıdaki görselde uygulamanın çalışmasındaki manifestin rolünü basit bi şekilde çizmeye çalıştım

AndroidManifest bir xml dosyası demiştik; yani ilgili tagler arasına yapmak istediğimizi sistem dilince anlatan metinleri gireceğiz.Öncelikle bu taglerin birbirini kapsama durumunu inceleyelim;

<manifest>
<uses-permission />
<permission />
<permission-tree />
<permission-group />
<instrumentation />
<uses-sdk />
<uses-configuration />
<uses-feature />
<supports-screens />
<compatible-screens />
<supports-gl-texture />
<application>
<activity>
<intent-filter>
<action />
<category />
<data />
</intent-filter>
<meta-data />
</activity>
<activity-alias>
<intent-filter> . . . </intent-filter>
<meta-data />
</activity-alias>

<service>
<intent-filter> . . . </intent-filter>
<meta-data/>
</service>
<receiver>
<intent-filter> . . . </intent-filter>
<meta-data />
</receiver>
<provider>
<grant-uri-permission />
<meta-data />
<path-permission />
</provider>
<uses-library />
</application>
</manifest>

Şimdi de bu tagleri kısaca tanıyalım;

<manifest>: Dosyamızın ana tagidir.Paket adı, version numaraları dahil başlıca özellikler burada bulunur.Ekleyeceğimiz diğer tagleri bu tag içerisine ekleriz.Manifest tagi application tagi içermek zorundadır.

<application>: Uygulamanın temel değişkenlerini belirlediğimiz tagdir.Uygulamanın adı, iconu, teması, gereken izinler, donanım ayarları, kullanıcı alanının yönetimi, yedekleme ayarları, ekran özelliklerini belirleme gibi işlevlerini bu tagde biçimlendiriyoruz.

<uses-permission>: Uygulamanın doğru çalışması için kullanıcının vermesi gereken sistem izinleridir.İnternet erişimi, kamera kullanımı, kullanıcı alanına ulaşım vs.

<permission>: Uygulamanın belirli bileşenlerine veya özelliklerine erişimi sınırlamak için kullanılabilecek bir güvenlik izni olduğunu ifade eder.

<permission-three>: Bu tag bir izin değil, başka izinlerin yerleştirilebileceği bir izin ağacı için taban adını bildirir.

<permission-group>: İzinlerin mantıksal gruplandırılabilmesi için bir ad bildirir.

<instrumentation>: Uygulamanın sistemle olan etkileşimini izlememizi sağlayan sınıfı bildirir.Bu sınıfın nesnesi uygulamanın herhangi bir bileşeninden önce başlatılır ve uygulamayla ilgili testleri yerine getiren bileşendir.

<uses-sdk>: İsminde SDK geçiyor olmasına rağmen bu tag SDK ve Android platformunun versionunu değil API seviyesini belirlemek için kullanılır.API seviyesi daima tam sayıdır.

<uses-configuration>: Uygulamanın gerektirdiği yazılım ve donanım özelliklerini belirtir.Örneğin uygulama fiziksel bir klavye gerektiriyor olabilir.

<uses-feature>: Uygulama tarafından kullanılan tek bir donanım veya yazılım özelliğini bildirir.Özellik desteği android cihazlarda farklılık gösterebileceği için bu tag ile belirtilen özellikler olmadan da uygulamanın çalışacağını belirtir.

<supports-screens: Uygulamanın desteklediği ekran boyutlarını belirtmemizi ve uygulamanın desteklediğinden daha büyük ekranlar için ekran uyumluluğu modunu etkinleştirmemizi sağlar.

<compatible-screens>: Uygulamanın uyumlu olduğu ekran yapılandırmasını belirtir.Android sistemi bu tagi okumaz yalnızca bilgi vermek içindir.

<supports-gl-texture>: Uygulamanın desteklediği sıkıştırılma formatını bildirir.Bir uygulama bir cihaza yüklendiğinde bu formatta sıkıştırılmış varlıkları sağlama yeteneğine sahipse,sıkıştırma formatını destekliyor demektir.

<activity>: Uygulamadaki activityleri ve özelliklerini belirtir.

<intent-filter>: Üst taginin ne tür intent yetenekleri olduğunu belirtir,sınırlar.

<action>: intent-filter tagine bir özellik ekler.

<category>: intent-filter taginin kategori adını belirtir.

<data>: intent-filter taginin varsa URI’ını belirtir.

<meta-data>: Üst tag e eklenebilecek isteğe bağlı ad-değer çiftidir.Bu değerler bir Bundle nesnesinde toplanır.

<activity-alias>: Herhangi bir sebepten dolayı bir activitynin manifest içinde yönettiğiniz özelliklerine başka bir activitynin sahip olmasını istiyorsak, sahip olmasını istediğimiz activitye bu tag ile sahip olmasını istediğimiz activitynin adını takma ad olarak veririz.

<service>: Uygulamanın servis elemanları ve servis kullanımlarını belirtir.

<receiver>: İşletim sistemi tarafından uygulamaya gönderilen mesajları dinlemek ve takip etmek için kullanılır.

<provider>: Uygulamanın içerik sağlayıcı tagidir, içeriğin değer ve değişkenlerini belirtir.

<grand-uri-permission>: Providerın erişme izni olan veri kümelerini belirtir,içerik bir URI’dır.

<path-permission>: Providerın belirli bir veri kümesi için gerekli izinleri belirtir.

Taglerimiz bu şekilde, taglerin özniteliklerine buradan ulaşabilirsiniz.

Kaynak;

— — — — — — — — — — — — — — — — — — — — — — — — — — — — —

İlk medium postumun sonuna gelmiş bulunuyorsunuz,

burda olduğunuz için teşekkürler <3

--

--