Merhaba Arkadaşlar,
Mobilhanem.com sitemiz üzerinden anlattığımız/yayınladığımız Android Eğitimleri yazı serimizde bu dersimizde AndroidManifest ile devam ediyoruz. Nedir bu AndroidManifest ,ne işe yarar şimdi incelemeye başlayalım.
AndroidManifest bir xml dosyasıdır ve android projelerimizin en önemli parçalarından biridir. Uygulamamızın temel bilgilerine bu dosyadan ulaşırız. Activity , Service, Receiver vb. sınıfları içinde barındıran bu yapı ; uygulama için gerekli olan izin isteklerini de burada tanımlarız. ( örneğin uygulama internet bağlantısına ihtiyaç duyuyorsa ve biz bu sınıfta izni belirtmezsek internet e erişemeyecektir. ) Android 6.0 ve üzeri cihazlar için izin mekanizması değişti ayrıntılı olarak incelemek isteyenler için bu dersimize bakmanız faydalı olacaktır. Activity Kullanımı dersimizde bahsettiğim gibi; Activity oluşturduğunuz zaman AndroidManifest.xml de otomatik olarak ilgili Activity sınıfı de oluşacaktır.
Android Studio da bir proje oluşturduk proje adını DenemeApp koyduk daha sonra AndroidManifest.xml i açtığımızda aşağıdaki yapıyı göreceksiniz. Paket adını en başta belirlemiştik gördüğünüz gibi “com.mobilhanem.denemeapp” olarak oluşturuldu.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mobilhanem.denemeapp"> <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> </manifest>
Yeni bir Activity eklediğimizde aşağıdaki kod da gördüğünüz gibi AndroidManifest.xml dosyamıza ilgili Activity tanımlanmış oldu.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mobilhanem.denemeapp"> <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> <activity android:name=".DetailActivity"></activity> </application> </manifest>
Uygulama için gerekli izinleri almak istediğimizde bahsettiğim gibi yine AndroidManifest.xml de tanımlıyoruz. package ile application tag lerinin arasına uygulamamızda kullanılacak olan gerekli izinleri tanımlıyoruz. ( örnek olarak internet için gerekli olan izni ekledik )
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mobilhanem.denemeapp"> <uses-permission android:name="android.permission.INTERNET" /> <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> <activity android:name=".DetailActivity"></activity> </application> </manifest>
Service yapısını Application tag i içinde kullanıyoruz o yüzden aşağıdaki gibi bir tanımlama yaptık. Service kullanımını detaylı olarak ilerleyen derslerde anlatacağım.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mobilhanem.denemeapp"> <uses-permission android:name="android.permission.INTERNET" /> <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> <activity android:name=".DetailActivity"></activity> <service android:name=".DownloadService" android:exported="false" /> </application> </manifest>
Receiver yapısını yine Application tag i içerisinde kullanıyoruz. Receiver konusunu da Service kullanımında değineceğim. Kısaca ne olduğunu bilmeniz açısından tanımı yapacak olursak ; işletim sistemi tarafından uygulamalara gönderilen sinyalleri dinlemek ve takip etmekle görevli bir yapıdır.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mobilhanem.denemeapp"> <uses-permission android:name="android.permission.INTERNET" /> <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> <activity android:name=".DetailActivity"></activity> <service android:name=".DownloadService" android:exported="false" /> <receiver android:name=".BroadcastReceiver" /> </application> </manifest>
Genel olarak kod yapısını incelersek eğer;
AndroidManifest.xml Dosya Yapısı
- Package
Uygulamamızın paket adının yer aldığı kısımdır. Genellikle domain ismi kullanmak unique bir isim oluşturmamızı sağlayacaktır uygulamamızı bitirip play store da yayınlamak istediğimizde burada yer alan paket adının size özel olacağını unutmayın ( biz oluştururken com.mobilhanem daha sonrasında uygulama adını ekleyerek com.mobilhanem.denemeapp şeklinde oluşturduk )
- <action android:name=”android.intent.action.MAIN” />
Uygulama çalıştırıldığında ilk çalışacak olan sınıfı belirlemek için kullanılır.
- Instrumentation
Uygulamanın sistemle etkileşimini izlemenizi sağlayan sınıftır. Ayrıca uygulamamızın çalıştığı süreçten ayrı uygulamayla ilgili testleri yerine getiren bir bileşendir.
<instrumentation android:name="android.bluetooth.BluetoothInstrumentation" android:targetPackage="1"/>
- Application
Uygulamamızın temasını (android:theme), iconunu (android:icon) , adını (android:label ) bu tag aracılığı ile ayarlarız. Bunun gibi daha bir çok özelliğinin ayarlamasını yine application tag içerisinden yönetebiliriz.
–android:debuggable : Uygulamanın debug edilip edilemeyeceğini belirler. Default değer olarak true alır ama false olarak tanımlarsanız uygulamanızı çalıştırıp debug etmeyi deneyin debug mod çalışmayacaktır.
–android:isGame : Uygulamanızın oyun uygulaması olup olmadığını belirliyor. Default değer olarak false olarak tanımlı geliyor.
–android:largeHeap: Uygulama kullanımında bellek artışını sağlamak için kullanılır. Bunun true olarak tanımlanması pek de istenmeyen bir durumdur fakat ram kullanımı yüksek olacak uygulamalarda çoğu zaman true olarak set etmemiz gerekebilir.
–android:supportsRtl : Uygulamamızın sağdan sola tasarımını (layout ların) destekleyip desteklemediğini belirlememize yardımcı oluyor. Default olarak false olarak tanımlı geliyor. true yaptığımızda ayrıca arapça dil desteğini sağlayabilmemize yardımcı oluyor.
-android:hardwareAccelerated : Uygulamamızın UI performansını önemli ölçüde hızlandırmayı sağlar. Donanım hızlandırma olarak da adlandırılır.
Application tag elemanlarından bazılarını açıklamaya çalıştım daha detaylı bilgi için bu linki inceleyebilirsiniz.
Bu dersimizde AndroidManifest.xml konusunu anlatmaya çalıştık. Zaten sürekli AndroidManifest.xml dosyasına ihtiyacımız olacağı için ilerleyen zamanlarda konuya daha hakim olacaksınızdır. Umarım faydalı olmuştur android eğitimleri serimize de hızlı bir şekilde devam edeceğiz.
Tüm Android Ders, Proje ve Kaynak Kodlar için tıklayınız.
Mobilhanem.com üzerinden anlattığımız android uygulama geliştirme derslerine devam edeceğiz. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı sorucevap.mobilhanem.com sitemizden de sorabilirsiniz.
Bir dahaki dersimizde görüşmek dileğiyle..
31
Merhaba Alper bey
Bir konuda desteğe ihtiyacım var sizinle iletişime geçebilir miyim
Teşekkür ederim
Merhaba, sorularınıza sadece sitemiz üzerinden yanıt verebiliyoruz konu nedir ?