Ошибка типа 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
Я столкнулся с подобной проблемой после рефакторинга.
Вот что я сделал, чтобы решить эту проблему:
- Очистили проект
- Удален каталог
Build
- Перезапущенная Android Studio
- Перестройте проект
- Запуск
- По желанию (перейдите в меню "Файлы" на 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
В моем случае я фактически изменил имя пакета, и это стало причиной этой проблемы.
Я перепробовал много хитростей, но здесь я описываю, что на самом деле работало для меня.
- Удалите вашу папку сборки, она также включает в себя чистую (поэтому нет необходимости чистить ее)
- Попробуйте перезапустить Android Studio, если это не сработает, а затем отключите кеш.
- если он все еще выдает ошибку, попробуйте стереть данные вашего эмулятора, надеюсь, это решит проблему,
Убедитесь, что имя вашей активности указано правильно, а также убедитесь, что имя пакета является правильным в файле манифеста.
Ответ 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, используемая в моем случае.