AndroidManifest.xml — bu nədir, əsas komponentlər və manifest konfiqurasiyası

Müəllif: IT Sectr Dərc olunub: 2026-05-31 Oxuma vaxtı: 8 dəq

AndroidManifest.xml hər bir Android tətbiqinin məcburi konfiqurasiya faylıdır, onun komponentlərini, icazələrini və metadatalarını təsvir edir. Android sistemi bu faylı hər bir tətbiqin quraşdırılması və işə salınması zamanı oxuyur. Android Developers, 2025-ə görə, düzgün manifest olmadan tətbiq cihazda quraşdırılmır. AndroidManifest.xml əməliyyat sistemi üçün Activity, Service, BroadcastReceiver və ContentProvider-ı qeydiyyatdan keçirir.

Əsas məqamlar

  • AndroidManifest.xml — Android tətbiqinin bütün komponentlərini və tələblərini bəyan edən XML faylı
  • Activity, Service, BroadcastReceiver, ContentProvider application teqi daxilində qeydiyyatdan keçirilir
  • İcazələr uses-permission və uses-permission-sdk-23 teqləri vasitəsilə göstərilir
  • Intent Filters hər bir komponentin hansı sistem hərəkətlərini emal edə biləcəyini müəyyən edir
  • exported atributu komponentin digər tətbiqlər üçün əlçatanlığını idarə edir

AndroidManifest.xml nədir

AndroidManifest.xml XML formatında əsas konfiqurasiya faylıdır ki, hər bir Android layihəsi onu app/src/main kataloqunda saxlamalıdır. Android sistemi onu hər hansı tətbiq kodunu işə salmadan əvvəl — APK-nın pars edilməsi mərhələsində təhlil edir. Əgər manifestdə sintaktik səhv varsa və ya məcburi bəyannamə yoxdursa, quraşdırma səhv mesajı ilə kəsilir.

Fayl tətbiqin tam bəyannaməsini ehtiva edir: bütün komponentlərin siyahısı (Activity, Service, BroadcastReceiver, ContentProvider), tələb olunan icazələr, minimum SDK versiyası, aparat tələbləri və mövzu/stil konfiqurasiyası. Sistem və ya digər tətbiqlər tərəfindən çağırıla bilən hər bir komponent manifestdə açıq şəkildə bəyan edilməlidir. Bu təhlükəsizlik tələbidir: açıq bəyannamə olmadan komponent çağırış üçün əlçatan deyil.

Düzgün konfiqurasiya edilmiş manifest olmadan tətbiq Google Play və ya yan yükləmə vasitəsilə quraşdırıla bilməz. Sistem APK-nın pars edilməsi mərhələsində manifesti yoxlayır və səhvlər olduqda quraşdırmanı rədd edir. Google Play həmçinin təhlükəli konfiqurasiyalar üçün manifesti skan edir: intent-filter olmayan komponentdə exported=true olduqda xəbərdarlıq verilir, targetSdk 34+ üçün məcburi icazələr olmadıqda isə nəşr bloklanır. Buna görə də manifest strukturunu başa düşmək Android tərtibatçısı üçün məcburi bacarıqdır.

Tətbiq komponentləri manifestdə

Android tətbiqinin hər bir komponenti manifestdə açıq şəkildə qeydiyyatdan keçirilməlidir. Bu, platformanın bütün dörd komponent növü üçün məcburi tələbidir. Qeydiyyat olmadan komponent sistem tərəfindən yaradıla bilməz və onu işə salmaq cəhdi ActivityNotFoundException və ya oxşar istisnaya səbəb olar. Komponentlər application teqi daxilində onların işinə təsir etməyən ardıcıllıqla qeydiyyatdan keçirilir.

Activity

activity teqi tətbiqin ekranını qeydiyyatdan keçirir. exported atributu digər tətbiqlərin bu Activity-ni işə sala biləcəyini müəyyən edir. Android 12-dən başlayaraq, intent-filter olduqda exported atributunun olmaması kompilasiya xətasına səbəb olur — bu təhlükəsizlik tələbidir. Giriş nöqtəsi MAIN action və LAUNCHER category ilə intent-filter vasitəsilə təyin edilir. Hər bir Activity sinifin tam və ya nisbi adına uyğun unikal android:name-ə malik olmalıdır.

xml
<activity
    android:name=".MainActivity"
    android:exported="true"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Service

