«Активность по умолчанию не найдена» при обновлении Android Studio

465

Я обновил IntelliJ Idea с 12.0.4 до 12.10.

Теперь все модули в моем проекте Android выдают ошибку:

Ошибка: активность по умолчанию не найдена

Я вернулся к 12.0.4, и все снова работает.

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

Саад Фарук
источник
3
вы смотрели на манифест? может переключение версий прояснилось или как? developer.android.com/guide/components/fundamentals.html
MaxOvrdrv
Нет ... но я заставил его работать с 12.0.4, но повторно импортировал проект с нуля.
Саад Фарук
2
Ключ манифеста, вероятно, ошибка или упущение имени, или проблема пространства имен
slezica
Проблема с манифестом во всех семи модулях проекта: 12.0.4 работает правильно, а 12.10 - нет ??
Саад Фарук
Нет, но, например, изменение в пространстве имен или в компоновке проекта могло бы быть не синхронизировано с манифестом
slezica

Ответы:

889

Если вы видите, что ошибка возникает после обновления версий IntelliJ IDEA или Android Studio или после создания нового APK, вам может потребоваться обновить кэш IDE.

File -> Invalidate Caches / Restart...
Скай Келси
источник
2
Вы также можете попытаться сообщить об ошибке здесь: youtrack.jetbrains.com/issues/IDEA Я считаю, что они очень хорошо справляются с обнаруженными мной ошибками.
Скай Келси
Я думаю, что это было ... Я буду продолжать расследование ... У меня не было времени, чтобы снова открыть каталог как новый проект на каждой из платформ.
Саад Фарук
У меня та же проблема. В моем файле манифеста также появляется ошибка «Не удается разрешить символ« MainActivity »». Я импортировал проект из Eclipse.
Роберто
28
Это работало для меня в Android Studio, но после перезапуска мне также пришлось сделать Сервис -> Android -> Синхронизировать проект с файлами Gradle.
vaughandroid
304

Я не могу комментировать, почему обновление IntelliJ может вызвать эту проблему, потому что я не использую его.

Однако эта ошибка: «Действие по умолчанию не найдено», по-видимому, говорит о том, что у вас нет действия, объявленного в AndroidManifest.xml, помеченного как основное действие, которое должно быть запущено при запуске приложения.

У вас должно быть хотя бы одно действие, которое выглядит примерно так:

<activity
        android:name="com.your.package.name.YourActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

Если у вас нет хотя бы одного действия с таким фильтром намерений, вы, скорее всего, увидите сообщение об ошибке, которое вы включили здесь.

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

