Как создать свой лаунчер для Android

Создание собственного лаунчера для Android начинается не с дизайна иконок, а с правильной записи в манифесте приложения: именно категория android.intent.category.HOME сообщает системе, что программа претендует на роль домашнего экрана. Без этого объявления ваше приложение останется обычной утилитой, которую система никогда не предложит при нажатии кнопки «Домой». В этой статье разберём полный путь — от выбора инструментов до установки готового лаунчера на устройство.

Писать будем на Kotlin в среде Android Studio — это официальный стек разработки под Android, рекомендованный Google. Предполагается, что у вас есть базовые навыки программирования: если вы знакомы с синтаксисом Java или Kotlin, материал будет понятен без дополнительной подготовки. Если опыта нет, начните с раздела про альтернативные подходы без кода.

Что такое лаунчер и как он работает в системе

Лаунчер — это обычное Android-приложение, которое система рассматривает как кандидата на роль домашнего экрана. Когда пользователь нажимает кнопку «Домой», система ищет все установленные приложения, объявившие поддержку категории HOME, и предлагает выбрать одно из них. Никаких системных привилегий или root-прав для этого не требуется — механизм заложен в Android изначально.

Типичный лаунчер решает три задачи: отображает список установленных приложений, позволяет запускать их и показывает виджеты или ярлыки на рабочем столе. Минимально жизнеспособный лаунчер — это одна активность со списком приложений, полученным через PackageManager. Всё остальное — сетка иконок, жесты, папки, виджеты — надстройки, которые можно добавлять постепенно.

Инструменты для разработки

Основной инструмент — Android Studio, официальная среда разработки от Google. Она включает редактор кода, эмулятор, отладчик и систему сборки Gradle. Установите актуальную стабильную версию с официального сайта разработчиков Android, при первом запуске среда сама загрузит необходимые компоненты SDK.

Для тестирования понадобится либо эмулятор, либо реальное устройство с включённой отладкой по USB. Эмулятор подходит для проверки логики, но поведение лаунчера — жесты, скорость прокрутки, взаимодействие с системными панелями — комфортнее оценивать на физическом смартфоне.

  • 💻 Android Studio — среда разработки с эмулятором и отладчиком
  • 📱 Реальное Android-устройство для финального тестирования
  • 🛠️ Знание основ Kotlin и структуры Android-проекта
  • 🎨 Графический редактор для иконки приложения (подойдёт любой)
📊 Какой у вас опыт в Android-разработке?
Пишу приложения профессионально
Делал простые приложения для себя
Знаю основы Kotlin/Java
Только начинаю изучать разработку

Настройка манифеста: ключевой шаг

Главное, что отличает лаунчер от обычного приложения, — содержимое файла AndroidManifest.xml. В объявление главной активности нужно добавить два фильтра интентов: один стандартный (чтобы приложение появилось в списке программ), второй — с действием MAIN и категорией HOME. Именно второй фильтр регистрирует приложение как домашний экран.

<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>

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.HOME" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

</activity>

Категория DEFAULT обязательна: без неё система не сопоставит интент кнопки «Домой» с вашей активностью. После установки такого приложения на устройство система при следующем нажатии «Домой» покажет диалог выбора лаунчера — это и есть признак того, что манифест настроен верно.

⚠️ Внимание: если после установки приложения система не предлагает выбрать его домашним экраном, проверьте именно блок с HOME и DEFAULT в манифесте. Опечатка в имени категории — самая частая причина, по которой лаунчер «не виден» системе.

Пишем минимальный лаунчер на Kotlin

Минимальная логика лаунчера умещается в несколько десятков строк. Нужно получить список установленных приложений через PackageManager и отобразить его в прокручиваемом списке. Начиная с Android 11 (API 30) для получения полного списка пакетов требуется объявить в манифесте разрешение QUERY_ALL_PACKAGES либо явно указать нужные пакеты через тег <queries> — учтите, что Google Play проверяет обоснованность использования этого разрешения при публикации.

val pm = packageManager

val intent = Intent(Intent.ACTION_MAIN, null)

intent.addCategory(Intent.CATEGORY_LAUNCHER)

val apps = pm.queryIntentActivities(intent, 0)

// Отображаем apps в RecyclerView, при нажатии запускаем activity

При нажатии на элемент списка сформируйте интент запуска через pm.getLaunchIntentForPackage(packageName) и передайте его в startActivity(). Этого достаточно, чтобы ваш домашний экран выполнял свою базовую функцию. Дальше можно добавлять сетку иконок вместо списка, поиск, жесты и виджеты — архитектура ничем не ограничивает фантазию.