service teqi fon xidmətini təyin edir. Android 8-dən başlayaraq, fon xidmətlərinin ciddi məhdudiyyətləri var: foreground service istifadəçiyə görünən işarəli məcburi bildiriş tələb edir, bound service isə yalnız bağlı müştəri olduqda işləyir. Bildirişsiz fonda işləyən xidmətlər tətbiq fon rejiminə keçdikdən bir neçə dəqiqə sonra sistem tərəfindən avtomatik dayandırılır. Uzunmüddətli tapşırıqlar üçün Service əvəzinə WorkManager istifadə edin.

xml
<service
    android:name=".SyncService"
    android:exported="false"
    android:foregroundServiceType="dataSync" />

BroadcastReceiver

receiver teqi sistem və ya fərdi yayım mesajlarının qəbuledicisini bəyan edir. Android 8-dən başlayaraq, qeyri-aşkar yayımların əksəriyyəti manifestdə statik olaraq bəyan edilmiş qəbulediciələrə çatdırılmır. Bunun əvəzinə qəbulediciələrin koddakı Context.registerReceiver vasitəsilə dinamik qeydiyyatdan keçirilməsi tövsiyə olunur. İstisna, BOOT_COMPLETED kimi hələ də manifestdə statik qeydiyyat tələb edən bəzi sistem yayımlarıdır.

xml
<receiver
    android:name=".ConnectivityReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

Android-də icazələr (Permissions)

Android-də hər bir təhlükəli icazə manifestdə uses-permission teqi vasitəsilə bəyan edilməlidir. Android 6-dan başlayaraq, təhlükəli icazələr istifadəçi ilə dialoq vasitəsilə icra zamanı tələb olunur, lakin manifestdə bəyannamə məcburi olaraq qalır. Olmadan requestPermissions metodu SecurityException istisnası atır. INTERNET və ACCESS_NETWORK_STATE kimi normal səviyyəli icazələr quraşdırma zamanı avtomatik verilir.

İcazəTəyinat
CAMERAFoto və video üçün cihazın kamerasına giriş
ACCESS_FINE_LOCATIONGPS və şəbəkə vasitəsilə dəqiq geolokasiya
RECORD_AUDIOCihazın mikrofonundan səs yazısı
READ_CONTACTSTelefon kitabçasından kontaktların oxunması
POST_NOTIFICATIONSAndroid 13+-da bildirişlərin göndərilməsi

uses-permission-sdk-23 teqi yalnız Android 6.0+-da tələb olunan icazələri göstərir. Bu, mövcud olmayan icazələri tələb etmədən köhnə versiyalarla uyğunluğu qorumağa imkan verir. Məsələn, POST_NOTIFICATIONS yalnız Android 13+-da mövcuddur, buna görə də onu uses-permission-sdk-33 vasitəsilə göstərmək lazımdır ki, köhnə cihazlarda naməlum icazə xətası olmasın. uses-permission-da maxSdkVersion atributu tətbiqin yeni Android versiyalarında yenilənməsi zamanı lazımsız icazələri avtomatik geri götürməyə imkan verir.

Normal səviyyəli icazələr (INTERNET, ACCESS_NETWORK_STATE) quraşdırma zamanı avtomatik verilir və icra zamanı sorğu tələb etmir. Onlar da uses-permission vasitəsilə bəyan edilir, lakin istifadəçiyə dialoqda göstərilmir. Digər tətbiqlərdən tətbiq komponentlərinə girişi idarə etmək üçün permission-protected components mexanizmi istifadə olunur: Activity və ya Service səviyyəsində fərdi icazə təyin edilə bilər ki, bu da komponent kənardan çağırıldıqda sistem tərəfindən yoxlanılır. Bu, proseslərarası qarşılıqlı əlaqə üçün əlavə təhlükəsizlik səviyyəsi təmin edir.

Intent Filters və dərin linklər

Manifestdə intent-filter teqi komponentin hansı qeyri-aşkar intentləri emal edə biləcəyini bəyan edir. Bu, Android-in sistem və ya fərdi hərəkətləri tətbiqlə əlaqələndirdiyi mexanizmdir. Intent filter üç elementdən ibarətdir: action (hərəkət), category (kateqoriya) və data (məlumat). Hər üçü komponentin hansı intentləri qəbul etməli olduğunu dəqiq təsvir etmək üçün birləşdirilə bilər. Sistem ən spesifik filtr əsasında uyğun komponenti seçir.

xml
<activity android:name=".DeepLinkActivity">
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="https"
            android:host="itsectr.com"
            android:pathPrefix="/app" />
    </intent-filter>
