Как появляется иконка приложения на рабочем столе?
Иконка приложения на рабочем столе Android появляется благодаря объявлению activity с фильтром intent-filter для действия MAIN и категории LAUNCHER в манифесте приложения (AndroidManifest.xml). Это сигнал системе, что данная Activity — точка входа в приложение и должна быть показана на рабочем столе (в лаунчере).
🔧 Как это устроено
Вот ключевой фрагмент из AndroidManifest.xml, который делает иконку доступной в лаунчере:
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
... >
<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>
</application>
Что делает каждая часть
- <action android:name="android.intent.action.MAIN" />
— говорит системе: _это основная точка входа в приложение.
_ -
<category android:name="android.intent.category.LAUNCHER" />
— указывает, что эта активити должна быть доступна из лаунчера, то есть появляться в списке приложений с иконкой. -
android:icon внутри <application>
— задаёт иконку приложения, которая и будет показана пользователю.
🔄 Когда иконка появляется
-
При установке приложения через Play Market, ADB или напрямую из APK.
-
Система Android сканирует AndroidManifest.xml, находит активность с MAIN и LAUNCHER, и создаёт ярлык на рабочем столе (если лаунчер поддерживает).
-
На современных устройствах может не быть ярлыка сразу — он появится в списке приложений, а пользователь сам перетаскивает его на рабочий стол.
📁 Откуда берётся сама иконка
Иконка указывается в атрибуте android:icon и обычно лежит в ресурсах:
android:icon="@mipmap/ic_launcher"
Файл ic_launcher.xml или PNG-иконки лежат в папке:
res/mipmap-anydpi-v26/ic_launcher.xml
res/mipmap-hdpi/
res/mipmap-xxxhdpi/
...
Их можно создать и настроить через Image Asset Studio в Android Studio (→ New → Image Asset).
📱 Что происходит в системе
-
PackageManager анализирует манифест при установке.
-
Видит activity с MAIN и LAUNCHER.
-
Создаёт компонент в лаунчере.
-
Лаунчер отображает иконку с названием приложения и запускает указанную Activity при нажатии.
⚠️ Что если не указать LAUNCHER?
Если нет категории LAUNCHER в манифесте:
-
Иконка не появится в списке приложений.
-
Приложение можно будет запустить только программно (например, как сервис или через adb shell am start).
-
Это поведение используют, например, библиотеки или фоновые приложения без интерфейса.
🧠 Итого
Иконка приложения появляется на рабочем столе благодаря объявлению активности с фильтром MAIN + LAUNCHER в AndroidManifest.xml. Это даёт системе понять, что приложение можно запускать из лаунчера, и какую активность считать стартовой.