mattgmg1990
источник
Муравей строит это хорошо, и IntelliJ 12.0.4
Saad
Я запустил свое приложение в Eclipse, да, у меня есть активность по умолчанию. Я импортировал свое приложение в Android-студию, и все было хорошо, пока однажды я не добавил менеджер уведомлений и прочее, то есть, когда я столкнулся с этой ошибкой. Я сделал File-> Invalidate cach-> Restart и это исправило. Но ошибка не была вызвана отсутствием активности по умолчанию, как вы заявили.
The_Martian
У меня тоже сработало! НО ЗАМЕТЬТЕ: пожалуйста, напишите «android.intent.xxx» строчными буквами - я виноват в том, что в завершении работы над Android Studio были предложены заглавные буквы (это заняло у меня один час) :-(
Philipp P
22
Для тех, кто относительно новичок в Android и вы только что испортили свой проект Android Studio, это ответ, который вы ищете. Принятый ответ для случая, когда обновление испортило вещи для вас.
Том Кидд
3
Я установил это, и мой проект уже запускался много раз, и он внезапно ошибается. Я не знаю, где это не так. Возможно, это потенциальная ошибка AS.
Ликат Юлиус
81

У вашего приложения есть активность по умолчанию при запуске?

возможно, это может быть вашей ошибкой

введите описание изображения здесь

Шаг 1. Выберите «Редактировать конфигурации».

введите описание изображения здесь

Шаг 2 : посмотрите это предупреждение: активность по умолчанию не найдена введите описание изображения здесь

Шаг 3 : выберите действие по умолчанию введите описание изображения здесь

введите описание изображения здесь

Шаг 3. Сохраните изменения и завершите

введите описание изображения здесь

Удачи

введите описание изображения здесь

Дэвид Хакро
источник
Хороший ответ! Это то, что помогает, если в приложении нет активности. (только сервис). вам нужно изменить «активность» на «не запускать активность»
Udi Reshef
Это единственный ответ, который работал для приложений без активности. Спасибо.
сфирон
Это сработало для меня! У меня на самом деле была активность по умолчанию в манифесте, но по какой-то причине Android Studio этого не нашла.
ocramot
2
Я последовал за вышеупомянутые шаги , но теперь он говорит , что «деятельность„MainActivity“не объявлен в AndroidManifest.xml» , хотя MainActivity есть
Дальний
Этот ответ был легко следовать. Также комментарий от @Udi Reshef благодарит
Bishwas Mishra
66

Правильный способ сделать это - добавить следующее в файл манифеста:

<activity
    android:name="FULL_NAME_OF_YOUR_ACTIVITY"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

Это должно быть вставлено между:

<application> </application>

Нет необходимости в аннулировании кэшей.

Юрий
источник
У меня тоже сработало! НО ПРИМЕЧАНИЕ: пожалуйста, напишите «android.intent.xxx» строчными буквами - моя вина была в том, что для завершения работы над Android Studio были предложены заглавные буквы (это заняло у меня один час) :-(
Philipp P
Полезное замечание: «Это должно быть вставлено между: <application> </ application>». Это была моя проблема. Большое спасибо.
Деннис Мэтью
Будьте очень осторожны при рефакторинге ваших кодов. в моем собственном случае я ошибочно рефакторировал «категорию» как «телефон», таким образом, android.intent.category был изменен на android.intent.phone.
Кенни
Я использовал мастер создания проектов Android Studio и все еще должен был сделать это вручную. Я ошибаюсь, считая, что это ошибка?
pdoherty926
46

Если вы работаете над приложением виджетов, это решение должно работать для вас:

  1. Перейти к Edit Configuration
  2. Установите Launch Optionнаnothing
Кишан Васоя
источник
1
ты обалденный!
Рахул Сингх
1
только это работает для меня!
Малит Илеперума
44

Попробуйте щелкнуть правой кнопкой мыши по проекту и выбрать « Открыть настройки модуля» . Затем перейдите на вкладку Sources в вашем модуле, найдите папку src , щелкните по ней правой кнопкой мыши и отметьте ее как Sources (синий цвет).

РЕДАКТИРОВАТЬ: В более поздних версиях Android Studio нет вкладки источников, но вместо этого вы можете отредактировать файл build.gradle : https://stackoverflow.com/a/22028681/1101730

Micer
источник
Это помогло мне, я понял, что intellij сбросил много исходных файлов из src на вкладке Sources. Я переместил свою посылку из проекта и вернулся обратно. Это решило мою проблему
Джесси Блэк
2
Я сделал то же самое, но щелкнул правой кнопкой мыши по папке src и выбрал «Пометить каталог как ...», а затем «Источники Root». - Android Studio 0.8.6
elliptic1
1
Работает как шарм, удалил текущий корень и снова добавил родительскую папку src и gen
Udi Oshi
1
быстрый способ получить доступ к настройкам модуля - щелкнуть в навигаторе проекта и нажать F4
Whyoz
3
это устарело, так как в настройках Open Module больше нет вкладки Sources .
Бадди
23

В Android Studio в разделе «Выполнить / Отладка конфигурации» -> «Приложение Android» -> «Основные» -> «Действия» -> выберите параметр «Не запускать действия».

TouchBoarder
источник
3
Это решение, когда проект является службой или не имеет активности по умолчанию по какой-либо другой причине.
Аарон Манн
2
В Android Studio 2.2.3; Настройка запуска / отладки -> Android-приложение -> myApp -> Общие -> Параметры запуска -> Запуск: ничего
liteflier
21

Ничто из вышеперечисленного не помогло мне. Через некоторое время я обнаружил, что IDEA изменила имена действий на прописные. Подобно:

<intent-filter>
  <action android:name="ANDROID.INTENT.ACTION.MAIN"/>
  <category android:name="ANDROID.INTENT.CATEGORY.LAUNCHER"/>
</intent-filter>

После возврата в нормальное состояние IDEA распознает активность по умолчанию:

<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
yuliskov
источник
19

Сначала убедитесь, что вы включили активность по умолчанию в манифест.

Пример:

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

Если вы все перепробовали и ничего не работает

  • Удалите кеш из своего% Home% \. Gradle \ caches и снова синхронизируйте проект.

Или проверьте этот ответ

https://stackoverflow.com/a/53476487/5507705

Салман
источник
1
Android Studio 3.2.1: Файл -> Синхронизировать проект с файлами Gradle ::: Пришлось сделать это после аннулирования кэша и перезапуска, прежде чем проблема исчезнет.
Крибог
1
Это сработало для меня. То, что я считаю причиной этого, было перемещением моей основной деятельности в другой каталог, ниже по потоку от корня.
Shn_Android_Dev
12

В моем случае File -> Invalidate Caches / Restart...не помогло

Все было в порядке с моим проектом, и, конечно, у меня был следующий фильтр намерений для моей деятельности

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

Что мне действительно помогло, так это удаление папок кеша Android / Gradle (они могут расти до 10-30 ГБ)

Перейти C:\Users\YOUR_USER_WINDOWS_NAMEи удалить следующие папки

  • .android
  • .AndroidStudio3.2
  • .gradle

(вы можете сохранить некоторые настройки Android .AndroidStudio3.2перед удалением, если хотите)

Вы можете создать файл bat, CLEAR_CACHE.cmdкак это, чтобы удалить папки без корзины

rmdir /S /Q .android
rmdir /S /Q .AndroidStudio3.2
rmdir /S /Q .gradle

это будет работать намного быстрее, и вам не нужно удалять его также из корзины

PS положить CLEAR_CACHE.cmdвC:\Users\YOUR_USER_WINDOWS_NAME

Это также хорошая идея, чтобы удалить папку Android Studio и загрузить ее снова

user924
источник
11

Этот метод работает для меня Нажмите на значок приложения и затем выберите изменить конфигурации. В конфигурации редактирования выберите указанное действие вместо действия по умолчанию. Затем укажите путь действия ниже.

Нажмите на приложение и измените конфигурацию

Выберите указанный вид деятельности и каталог

В конце синхронизируйте с файлами Gradle.

Дургапрасад Нагаркатте
источник
8

Я изменил свой Intent-фильтр на

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

Просто добавьте опцию DEFAULT. Я использовал библиотеку Process Phoenix, и она предложила мне определить намерение по умолчанию. Это дополнение решило мою проблему.

Роршах
источник
7

Я получил эту ошибку.

И обнаружил, что в файле манифеста в лаунчере активности я не ставил actionи categoryв фильтр намерений.

Неправильный:

<activity
android:name=".VideoAdStarter"
android:label="@string/app_name">

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

</activity>

Правильный:

<activity
android:name=".VideoAdStarter"
android:label="@string/app_name">

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

</activity>
mehmoodnisar125
источник
7

Выход из Android Studio.

Идти по пути C:\Users\YOUR_WINDOW_USER_NAME\.AndroidStudio3.3\system

Удалить папку / caches и папку / tmp

Абхишек Гарг
источник
6

У @TouchBoarder это почти получилось. Хотя выбор «Не запускать активность» ничего не приводит к запуску.

В Android Studio в разделе «Выполнить / Отладка» -> «Приложение Android» -> «Основные» -> «Активность» -> выберите параметр «Запуск:»

Выберите свою активность. Это не совсем исправляет намеченное поведение, а корректно переопределяет его.

Отредактируйте конфигурации запуска / отладки и укажите активность запуска

Джон
источник
4

Если ваше приложение не имеет Activity (например, только служба), измените параметр запуска / отладки конфигурации «Launch» на Nothing.

черный
источник
4

Я нашел это в своем коде:

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

Если вы посмотрите очень внимательно, это должно быть <activity android:name=".MainActivity">вместо.

По-видимому, я где-то рефакторил «активность», и это также изменило имена в AndroidManifest.

зубрила
источник
в моем случае переименование FilterClasses привело к тегам <intent-filterList> :)
Emanuel
2
Будьте очень осторожны при рефакторинге ваших кодов. в моем собственном случае я ошибочно рефакторировал «категорию» как «телефон», таким образом, android.intent.category был изменен на android.intent.phone.
Кенни
4

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

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

Это было определенно просто. Ссылка:

https://www.aboutonline.info/2018/08/error-running-app-default-activity-not-found-on-android-with-kotlin.html

Сайт это весело
источник
4

Все ответы выше не помогли мне. Попробуйте удалить это

<?xml version="1.0" encoding="utf-8"?>

в вашем AndroidManifest. Затем:

File > Sync Project with Gradle Files
Владислав Вивальди
источник
Я понял, что просто Syncing Project With Gradle Filesотлично работал как вино. Кстати моя ошибка произошла из ниоткуда.
Homerun
4

В моем случае я реорганизовал переменную-член, которая называлась «активность», я переименовал ее в «контекст» ... Я обнаружил, что рефакторинг был сделан для тегов активности в манифесте, и вместо этого я нашел их теги контекста ... это действительно глупо из Android Studio!

Ахмед Адель Исмаил
источник
2
это ошибка от Android-студии, вы правы @tere bentikh
mayank_droid
3

У меня та же проблема в Android Studio 3.3 Canary 3. Проект из стабильной версии Android Studio 3.0 вначале работает правильно, а после некоторых очисток / перекомпоновок начинает отображаться ошибка Нет активности по умолчанию. Я попытался переустановить эту альфа-версию Android Studio: ошибка снова. Но потом запустил его в старом стабильном Android и с помощью apk install, и этот apk работает правильно.

Кроме того, мой проект был создан с помощью Instant App (базовые, функциональные, мгновенные, подкаталоги приложений). Я думаю, что в этой Android Studio есть некоторые проблемы с файлами Manifest.xml, разделенными на несколько каталогов.

Поэтому я изменил настройки в этом: введите описание изображения здесь

Михал Зиобро
источник
3

С Android Studio 3.5 or 3.6я начал получать, Default Activity not foundи я устал отInvalidating Caches & Restart перестройки проекта и т. Д.

Оказалось, то, как я работаю с несколькими модулями и манифестами, было ошибочным. У меня был манифест активности по умолчанию только в модуле библиотеки, но он должен был быть в обоих модулях приложения.

Если предположить, librarymodule appmodule1 appmodule2

  1. Удалить HomeActivityиз librarymoduleманифеста вообще.
  2. Добавить:
class AppModuleActivity1 : HomeActivity() to appmodule1
class AppModuleActivity2 : HomeActivity() to appmodule2
  1. К appmodule1манифесту внутри applicationтега я добавил:
        <activity
            android:name="com.app.name.AppModuleActivity1">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  1. То же самое, appmodule2но измените 2 на 1 в именовании.
Przemo
источник
2
  1. Build -> Rebuild Project
  2. File -> Invalidate Caches.. -> Invalidate and restart

Меня устраивает. Перестройте проект, чтобы убедиться в отсутствии ошибок в проекте. Тогда мы можем аннулировать кеш.

Артём
источник
2

Ошибка: активность по умолчанию не найдена

Я решил этот способ:
Выполнить >> Изменить конфигурацию >> Приложение Android >> Введите путь к классу действий по умолчанию в поле «Запуск».

Локеш Тивари
источник
2

только что столкнулся с этой ошибкой на андроид студии 2.1.2. решена добавлением фильтра намерений MAIN / LAUNCHER к активности по умолчанию в манифесте аромата , хотя фильтр уже был в активности по умолчанию в манифесте по умолчанию. Это даже было в объединенном манифесте, но студия не может найти его, пока я не продублировал фильтр в обоих манифестах.

mjollneer
источник
2

мой опыт: убедитесь, что все ваши Java-файлы были идентифицированы, если IDEA не идентифицирует ваш Java-файл, поэтому он не может понять, что означает "активность"

удачи :)