</activity>

autoVerify atributu Android App Links yoxlamasını aktivləşdirir: sistem domen sahibliyini təsdiqləmək üçün serverlə əlaqə saxlayır. Yoxlama olmadan dərin linklər standart seçim dialoqu vasitəsilə işləyir, burada istifadəçi linki hansı tətbiqlə açacağını seçir. Uğurlu yoxlamadan sonra linklər dialoq olmadan birbaşa tətbiqdə açılır. Google Search Console da deep link-lərin indeksləşdirilməsi və axtarış nəticələrində göstərilməsi üçün autoVerify-dən istifadə edir.

action.VIEW və DEFAULT və BROWSABLE kateqoriyaları olan filtrlər brauzer, e-poçt və digər tətbiqlərdən gələn linkləri emal edir. Bu, Android-də dərin linklərin həyata keçirilməsinin əsas mexanizmidir. myapp:// kimi fərdi URL sxemlərini dəstəkləmək üçün host olmadan scheme göstərmək kifayətdir. Lakin Google fərdi sxemlər əvəzinə HTTPS dərin linklərindən istifadə etməyi tövsiyə edir, çünki onlar daha təhlükəsizdir və əlavə icazələr tələb etmir. Fərdi sxemlər eyni sxemi qeydiyyatdan keçirmiş hər hansı tətbiq tərəfindən ələ keçirilə bilər.

Tətbiq atributları və metadatalar

manifest əsas teqi paket, versiya və SDK atributlarını ehtiva edir. application teqi qlobal parametrləri saxlayır: mövzu, işarə, etiket və sazlama bayraqları. manifest atributları paket səviyyəsində versiyalaşdırmanı təyin edir, application atributları isə tətbiqin ümumi görünüşünü və davranışını müəyyən edir. Dəyərlər @-sintaksisi ilə resurslara istinadlar və ya sətir literalları ola bilər.

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

    <uses-sdk
        android:minSdkVersion="24"
        android:targetSdkVersion="34" />

    <application
        android:label="MyApp"
        android:icon="@mipmap/ic_launcher"
        android:theme="@style/Theme.MyApp"
        android:supportsRtl="true"
        android:allowBackup="true">
        <!--  Tətbiq komponentləri  -->
    </application>
</manifest>

application daxilində meta-data teqi ixtiyari açar-dəyər cütlərini saxlamağa imkan verir. Bu, üçüncü tərəf kitabxanalarının konfiqurasiyası üçün əlverişlidir: API açarları, endpoint ünvanları və funksionallıq bayraqları. meta-data məlumatları icra zamanı PackageManager.getApplicationInfo().metaData vasitəsilə əlçatandır. Məsələn, Firebase və Google Maps meta-data-dan giriş açarlarını mənbə kodunda sərt kodlaşdırmadan ötürmək üçün istifadə edir. Açarlar manifestdə təyin edilir və müxtəlif kompilasiya variantları üçün fərqlənə bilər.

android:extractNativeLibs atributu APK-dan yerli kitabxanaların çıxarılmasını idarə edir. targetSdk 34+ olan tətbiqlər üçün bu atribut açıq şəkildə göstərilməlidir, əks halda kompilasiya INSTALL_FAILED_INVALID_APK xətası ilə uğursuz ola bilər. extractNativeLibs=false olduqda, yerli kitabxanalar açılmadan APK daxilində qalır, bu quraşdırılmış tətbiqin ölçüsünü azaldır, lakin kitabxanaların yüklənmə vaxtını artırır. Müasir tətbiqlərin əksəriyyəti üçün istifadəçinin diskində yer saxlamaq üçün extractNativeLibs=false tövsiyə olunur.

android:networkSecurityConfig atributu şəbəkə təhlükəsizliyi konfiqurasiya faylını təyin etməyə imkan verir. Bu, xüsusilə HTTP trafikinin standart olaraq bloklandığı targetSdk 28+ olan tətbiqlər üçün vacibdir. Konfiqurasiya faylı etibarlı sertifikatları, HTTP bağlantıları üçün domenləri və sertifikat pinning qaydalarını müəyyən edir. Bu, köhnəlmiş android:usesCleartextTraffic atributunu əvəz edir və ƏS səviyyəsində bağlantı təhlükəsizliyini idarə etmək üçün daha çevik mexanizm təmin edir.

