Что является общим для всех Android-приложений с архитектурной точки зрения?

«Что является общим для всех Android-приложений с архитектурной точки зрения?» — вопрос из категории Мобильное тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Все нативные Android-приложения объединяет единая архитектурная модель, определённая операционной системой.

1. Формат распространения и установки:

  • APK (Android Package Kit) или AAB (Android App Bundle) — это архивные файлы, содержащие весь код и ресурсы приложения для установки.

2. Обязательный манифест — AndroidManifest.xml: Это главный конфигурационный файл, который объявляет системе:

  • Пакетное имя (уникальный идентификатор, например, com.company.app).
  • Компоненты приложения: Activity, Service, BroadcastReceiver, ContentProvider.
  • Запрашиваемые разрешения (доступ к интернету, камере, контактам).
  • Минимальная и целевая версия Android SDK.

3. Четыре основных компонента приложения:

  • Activity — экран с пользовательским интерфейсом.
  • Service — фоновая задача без UI.
  • BroadcastReceiver — компонент, реагирующий на системные широковещательные сообщения.
  • ContentProvider — управляет общим набором данных для доступа из других приложений.

4. Структура проекта и жизненный цикл:

  • Чёткое разделение ресурсов (res/ для layouts, strings, drawables) и кода (java/ или kotlin/).
  • У каждого компонента (особенно Activity) есть строго определённый жизненный цикл (методы onCreate(), onStart(), onResume() и т.д.), которым управляет система.

5. Среда выполнения и API:

  • Исполняются в Android Runtime (ART) (или Dalvik в старых версиях).
  • Взаимодействуют с системой и железом через Android SDK (набор API, предоставляемых Google).

Пример минимального манифеста, общего для любого приложения:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp"> <!-- Уникальный идентификатор -->

    <application
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name">
        <!-- Объявление главного Activity -->
        <activity android:name=".MainActivity">
            <intent-filter>
                <!-- Это объявление делает Activity точкой входа -->
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!-- Здесь могут быть объявлены другие компоненты -->
    </application>
    <!-- Здесь объявляются разрешения -->
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>

Эта общая архитектура обеспечивает безопасность, управление ресурсами и единообразие взаимодействия приложений с ОС Android.