مانیفیست یا AndroidManifest.xml در اندروید

منتشرشده توسط حامد قنبری در تاریخ

 

هر برنامه اندرویدی باید یک فایل AndroidManifest.xml را در ریشه منبع پروژه(فایل res) قرار داده باشد. بطور کلی فایل مانیفست اطلاعات مهم در مورد برنامه شما از جمله ابزار ساخت اندروید، سیستم عامل Android و مجوزهای اعطایی را توصیف می کند.اگر از Android Studio برای ساختن برنامه خود استفاده می کنید، فایل مانیفست برای شما ایجاد می شود و اکثر عناصر مانیفست ضروری هنگامی که شما برنامه خود را ایجاد می کنید (به ویژه هنگام استفاده از قالب های کد) اضافه می شود.

 

در میان بسیاری از موارد دیگر، پرونده مانیفست برای اعلام موارد زیر مورد استفاده قرار می گیرد:

1- تعیین نام بسته یا پکیج برنامه:

ابزار ساخت اندروید از این نام برای تعیین موقعیت مکانهای کد، هنگام ساختن پروژه استفاده می کند. هنگام بسته بندی برنامه، ابزار ساخت اندروید یا همان build tools این ارزش را بعنوان شناسه برنامه از فایل های ساخت Gradle ایجاد و استخراج می کند که به عنوان شناسه  آن برنامه منحصر به فرد در سیستم و در Google Play استفاده می شود.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.example.manifest.myapplication" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

 

2- تعریف مشخصات کلی برنامه یا اپلیکیشن:

در این فایل می توانید نام اپلیکیشن ، استایل کلی نرم افزار ، آیکن و بسیاری دیگر از تنظیمات کلی مربوط به برنامه خود را تعریف کنید. بطور اختصاصی به منظور اعمال تنظیمات ذکر شده در فوق می توانید از تگ مربوط به application استفاده کنید. لازم به ذکر است که تمای اجزای برنامه از جمله اکتیویتی ها ، سرویس ها ، provider ها، Reciever ها در داخل تگ application قرار دارد.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.example.manifest.myapplication">


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

3- تعریف مجوزها :

برنامه های اندرویدی به منظور استفاده از خدمات و سایر فایل های سیستمی که در نسخه های اندروید که منحصرا فقط مالکین دستگاه ها قادر به استفاده از آنها هستند . مجوزهایی را بعنوان درخواست برنامه از کاربران در نظر گرفته است که در صورت تایید کاربران آن برنامه قادر به استفاده از آن سرویس ها خواهد بود . مانند مجوز استفاده از دوربین ، بلوتوث ، فایل خارجی و …

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.example.manifest.myapplication">
    
    <uses-permission android:name="android.permission.CAMERA"></uses-permission>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

4- تعریف اجزای اصلی برنامه برنامه:

اکتیویتی ها (Activity)

اکتیویتی ها را می توان به مثابه شکل ظاهری برنامه ها در نظر گرفت که در تعامل لمسی با کاربر، برنامه را در جهات مختلف هدایت می کند. از این رو برنامه نویسنان می بایست اکتیویتی ها خود را در این فایل ثبت کنند. از جمله خصوصیاتی که برای هر اکتیویتی می توان تعریف کرد :تعریف اکتیویتی شروع شونده ، شکل ظاهری یا همان Style اکتیویتی ، جهات حرکت اکتیویتی بصورت افقی یا عمودی و …

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.example.manifest.myapplication">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

سرویس ها (Service)

سرویس ها به عنوان یکی از اجزای برنامه بر خلاف اکتیوتی ها،  دارای  رابط کاربری بصری نیستند. آنها برای پیاده سازی عملیات خود در پس زمینه با طول عمر یا یک API ارتباطات مستقیمی دارند که می تواند توسط برنامه های دیگر فراخوانده شود.
از این رو کلیه  Service ها باید توسط عناصر  و با تگ<service> در پرونده مانیفست تعریف شوند. بنابراین هر آنچه که اعلام نشده است، توسط سیستم دیده نمی شود و هرگز اجرا نخواهد شد.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.example.manifest.myapplication" >


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service
            android:name=".MyService"
            android:icon="@drawable/icon"
            android:label="@string/service_name"
            >
        </service>
    </application>

گیرنده های پخش یا Reciever

در این فایل برنامه نویس یک گیرنده پخش (یک زیرسیستم BroadcastReceiver) را به عنوان یکی از اجزای برنامه اعلام می کند. گیرنده های رادیو قادر به دریافت برنامه هایی هستند که توسط سیستم یا سایر برنامه ها پخش می شوند، حتی زمانی که سایر اجزای برنامه در حال اجرا نیستند.
دو راه برای ایجاد  و معرفی یک گیرنده پخش به برنامه  وجود دارد: یکی آن را در این پرونده با این عنصر اعلام می کند. دیگر این است که گیرنده را به صورت پویا در کد ایجاد کرده و آن را با روش ()Context.registerReceiver  ثبت می کند.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.example.manifest.myapplication" >


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service
            android:name=".MyService"
            android:icon="@drawable/icon"
            android:label="@string/service_name"
            >
        </service>
        <receiver android:name=".OnBootReceiver" android:enabled="true" android:exported="false">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>
    </application>

</manifest>

 

ارائه دهندگان محتوا یا ContentProvider

یک ارائه دهنده محتوا  بعنوان یک زیر مجموعه از ContentProvider شناخته می شود که دسترسی ساختار یافته به داده های مدیریت شده توسط برنامه را فراهم می کند. همه ارائه دهندگان محتوا در برنامه شما باید در یک عنصر <provider> در پرونده مانیفست تعریف شوند؛ در غیر این صورت، سیستم از آنها بی اطلاع خواهد بود و آنها را اجرا نخواهد کرد.
شما فقط  باید ارائه دهندگان محتوا را که بخشی از برنامه شما هستند  را به پرونده تعریف کنید. ارائه دهندگان محتوا در برنامه های دیگر که در برنامه شما استفاده می کنید نباید اعلام شود.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.example.manifest.myapplication" >

    <uses-sdk android:targetSdkVersion="4" android:minSdkVersion ="3"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service
            android:name=".MyService"
            android:icon="@drawable/icon"
            android:label="@string/service_name"
            >
        </service>
        <receiver android:name=".OnBootReceiver" android:enabled="true" android:exported="false">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>
        <provider
            android:name=".myprovider"
            android:authorities="com.facebook.app.FacebookContentProvider157578437735213"
            android:exported="true" />
    </application>

</manifest>

 

5- تعیین ویژگی های سخت افزاری و نرم افزاری

ویژگی های سخت افزاری و نرم افزاری مورد نیاز برنامه، که بر اساس آن  دستگاه هایی که  می توانند برنامه را از Google Play نصب کنند و سازگاری لازم را داشته باشند در این پرونده تعریف می شود.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.example.manifest.myapplication" >

    <uses-sdk android:targetSdkVersion="27" android:minSdkVersion ="19"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service
            android:name=".MyService"
            android:icon="@drawable/icon"
            android:label="@string/service_name"
            >
        </service>
        <receiver android:name=".OnBootReceiver" android:enabled="true" android:exported="false">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>
    </application>

</manifest>

موفق و پیروز باشید.

 


0 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

-- بارگیری کد امنیتی --