it-roy-ru.com

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

У меня есть проект Android INTELIJ (v12), успешно импортированный в AndroidStudio (v0.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

236
Jacob

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

  1. Очистили проект
  2. Удалил каталог Build
  3. Перезапущенная Android Studio
  4. Перестройте проект
  5. Бежать

И все работало нормально!
Я думаю, что ключ к перезапустить ваш 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 все еще работала.

361
S1LENT WARRIOR

Может быть полезно для кого-то: -

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

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

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

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

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

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

61
Ankit

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

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

Обновление:

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

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

37
Sakiboy

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

В build.gradle :

Android {
defaultConfig {
    applicationId "com.example.myapp"  
  }
}
19
Blue5hift

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

Прямо сейчас это говорит:

<activity Android:name="LandingActivity" >

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

<activity Android:name=".LandingActivity" >

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

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

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

17
Josh

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

Починить это:

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

    adb kill-server
    adb start-server
    
  2. попробуйте запустить ваше приложение.

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

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

11
Eric

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

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

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

7
Long Dao

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

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

это исправило это для меня

7
zain ullah

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

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

6
Alex Styl

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

5
notsopopularguy

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

5
Florian K

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

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

Задача решена :-)

4
Build3r

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

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

adb uninstall <package_name>

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

3
Ronak Mehta

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

Идти к

File -> Invalidate Caches / Restart...

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

3
MakBeard

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

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

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

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

3
Andriy Antonov

На всякий случай, если кто-то столкнется с моей проблемой и не повезет с другими решениями ... Я пытался запустить действие через 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 и другого во время выполнения)

В конечном итоге помог этот пост https://stackoverflow.com/a/36255727/5970652

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

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

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

3
Blaze Gawlik

У меня возникла та же проблема, и я решил ее, изменив рефакторинг своей панели активности, просто изменив имя класса, и это работает.

3
cheko506

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

3
Raj kannan Iyyappan

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

2
Rob McFeely

Если вы неосторожны и пытаетесь что-то отключить в манифесте приложения, убедитесь, что вы не отключаете приложение ...

<application
Android:allowBackup="false"
Android:enabled="true"
...

Я случайно установил для enabled значение «false» вместо allowBackup. Потрачено 2 часа на поиски решения.

2
Sebek

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

1- Очистите ваш проект
2- Удалить каталог сборки
3- Перезагрузите Android Studio
4- Перестроить проект
5- он будет успешно запущен. 

Спасибо

2
Anurag Mishra

Если ваше приложение имеет только два имени пакета Word, например [ com.example ], тогда весь ваш класс должен указываться с полным путем в выражении типа [ com.example.SplashActivity ] вместо относительного пути, например [ .SplashActivity ] Измените это и удалите все ваши папки сборки и перезапустите приложение . Надеюсь, это поможет . Спасибо 

2
Prinkal Kumar

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

2
Robert Grabiński

Для меня в Android Studio 3.1.2 в Ubuntu 16.04 я столкнулся с той же проблемой .. Это происходит, когда мой коллега изменил имя пакета, и это нормально на его компьютере .. Ни чистый проект, ни перестроение проекта не работают ,.

Я использую проект Sync с кнопкой «Файлы Gradle» в верхней панели Android Studio, и все работает хорошо.

2
Francis Bacon

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

Построить -> Чистый проект

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

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

Примечание: - Всякий раз, когда вы получаете какую-либо ошибку, просто не переходите в Google, Очистите проект, если это не работает, сделайте то, что вы хотите Google.

2
lRadha

У меня была такая же проблема. Моя проблема исправлена, когда я отключил мгновенный запуск для Android Studio 2.1.1

2
sorunluadam

Мое решение: закройте «мгновенный запуск» Android-студии.  

«мгновенный запуск» можно найти с помощью следующих шагов: Настройки -> Построение, выполнение, развертывание -> Мгновенный запуск. 

а затем снимите флажок «Включить мгновенный запуск для горячей замены ....» 

2
kevin yang

Это сработало для меня 