☑️ Проверка минимального лаунчера

Выполнено: 0 / 5

Оформление и пользовательский опыт

Домашний экран — самый часто используемый экран смартфона, поэтому требования к плавности и отзывчивости здесь выше, чем у обычных приложений. Используйте RecyclerView или компоненты Jetpack Compose для списков, загружайте иконки асинхронно и кэшируйте их — повторное обращение к PackageManager при каждой прокрутке заметно тормозит интерфейс.

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

Тестирование и установка на устройство

Чтобы назначить созданный лаунчер домашним экраном, установите APK на устройство и нажмите кнопку «Домой» — система предложит выбрать приложение. Также выбор доступен в настройках: путь обычно проходит через раздел приложений по умолчанию, но точное расположение пункта зависит от версии Android и оболочки производителя, поэтому сверяйтесь с документацией своего устройства.

Обязательно проверьте поведение при крайних сценариях: поворот экрана, нехватка памяти, удаление приложения, иконка которого стоит на рабочем столе, перезагрузка устройства. Лаунчер запускается раньше большинства процессов, и ошибка в нём может сделать смартфон неудобным в использовании до смены домашнего экрана.

⚠️ Внимание: перед экспериментами убедитесь, что знаете, как вернуть штатный лаунчер через настройки устройства. Если ваше приложение падает сразу после запуска, а оно назначено домашним экраном, пользоваться смартфоном будет затруднительно. Держите под рукой второй лаунчер или способ добраться до настроек.

ПодходКому подходитОграничения
Kotlin + Android StudioТем, кто хочет полный контрольТребует навыков программирования
Изучение открытых лаунчеров (форк)Разработчикам со средним опытомНужно разбираться в чужом коде и лицензии
Конструкторы приложенийНовичкам без опытаМинимальная гибкость, часто не поддерживают функцию HOME
Заказ у разработчикаТем, кому нужен готовый продуктФинансовые затраты, зависимость от исполнителя
Про публикацию в Google Play

Для публикации лаунчера в Google Play потребуется аккаунт разработчика (регистрация платная). Приложение с разрешением QUERY_ALL_PACKAGES проходит дополнительную проверку: Google требует обосновать, зачем оно нужно. Для лаунчера это обоснование очевидно — отображение списка приложений, но форму всё равно придётся заполнить. Также подготовьте скриншоты, иконку и описание согласно требованиям магазина.

Альтернативы: если писать код не хочется

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

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

Частые ошибки начинающих

Первая типичная ошибка — забытая категория DEFAULT в интент-фильтре, из-за чего система не предлагает приложение в качестве домашнего экрана. Вторая — синхронная загрузка иконок в главном потоке: интерфейс подвисает при первой прокрутке списка. Третья — отсутствие обработки удаления приложений: если пользователь удалил программу, чья иконка закэширована, лаунчер должен корректно обновить список, подписавшись на системные события пакетов.

  • 🚫 Жёсткое кодирование размеров сетки без учёта разных экранов
  • 🚫 Запрос списка приложений при каждом показе экрана вместо кэширования
  • 🚫 Отсутствие обработки поворота экрана и смены конфигурации
  • 🚫 Игнорирование тёмной темы системы

Часто задаваемые вопросы

Нужны ли root-права для создания лаунчера?

Нет. Лаунчер — обычное приложение, которое объявляет поддержку категории HOME в манифесте. Root-права могут понадобиться только для отдельных продвинутых функций, но не для базового домашнего экрана.

Можно ли создать лаунчер без знания программирования?

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

Почему система не предлагает моё приложение как домашний экран?

Проверьте манифест: интент-фильтр должен содержать действие MAIN и категории HOME и DEFAULT. Также убедитесь, что активность имеет атрибут android:exported="true" — он обязателен для компонентов с интент-фильтрами на современных версиях Android.

Как вернуть стандартный лаунчер после тестирования?

Откройте настройки устройства, найдите раздел выбора приложений по умолчанию (точный путь зависит от модели и версии Android) и переключите домашний экран обратно на штатный. Альтернативный способ — удалить ваш лаунчер, тогда система автоматически вернёт прежний.

Можно ли опубликовать свой лаунчер в Google Play?

Да, лаунчеры разрешены правилами магазина. Потребуется платный аккаунт разработчика и, при использовании разрешения QUERY_ALL_PACKAGES, заполнение формы с обоснованием его необходимости.