← Назад к вопросам

Что описывается в Android манифесте

1.0 Junior🔥 171 комментариев
#Android компоненты

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что описывается в манифесте Android (AndroidManifest.xml)

AndroidManifest.xml — это фундаментальный конфигурационный файл в каждом приложении для Android. Он представляет собой XML-документ, который содержит исчерпывающую метаинформацию о приложении для системы Android, Google Play и инструментов сборки. Этот файл расположен в корне проекта (app/src/main/).

Вот основные элементы, которые описываются в манифесте, сгруппированные по их назначению.

1. Идентификация и базовые характеристики приложения

Эти данные задаются в корневом элементе <manifest> и элементе <application>.

  • Пакет приложения (package): Уникальный идентификатор приложения (например, com.example.myapp). Это его постоянное имя в системе и в магазине приложений.
  • Версия: versionCode (целочисленный номер для сравнения системой) и versionName (строковая версия для отображения пользователям).
  • Минимальная и целевая версия SDK: minSdkVersion определяет самую старую версию Android, на которой приложение может работать, а targetSdkVersion указывает версию, для которой приложение в первую очередь оптимизировано.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">

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

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

2. Компоненты приложения

Это самая важная часть манифеста. Здесь объявляются все четыре типа компонентов архитектуры Android. Система не сможет распознать и запустить компонент, если он не зарегистрирован здесь.

  • Активности (<activity>): Экран пользовательского интерфейса. Для каждой Activity необходимо объявить хотя бы один <intent-filter> для главного экрана (LAUNCHER).
  • Сервисы (<service>): Компоненты для выполнения длительных операций в фоне.
  • Приемники широковещательных сообщений (<receiver>): Компоненты, которые реагируют на системные или прикладные широковещательные события (например, включение телефона, изменение часового пояса).
  • Поставщики контента (<provider>): Управляют общим набором данных приложения, предоставляя интерфейс для запросов данных от других приложений.
<application ...>
    <!-- Активность -->
    <activity
        android:name=".MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <!-- Сервис -->
    <service
        android:name=".MyService"
        android:exported="false" />

    <!-- Приемник -->
    <receiver
        android:name=".MyBroadcastReceiver"
        android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
</application>

3. Разрешения (Permissions)

В этом разделе описывается взаимодействие приложения с защищенными частями системы и другими приложениями.

  • Разрешения, запрашиваемые приложением (<uses-permission>): Какие права нужны приложению для работы (доступ к интернету, камере, контактам и т.д.).
  • Разрешения, объявляемые приложением (<permission>): Если приложение предоставляет собственный защищенный функционал, оно может объявить свои собственные разрешения для контроля доступа к нему со стороны других приложений.
  • Атрибут android:exported: Критически важный атрибут для компонентов (начиная с Android 12 и обязательно для всех в API 31+). Определяет, могут ли другие приложения (включая системные) запускать данный компонент. exported="true" означает, что компонент доступен извне.
<manifest ...>
    <!-- Запрашиваемые разрешения -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />

    <!-- Объявляем свое разрешение -->
    <permission
        android:name="com.example.myapp.PERMISSION_CUSTOM"
        android:protectionLevel="signature" />

    <application ...>
        <activity
            android:name=".DetailActivity"
            <!-- Эта активность может быть запущена из других приложений -->
            android:exported="true"
            <!-- Но только теми, у кого есть наше кастомное разрешение -->
            android:permission="com.example.myapp.PERMISSION_CUSTOM">
        </activity>
    </application>
</manifest>

4. Аппаратные и программные особенности

  • Необходимые функции (<uses-feature>): Указывает, какие аппаратные или программные функции обязательны для работы приложения (например, NFC, сенсор отпечатков пальцев, поддержка OpenGL ES 3.0). Это помогает Google Play скрывать приложение на устройствах, где этих функций нет.
  • Конфигурации (<uses-configuration>, <uses-locale>): Описывают требования к конфигурации ввода (наличие клавиатуры, сенсорного экрана и т.д.).

5. Прочая важная информация

  • Поддержка экранов (<supports-screens>, <compatible-screens>): Помогает управлять фильтрацией приложения в Google Play для устройств с разными размерами и плотностями экранов.
  • Метаданные приложения: Любые произвольные пары ключ-значение, которые могут быть прочитаны компонентами приложения или системой (например, конфигурация для сервисов Google Play).

Итог: Манифест в Android — это единая точка правды о приложении для операционной системы. Он является связующим звеном между кодом приложения и платформой, определяя его идентичность, структуру, требования и правила безопасности. Правильная настройка манифеста, особенно в части объявления компонентов, разрешений и атрибута exported, критически важна для безопасности, стабильности и видимости приложения в магазине.