android:largeHeap atributu tətbiq üçün artırılmış yığın ölçüsü tələb edir. Standart olaraq Android hər tətbiqə cihazdan və ƏS versiyasından asılı olaraq məhdud yaddaş ayırır. Tətbiq ağır şəkillər, video və ya böyük məlumat dəstləri ilə işləyirsə, largeHeap OutOfMemoryError-un qarşısını ala bilər. Lakin bu atributdan sui-istifadə zərərlidir: böyük yaddaş istehlakı olan tətbiq resurs çatışmazlığında sistem tərəfindən daha tez dayandırılır. largeHeap-dən yalnız profilləşdirmədən və zərurəti təsdiqlədikdən sonra istifadə edin.

Tez-tez verilən suallar

Activity üçün exported göstərilməsə nə olar?

Android 12-dən başlayaraq, intent-filter olduqda exported atributunun olmaması kompilasiya xətasına səbəb olur. Sistem intent-filter olan hər bir komponentin görünürlüyünün açıq şəkildə göstərilməsini tələb edir — bu, komponentlərin digər tətbiqlər tərəfindən təsadüfən açılmasının qarşısını almaq üçün təhlükəsizlik tədbiridir. Intent-filter olmayan Activity üçün exported standart olaraq false-dur.

LAUNCHER intent-filter ilə bir neçə Activity ola bilərmi?

Bəli, lakin launcherdə tətbiqin bir neçə işarəsi göstəriləcək. MAIN/LAUNCHER olan hər Activity ayrıca giriş nöqtəsinə çevrilir. Bu, tətbiqin müxtəlif bölmələrinə, məsələn birbaşa parametrlərə və ya yeni qeyd yaratmağa keçid üçün qısayollar yaratmaq üçün istifadə olunur. Hər işarə müvafiq Activity-ni birbaşa açır.

Android-də manifestlərin birləşdirilməsi necə işləyir?

Android kitabxanalardan olan manifestləri tətbiqin əsas manifesti ilə birləşdirir. Atribut münaqişəsi olduqda həll etmək üçün tools:replace və ya tools:node="merge" istifadə olunur. Bu mexanizm avtomatikdir: Gradle vasitəsilə kitabxana əlavə edildikdə onun manifesti əsas manifestlə birləşdirilir. Kitabxanadan atributu ləğv etmək və ya əvəz etmək üçün tools:node="remove" və ya tools:replace="attributeName" istifadə edin.

Niyə icazə dialoqu göstərilmir?

Tipik səbəblər: icazə manifestdə uses-permission vasitəsilə bəyan edilməyib, normal səviyyəli icazə istifadə olunur (icra zamanı sorğu tələb etmir), istifadəçi "Bir daha soruşma" seçib və icazə əbədi qadağan edilib, ya da targetSdkVersion 23-dən aşağıdır, burada icazələr quraşdırma zamanı tələb olunur. Diaqnostika üçün manifesti və adb logcat vasitəsilə jurnalları yoxlayın.

Manifestdə debuggable nədir?

android:debuggable atributu ADB vasitəsilə tətbiqin sazlanmasını aktivləşdirir. Google Play-də buraxılış kompilasiyaları üçün false olmalıdır. Əgər buraxılış kompilasiyasında debuggable=true olarsa, təcavüzkar ADB vasitəsilə tətbiqə qoşula, məlumatları oxuya və ixtiyari kod icra edə bilər. Google Play avtomatik olaraq debuggable=true olan kompilasiyaların nəşrini bloklayır.

Nəticə

  • AndroidManifest.xml — Android tətbiqinin bütün komponentlərinin bəyannaməsi ilə məcburi konfiqurasiya faylı
  • Activity, Service, Receiver, Provider görünürlük və konfiqurasiya atributları ilə application teqi daxilində qeydiyyatdan keçirilir
  • İcazələr uses-permission vasitəsilə bəyan edilir, təhlükəliləri Android 6.0-dan sonra icra zamanı tələb olunur
  • Intent Filters autoVerify ilə seçim dialoqu olmadan birbaşa dərin linklər üçün Android App Links-i aktivləşdirir
  • uses-sdk Android versiyaları ilə uyğunluğu idarə etmək üçün minSdkVersion və targetSdkVersion təyin edir
  • exported Android 12-dən başlayaraq intent-filter olan bütün komponentlər üçün məcburidir
  • Manifestlərin birləşdirilməsi atributların ləğv edilməsi dəstəyi ilə modul və kitabxanalardan konfiqurasiyaları birləşdirir

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun