Ошибка типа 3 Ошибка: класс действия {} не существует

У меня есть проект IntelliJ Android, который я успешно импортировал в Android Studio 0.4.0. Это прекрасно работает, если я ничего не меняю в манифесте. Тем не менее, когда я хочу изменить активность запуска и запуска, он завершается с этой ошибкой:

Launching application: com.trackingeng/LandingActivity.
DEVICE SHELL COMMAND: am start -D -n "com.trackingeng/LandingActivity"  
    -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Starting: Intent { act=android.intent.action.MAIN  
    cat=[android.intent.category.LAUNCHER] cmp=com.trackingeng/LandingActivity }
Error type 3
Error: Activity class {com.trackingeng/LandingActivity} does not exist.

Когда я нажимаю " Синхронизировать проект с файлами Gradle", он выдает:

Project Sync
The project 'TrackingEng' is not a Gradle-based project

Настройки запуска: enter image description here

Ответ 1

Я столкнулся с подобной проблемой после рефакторинга.
Вот что я сделал, чтобы решить эту проблему:

  1. Очистили проект
  2. Удален каталог Build
  3. Перезапущенная Android Studio
  4. Перестройте проект
  5. Запуск
  6. По желанию (перейдите в меню "Файлы" на Android, нажмите "Invalidate Caches/Restart...", удалите приложение на телефоне и повторите попытку)

И все работало нормально!
Я думаю, что ключ к перезапуску вашей IDE.

Надеюсь, это поможет вам или кому-то еще!

Изменить:
Если вышеперечисленные шаги не работают для вас, то удаление кэширования gradle кажется решением, как отмечает @Yasitha.

Изменить 2
Как предложили несколько пользователей в комментариях ниже, иногда проблему можно решить, полностью удалив и переустановив приложение с вашего устройства.
Просто введите adb uninstall <package> в терминале, чтобы полностью удалить приложение с устройства.

ОБНОВЛЕНИЕ для Android Studio 2.1 и выше

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

Чтобы отключить эту опцию, перейдите к опции Preferences в верхнем меню Android Studio и найдите Instant Run, чтобы вы могли снять первый флажок на этом экране.

enter image description here

Во всяком случае, это исправило это для меня. Первоначально указано пользователем @yusufonder. Я обнаружил, что это была проблема, так как установка Gradle все еще работала.

Ответ 2

Может быть полезно кому-то: -

Иногда при тестировании на устройстве приложение не удаляется должным образом. Чтобы проверить и исправить это:

  • Перейдите в Настройки.
  • Перейдите в Приложения.
  • Выберите свое приложение. (здесь вы можете проверить, что ваше приложение не удалено должным образом).
  • Откройте меню переполнения в верхнем правом углу и выберите Удалить всех пользователей.
  • Готово. Попробуйте установить, затем запустите приложение снова.

Ответ 3

Это происходит, когда вы выполняете следующие

  • подключите устройство/эмулятор
  • запустите приложение из Android Studio (AS)
  • используйте/протестируйте приложение и удалите его с устройства, пока оно еще подключен к вашему компьютеру.
  • попробуйте снова запустить приложение из AS

AS считает, что у вас все еще есть приложение на вашем устройстве.

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

Ответ 4

Я столкнулся бы с этой проблемой при удалении приложения через устройство (т.е. При перетаскивании приложения в опцию "Удалить"). Но вот правильный способ удаления:

Используйте команду ./gradlew uninstallAll. Это предотвратит Error: Activity class {HomeActivity} does not exist. ошибка.

Обновить:

Если вы ленивы, вы можете использовать сокращение для этой задачи: ./gradlew uA.

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

Ответ 5

У меня была такая же ошибка после переименования/рефакторинга. То, что я сделал, это добавить атрибут свойства applicationId в файл build.gradle и установить его значение в пакет приложения.

В build.gradle:

android {
defaultConfig {
    applicationId "com.example.myapp"  
  }
}

Ответ 6

Попробуйте изменить имя Activity в вашем файле AndroidManifest.xml.

Сейчас он говорит:

<activity android:name="LandingActivity" >

Попробуйте либо добавить период в начало имени Деятельности:

<activity android:name=".LandingActivity" >

Или добавление имени пакета в начало имени действия:

<activity android:name="com.trackingeng.LandingActivity" >