введите описание изображения здесь

Jianwei-х
источник
2

Ну, я тоже получил эту ошибку,

Ошибка: активность по умолчанию не найдена

хорошо в моем случае это было для модуля износа .. Мне не нужна активность там, так что я просто делаю

  1. перейти к редактированию конфигурации -> износ-> параметры запуска-> запуск-> ничего.
  2. Применить изменения. Нажмите Ok.
  3. Удалите существующий код для активности по умолчанию из файла манифеста.

Примечание. Не забудьте очистить проект и синхронизировать файлы Gradle.

PN10
источник
2

Редактировать androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.java2">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivityName">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
Tasdemir
источник
не могли бы вы расширить этот ответ? Просто блок кода не очень полезен
Azsgy
2

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

Шаг 1. Android Studio ---> Файл -> Недействительный кэш и закрытая андроид студия.

Шаг 2. Перейти к пути C: \ Users \ USER.AndroidStudio3.2 \ system

Шаг 3. Измените имя с расширением .back нижеуказанной папки Пример: компилятор должен быть compiler.back

  • компилятор
  • компилятор-сервер
  • преобразование
  • внешний build_system
  • фреймворк
  • Gradle
  • resource_folder_cache

Шаг 4: Запустите Android studio и откройте свой проект.

Я надеюсь, что это будет работать для вас.

Абхай Бхусари
источник
1
Это был единственный ответ, который сработал для меня, но в дополнение к процессу, описанному здесь, вы должны удалить содержимое папки «system / caches», иначе она будет работать только в первый раз после того, как вы выполнили процесс и перезапустили Android Studio, затем оно вернулось к тому же самому, активность по умолчанию не найдена.
Джеррард
Единственный вариант, который работал для меня. Это произошло после жесткого сброса компьютера, который, возможно, повредил некоторые файлы, как вы сказали. Другим вариантом было переустановить Android Studio, но, к счастью, очистки указанных вами папок достаточно.
RJFares
2

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

  1. Выход из Android Studio
  2. Зайдите в ПОЛЬЗОВАТЕЛЬ -> AndroidStudio -> Система -> Кэши
  3. Удалить эту папку
  4. Запустите Android Studio.

Это будет переиндексировать ваши файлы, и это должно работать

Спасибо kirtan403 от аналогичного вопроса.

Homerun
источник