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

Какие сущности описываются в Manifest

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

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

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

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

Манифест Android: Основные сущности

Манифест-файл (AndroidManifest.xml) — это фундаментальный конфигурационный файл любого Android-приложения. Он описывает сущности (компоненты приложения) и метаданные, необходимые операционной системе для работы с приложением. Без корректного манифеста приложение не может быть установлено или запущено. Все сущности описываются внутри корневого тега <manifest> и вложенного в него тега <application>.

Ключевые сущности (компоненты приложения)

1. Активности (Activities)

Активность представляет собой один экран с пользовательским интерфейсом. Каждая активность должна быть объявлена в манифесте, иначе система не сможет её запустить.

<activity
    android:name=".MainActivity"
    android:label="Главный экран"
    android:launchMode="standard">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
  • android:name — обязательный атрибут, указывает класс активности (часто используется сокращённый синтаксис с точкой).
  • <intent-filter> — определяет, как активность может быть запущена (например, как главный экран приложения).

2. Службы (Services)

Сервис — это компонент для выполнения длительных операций в фоновом режиме или для предоставления функциональности другим приложениям.

<service
    android:name=".MyDownloadService"
    android:enabled="true"
    android:exported="false" />
  • android:exported — определяет, могут ли другие приложения запускать данный сервис.
  • Сервисы могут быть запущены (startService) или привязаны (bindService).

3. Приёмники широковещательных сообщений (Broadcast Receivers)

BroadcastReceiver реагирует на системные или прикладные широковещательные сообщения (интенты), например, изменение уровня заряда батареи или включение режима полёта.

<receiver
    android:name=".MyBootReceiver"
    android:enabled="true"
    android:exported="false">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>
  • Для приёма определённых событий внутри тега <receiver> также используется <intent-filter>.

4. Поставщики контента (Content Providers)

ContentProvider управляет общим набором данных приложения, предоставляя к ним доступ другим приложениям через стандартизированный API (аналогично REST).

<provider
    android:name=".MyContentProvider"
    android:authorities="com.example.myapp.provider"
    android:enabled="true"
    android:exported="true" />
  • android:authorities — уникальный идентификатор провайдера, используемый для обращения к нему через URI (например, content://com.example.myapp.provider/table_name).

Важные метаданные и разрешения

Помимо компонентов, в манифесте описывается множество других критически важных аспектов:

  • Разрешения (Permissions): Запрос разрешений на доступ к защищённым функциям ОС или данным пользователя.

    <!-- Разрешения, запрашиваемые приложением -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />
    
    <!-- Разрешения, которые объявляет само приложение для защиты своих компонентов -->
    <permission android:name="com.example.myapp.MY_PERMISSION" />
    
  • Атрибуты приложения (Application Attributes): Глобальные настройки в теге <application>.

    <application
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:allowBackup="true"
        android:supportsRtl="true">
        <!-- Компоненты объявляются здесь -->
    </application>
    
    *   **`android:icon`** и **`android:label`** — иконка и название приложения.
    *   **`android:theme`** — тема по умолчанию.
    *   **`android:allowBackup`** — разрешение на участие в механизме автоматического бэкапа.

  • Интенты (Intent Filters): Уже упоминались в контексте активностей и приёмников. Они декларируют возможности компонента, указывая, на какие действия, типы данных и категории он может реагировать.

  • Мета-данные (Meta-data): Произвольные пары "ключ-значение" для передачи дополнительной информации системным компонентам (например, сервисам Google Play) или библиотекам.

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    
  • Аппаратные и программные особенности (Uses-feature): Объявление о необходимости определённого оборудования (камера, GPS) или программных функций для работы приложения. Это помогает Google Play фильтровать установку.

    <uses-feature android:name="android.hardware.camera" android:required="false" />
    

Заключение

AndroidManifest.xml — это не просто список компонентов, а полноценный "паспорт" приложения. Он централизованно сообщает системе Android:

  1. Какие компоненты существуют в приложении и как их запускать.
  2. Какие разрешения требуются приложению и какие оно само предоставляет.
  3. Какие системные события ему интересны.
  4. Какие требования к устройству (железу и версии ОС) необходимы для его работы.
  5. Как приложение должно выглядеть и вести себя в системе (иконка, название, тема).

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

Какие сущности описываются в Manifest | PrepBro