Также может возникнуть проблема, что ваше имя пакета имеет только два компонента, разделенных точками (имя вашего пакета - "com.trackingeng", более стандартным именем пакета будет "com.trackingeng.app" )

Ответ 7

Приложение уже установлено для другого пользователя. Пожалуйста, попробуйте удалить одно и то же приложение для всех пользователей. Тогда попробуй.

Или вы можете попробовать после запуска команды ADB.

adb uninstall PACKAGE_NAME

где PACKAGE_NAME - полное имя, например com.example.myapp

Ответ 8

Для меня проблема заключалась в том, что AndroidStudio считал, что приложение все еще находится на устройстве.

Чтобы исправить это:

  • перезапустить демон adb; в терминале или командной строке введите:

    adb kill-server
    adb start-server
    
  • попытайтесь запустить приложение.

  • если он все еще не работает, просмотрите этот ответ.

убедитесь, что platform-tools Android SDK добавлен в переменные системного пути!

Ответ 9

Я думаю, что еще одна причина, по которой эта проблема возникает, заключается в том, что она не полностью удалена для всех пользователей на устройстве.

Перейдите в Настройки → Приложения → Приложения → Нажмите на 3 точки в правом верхнем углу → Удалить для всех пользователей

Это работает для меня. Это происходит, особенно, вы меняете значки приложения или возитесь с файлом AndroidManifest.xml.

Ответ 10

для меня, на android 6, когда я удалил приложение, оно фактически отключилось, а не удалено с устройства.

Настройки > Приложения > нажмите на свое приложение и удалите

это зафиксировало это для меня

Ответ 11

Ниже команда сработала для меня. Иногда частичное удаление приложения также вызывает это.

Выполните команду ниже в терминале /cmd

adb uninstall <package_name>

Затем попробуйте переустановить приложение. Он должен работать.

Ответ 12

Для меня это была очень специфическая проблема: у меня есть Lg g5 для тестирования моего приложения, а для reset данных моих приложений я удалил его по телефону, но телефон имеет "приятную" функцию, чтобы не удалять приложения сразу, чтобы вы могли переустановить их в течение одного дня. Таким образом, приложение было установлено, но не использовалось (отключено) после полного удаления приложения с телефона.

Ответ 13

Имейте в виду, что если на устройстве установлено несколько профилей, ваше приложение может уже существовать в одном из других профилей.

Удаление приложения из всех профилей решило проблему для меня.

Ответ 14

Я использую Android Studio 3.2 Beta 5, столкнулся с той же проблемой

Идти к

File -> Invalidate Caches / Restart...

Решил проблему для меня

Ответ 15

В моем случае это было потому, что приложение, которое я пытался запустить, было установлено для другого пользователя на устройстве. Перейдите в Настройки → Приложения (Все приложения) и выберите приложение. Нажмите на меню переполнения и выберите "Удалить для всех пользователей". Это должно решить проблему.

Ответ 16

Выполните шаги ниже. Выберите "Мобильные настройки"> "Приложения"> "Ваше приложение"> "Дополнительно"> "Удалить приложение для всех пользователей".

Причина: потому что у вас в телефоне несколько пользователей, и вы удалили это приложение только для одного.

НАСЛАЖДАТЬСЯ:

Ответ 17

Даже у меня была та же проблема, но ни один из вышеперечисленных решений не работал у меня. Проблема заключалась в том, что я заморозил конкретное приложение, которое я пытался запустить через Titanium Backup, из-за которого я получил вышеуказанную ошибку. Я пробовал как в Eclipse, так и в Android Studio.

После реализации я просто не узнал приложение и снова запустил его.

Проблема решена: -)

Ответ 18

На всякий случай, если кто-то столкнется с моей проблемой и не повезет с другими решениями... Я пытался запустить действие через adb для FireTV, отлаживая интеграцию с панелью запуска Amazon. Однако в моем проекте было 60 различных вариантов сборки (многоплатформенный, многозадачный проект), и ApplicationId не соответствовал ни одному из путей к классам, поскольку пакет времени выполнения (и пути к классам) отличались от applicationId.

Я пытался запустить adb shell am start -n com.myappid.example.packageone.packagetwo/com.myappid.example.packageone.packagetwo.MySplashActivity

(Конечно, я пробовал много комбинаций с com.runtimepath.example так как у меня была дополнительная проблема с другим идентификатором приложения в моем build.gradle и другим во время выполнения)