Зайдите в настройки модуля -> Falvors -> Идентификатор приложения -> (Добавьте название вашего пакета)

2
Cloy

Я столкнулся с этой проблемой в последнее время, и попробовал все предложения выше, и проблема не сохранилась Наконец я сменил NDK, и проблема была решена ...

2
dan

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

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

/your_proj_directory/.gradle/2.10

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

2
David Cheung

Получил Android/app/build.gradle и поиск

 buildTypes {
     ....
 }

Вы могли бы иметь что-то вроде

buildTypes {
    debug {
        ...
    }
    release {
        ...
    }
    customBuildType {
        ...
    }
}

Выберите buildType, который вы хотите запустить, а затем запустите приложение следующим

react-native run-Android --variant=[buildType] --appIdSuffix '[buildType]'

Так,

react-native run-Android --variant=debug --appIdSuffix 'debug'
2
Stophface

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

  1. Перейти в настройки/приложения (на телефоне)
  2. Если он отключен, удалите его

Это было решение для моего случая

2
Kadir Erturk

У меня была ошибка типа 3. Мне удалось исправить это, добавив следующий код ниже в AndroidMainfest.xml.

    <activity Android:name=".GameActivity">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
1
Domas A.

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

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

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

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

1
Dahsri

Просто чистая сборка сделала свое дело для меня.

Чтобы сделать чистую сборку, выполните:

Build -> Clean Project

Затем выполните сборку или прямой запуск на устройстве.

1
Honza Kalfus

Сохранить имя пакета в файле манифеста и в build.gradle (Модуль: приложение).

1
Ankesh Roy

Мое имя пакета было похоже на «barisciftci. PatternApplier ». Таким образом, изменение строчных букв решило мою проблему, и теперь оно выглядит как «barisciftci.patternapplier» и работает очень хорошо.

1
Ercan Duman

Я решил это, просто удалив папку app -> build и затем заново собрав проект. Папка сборки автоматически воссоздается после сборки проекта, поэтому нет риска ее удаления.

1
Parag Kadam

Я недавно столкнулся с той же проблемой, удалить приложение в машине Android решил мою проблему.

1
John_J

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

1
thusith.92

Это происходит, когда приложение не было удалено должным образом.

Используйте приведенный ниже плагин Android Studio для удаления приложения с устройства [в случае, если вы не смогли найти свое приложение в настройках устройства]

ADBIdea: https://github.com/pbreault/adb-idea

ADBIdea добавляет следующие команды ADB в Android Studio и Intellij: 

  • Приложение для удаления ADB
  • ADB Kill App
  • Приложение ADB Start
  • Приложение ADB Restart
  • ADB Очистить данные приложения
  • АБР очистить данные приложения и перезапустить
  • АБР отозвать разрешения
  • Приложение ADB Start с отладчиком
  • ADB перезапустить приложение с помощью отладчика

Существует два основных способа вызова команды:

Через меню Сервис-> Android-> Идея ADB. Поиск по «ADB» в «Найти действия» (osx: cmd + shift + a, windows/linux: ctrl + shift + a)

1
Rakesh Gujari

Проверьте, если вы создаете скрытую версию. Это предполагаемое поведение для скрытого приложения.

Если вы хотите собрать обычную версию, вам нужно изменить вариант сборки в Android Studio Build> Выбрать вариант сборки , изменить его на обычную.

1
Mohamed Dernoun

В моем случае я определил defaultConfig два раза. 

Я не знаю почему, но перепроверьте это в случае ошибки.

1
Chungmin Park

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

Instant Run disable 

Build -> Clean Project

File -> Invalidate Caches / Restart

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

 enter image description here

1
Md Imran Choudhury

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

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

adb install -r <your_application_from.apk>

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

1
peppered

Если кто-то видит это,

Это исправление сработало для меня, так как ничего из вышеперечисленного не сработало:

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

Это сработало для меня

1
Remco Ritfeld

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

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

adb uninstall PACKAGE_NAME

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

1
Dipendra Sharma

Если вы создаете новый проект из существующего проекта:

build.gradle

defaultConfig {
        applicationId "xxxxxxxxx" //xxxxxxxxx should be "package name (com.demo.app) from AndroidMenifest.xml" 
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "3.0.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
}

затем нажмите синхронизировать в студии Android

1
Krishnendu Bhattacharyya

Как уже отмечали другие, эта проблема может быть вызвана подключенным устройством/эмулятором, в то время как удаление приложения и AS-соединение все еще существует. В конце концов, я просто удаляю все папки build (в папках app и project) в проекте и перезапускаю приложение на устройстве/эмуляторе.

1
IgorGanapolsky

Это случилось со мной при использовании реакционно-нативного run-Android, поскольку имя моего пакета не совпадало с идентификатором моего приложения. Просто добавьте --app-id YOUR_APP_ID.

0
phatmann

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

  1. Перейдите к списку приложений на вашем устройстве и удалите приложение оттуда. Вы увидите, что он в настоящее время помечен как отключенный. Вот почему вы не можете запустить приложение, потому что Android Studio не может установить его, так как считает, что оно уже существует.
0
Captain Sponge

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

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

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

0
osoclever

Android Studio 3.1.3, январь 2019 года После того, как все безуспешно попробовалось здесь, это единственное, что сработало для меня: Удалите виртуальное устройство и повторно загрузите его.

0
Mixtli

Для устройств Android 9: если ваше приложение еще не установлено на устройстве: 1) build apk 2) переместите apk на устройство и установите его 3) вернитесь в Android Studio и нажмите Run - оно запустит приложение

0
Josef Vancura

Если вы тестируете свое приложение на смартфоне, который имеет безопасное удаление приложения в течение 24 часов (например, LG G6), вы должны удалить приложение вручную в настройках, поскольку оно находится в корзине в течение 24 часов после удаления, поэтому Android Studio считает приложение установлено, но оно находится в приложении на вашем смартфоне. Это сработало для меня.

0
Klos

Я сталкиваюсь с этой проблемой после переименования моей посылки ...

так проще всего перейти в File-> Invalidate caches/Restart ....

0
Machhindra Neupane

Я по ошибке добавил лишний пустой тег <application> в AndroidMenifest.xml, который вызывал эту проблему. Я убрал это и теперь все работает нормально

0
Umer Farooq

Я перепробовал все решения выше, мне ничего не помогло. Затем я прочитал весь журнал «Выполнить» .. Там я увидел эту строку 

"Exception occurred while executing:
Android.os.ParcelableException: Java.io.IOException: Requested internal only, but not enough space"

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

0
Lins Louis

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

Если вы не изменили выходной путь, выходной путь apk по умолчанию - {Your Project Path}/app/build/outputs/apk/debug/app-debug.apk

0
CalvinChe

я просто иду в Build> Rebuild Project, и моя проблема решена

0
Ali Raza

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

0
Ezio

В моем случае это было вызвано ndk abiFilters при компиляции для arm. Чтобы исправить это, мне пришлось добавить следующий раздел 'split' в блок Android app/build.gradle:

splits {
    abi {
        enable true //enables the ABIs split mechanism
        reset() //reset the list of ABIs to be included to an empty string
        include "armeabi-v7a", "arm64-v8a", "armv7l"
        universalApk true
    }
}
0
Lee Hounshell

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

Для меня я играл с Android Work Profiles , используя Shelter App - Я скопировал свое собственное приложение в рабочий профиль.

Мне пришлось удалить свое приложение как из обычного профиля, так и из рабочего профиля, и тогда приложение запустилось бы правильно. Каким-то образом существующий пакет внутри рабочего профиля мешал развертыванию IDE.

0
Mendhak

Это также может произойти, если у вас есть по ошибке два средства запуска в вашем AndroidManifest.xml, например:

    <activity Android:name=".ActivityA">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN"/>
            <category Android:name="Android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    <activity Android:name=".ActivityB">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN"/>
            <category Android:name="Android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

Просто оставьте правильное действие LAUNCHER

0
Lemberg