Почему приложение крашится, если причина в Manifest

Ответ

Приложение может крашиться из-за проблем в AndroidManifest.xml, если:

  1. Не объявлен основной Activity:
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
  1. Не указаны необходимые разрешения:
<uses-permission android:name="android.permission.INTERNET" />
  1. Некорректное имя Activity/Service (опечатка в пути).

  2. Использование несуществующих тем/атрибутов.

  3. Экспортированные компоненты без защиты (начиная с Android 12+).

Проверяйте логи adb logcat — обычно там есть явные указания на ошибки в манифесте (например, ClassNotFoundException или Permission denial).

Ответ 18+ 🔞

Ёпта, ну смотри, с этим AndroidManifest.xml приложение может накрыться медным тазом на раз-два, и вот почему, блядь:

  1. Забыл объявить главную Activity — это же пиздец, как забыть! Представь, система ищет, с чего стартануть, а там пусто. Чистая хитрая жопа. Нужно вот эту штуку впихнуть:

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    Без этого — приложение установится, а иконки не будет, или тыкнёшь — и нихуя.

  2. Не прописал разрешения — ну это классика, ёперный театр! Хочешь в интернет лезть, а в манифесте молчок. Система справедливо посылает тебя на хуй с Permission denial. Пиши честно:

    <uses-permission android:name="android.permission.INTERNET" />
  3. Опечатка в имени класса — назвал Activity MainActvity (букву i проглотил), а система ищет, ищет, и в итоге: ClassNotFoundException. Сам от себя охуеешь, когда увидишь в логах.

  4. Используешь несуществующую тему или атрибут — напридумывал своего, а система тебе: «А это ещё что за мудя?». Краш на старте, даже не попрощавшись.

  5. Накосячил с экспортом компонентов (особенно с Android 12) — выставил android:exported="true" какой-нибудь своей службе без защиты, а система теперь тебе волнение ебать устроит и просто не даст запуститься. Тут нужно головой думать, э бошка!

Что делать? Не гадай на кофейной гуще! Включай логи через adb logcat и смотри, что там система орёт. Она обычно прямо пальцем показывает: «Вот тут, в манифесте, на 15-й строке — хуйня, а не имя класса» или «Чувак, ты мне доверия ебать ноль, разрешения не дал». Всё как на ладони будет.