Что наконец помогло это сообщение fooobar.com/questions/102348/...

Который выявил другой формат! com.myappid.example/com.runtimepath.example.packageone.packagetwo.MySplashActivity

Поэтому, если у вас есть другой путь к классу во время выполнения, попробуйте указать с помощью build.gradle applicationId до косой черты, а затем путь к классу во время выполнения.

Вы также можете получить эти значения из BuildConfig.APPLICATION_ID и this.getLocalClassName() соответственно, если вы хотите зарегистрировать их в logcat.

Ответ 19

У меня Samsung Galaxy. Поиск в настройках выше не работал, потому что он вообще не отображался в моих настройках приложений.

Я нашел приложение на своем телефоне, введя название приложения в поле поиска. Я понял, что это было в профиле "Работа" (используя Mobile @Work) и удалил его. Вы можете найти настройки для профиля, перейдя в Settings-> Работа profile-> Приложения

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

Ответ 20

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

Ответ 21

Я также столкнулся с той же проблемой где-то в прошлом. Такие проблемы на самом деле возникают, когда мы выполняем некоторые рефакторинг, такие как переименование, перемещение файлов внутри проекта и т.д. Переименование и перемещение файлов требуют изменений в файле gradle, поэтому всякий раз, когда вы переименовываете или перемещаете какой-либо файл, просто очищайте проект:

Сборка → Чистый проект

Очистка проекта просто удаляет файлы .class и перекомпилирует проект. В принципе, это заставляет проект перестроить.

Иногда такие типы ошибок не очищались при очистке проекта, а затем пытались удалить приложение с устройства (либо это эмулятор, либо физический), и снова запустить приложение. Надеюсь, это поможет вам, это поможет мне в 50% случаев.

Примечание.. Если вы получили какую-либо ошибку, просто не переходите в Google, очистите проект, если это не работает, что вы хотите сделать Google.

Ответ 22

У меня есть LG Stylus, и в моем тестовом телефоне приложение не удаляется постоянно. В Настройках → Приложение я нашел приложение отладки (которое я пытаюсь установить и отлаживать AS) с отключением adnotation. Когда я удаляю приложение с телефона, ошибка исчезает.

Ответ 23

В моем случае была следующая причина:

У меня 2 пользователя: я и Гость. и приложение было установлено на них обоих, но удалено только сначала.

когда я переключился на гостевой экран и удалил приложение оттуда, приложение установилось нормально.

надеюсь, это кому-нибудь поможет :)

Ответ 24

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

Ответ 25

Когда у меня возникает эта проблема, я всегда пробую это решение, и оно работает.

Instant Run disable 

Build -> Clean Project

File -> Invalidate Caches / Restart

Но я нашел исключение в этот раз. Это решение не работает для меня. Тогда я узнаю, что проблема в эмуляторе наличных. Я просто делаю Wipe data и Cold boot now и проблема решена.

enter image description here

Ответ 26

В моем случае я фактически изменил имя пакета, и это стало причиной этой проблемы.

Я перепробовал много хитростей, но здесь я описываю, что на самом деле работало для меня.

  1. Удалите вашу папку сборки, она также включает в себя чистую (поэтому нет необходимости чистить ее)
  2. Попробуйте перезапустить Android Studio, если это не сработает, а затем отключите кеш.
  3. если он все еще выдает ошибку, попробуйте стереть данные вашего эмулятора, надеюсь, это решит проблему,

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

Ответ 27

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

Ответ 28

Я хотел бы поделиться трюком, который помог в моем случае. Я удалил приложение с устройства, и ничто из операций очистки/восстановления/перезапуска Android Studio не помогло.

Поскольку Android Studio считает, что приложение все еще установлено на устройстве и не развертывает его, вы можете форсировать установку с помощью ADB:

adb install -r <your_application_from.apk>

где -r означает переустановку приложения с сохранением его данных.

Ответ 29

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

1- Очистите свой проект
2- Удалить каталог сборки
3- Перезапустите Android-студию

4- Реконструкция проекта
5- он будет работать успешно.

Спасибо

Ответ 30

Я воспользовался ссылкой на комментарий @jayeffkay.

Он работает для меня после того, как я удалил файлы кэша gradle, расположенные в

/your_proj_directory/.gradle/2.10

2.10 - это версия gradle, используемая в моем случае.