Тип помилки 3 Помилка: Клас активності {} не існує


397

У мене є проект 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.

Коли я натискаю Sync Project з файлами Gradle , він виводить:

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

Запустити налаштування: введіть тут опис зображення


Де ваш оригінальний файл AndroidManifest.xml ?
twlkyao

Там же, під основною папкою проекту.
Яків

Я маю на увазі, ця фотографія в дописі ваша оригінальна AndroidManifest.xmlчи ні.
twlkyao

7
Я знайшов нитку, сподівання може допомогти. stackoverflow.com/questions/19670607 / ...
twlkyao

4
Хоча це не ефективно у випадку з ОП, синхронізація градації вирішена Error: Activity class {...} does not exist.для мене.
динозавр

Відповіді:


612

Я зіткнувся з подібною проблемою після рефакторингу.
Ось що я зробив, щоб вирішити цю проблему:

  1. Очистив проект
  2. Видалено Buildкаталог
  3. Перезавантажена Android Studio
  4. Відновіть проект
  5. Біжи
  6. За бажанням (перейдіть до меню файлів на android, натисніть "Недійсний кеш / Перезапустити ...", видаліть додаток на телефоні та повторіть спробу)

І все працювало чудово!
Я думаю, що головне - перезапустити IDE .

Сподіваюся, це допоможе вам або комусь іншому!

Редагування 1:
Якщо вищезазначені кроки не працюють для вас, видалення кеша Gradle видається рішенням, як вказував @Yasitha.

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

Редагувати 3
Як зазначено у відповіді Абхішека , також слід спробувати видалити додаток зі свого пристрою, якщо на вашому пристрої встановлено кілька користувачів.
Просто перейдіть до Mobile Settings > Apps > [Your App] > More > Uninstall App for All Users

ОНОВЛЕННЯ для Android Studio 2.1 і новіших версій

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

Щоб вимкнути цю опцію, перейдіть до Preferencesпараметра у Android Studioверхньому меню та шукайте, Instant Runщоб ви могли зняти перший прапорець на цьому екрані.

Вимкнути миттєвий запуск в Android Studio 2.1+

У всякому разі, що це зафіксувало для мене. Спочатку вказав користувач @yusufonder. Я виявив, що це проблема, оскільки установка gradle все ще працювала.


2
Це добре працює навіть без видалення каталогу збирання.
Шивам Бхалла

12
Я повинен був зробити видалення Gradle кешу , як описано тут stackoverflow.com/a/25602161/630833
jayeffkay

4
Хоча це запізнення, але я зіткнувся з цією проблемою лише після оновлення Android Studio до 1.5, і вищевказане рішення не працює в моєму випадку.
zulkarnain shah

42
Спробуйте виконати "adb uninstall <package>" у терміналі, щоб повністю видалити додаток із пристрою
Михайло Шарін

3
На Android 7.0, коли ви видаляєте додаток на пристрої (перетягнувши його на мітку "Видалити" на головному екрані пристрою), програма насправді просто "відключена". Потрібно зайти в Налаштування / Програми та вручну видалити додаток звідти (альтернативно використовувати команду ADB). Я підстрибую в неї пару разів, але через кілька рот я забуваю про цю так звану функцію Android 7.0.
Майк Кескінов

325

Може бути корисним для когось: -

Іноді під час тестування на пристрої додаток не видаляється належним чином . Щоб перевірити та виправити це:

  1. Перейдіть у Налаштування .
  2. Перейдіть до програм .
  3. Виберіть додаток. (тут ви можете переконатися, що ваш додаток не видалено належним чином) .
  4. Відкрийте меню переповнення у верхньому правому куті та виберіть Видалити для всіх користувачів .
  5. Зроблено. Спробуйте встановити, а потім знову запустіть додаток.

12
Використовуючи попередній перегляд розробника Android O 3, я не зміг виконати дію "Видалити для всіх користувачів", оскільки він сказав мені, що додаток не існує в списку програм. Біг adb uninstall {packageName}вирішив проблему.
alexbchr

1
Для емулятора відповідь Анкіта не спрацювала. Я видалив свою програму із запуску, але вона залишилася в системі, що спричинило проблему. Мені довелося скористатися цим методом, щоб повністю його видалити.
Чортові овочі

2
thnx man я зіткнувся з цією проблемою на android oreo, де додаток не видалено успіхом повністю
Salman500

3
Це була саме моя проблема, додаток не було встановлено для цього користувача. Просто видалили його за вищезазначеною процедурою, і вона почала працювати
Помилки трапляються

2
мій додаток вимкнено
iamsujan

81

Я зіткнувся з цією проблемою під час видалення програми через пристрій (тобто перетягування програми на опцію "Видалити"). Але ось правильний спосіб видалення:

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

Оновлення:

Якщо вам лінь, ви можете використовувати абревіатуру для цього завдання: ./gradlew uA .

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


Погано, як це було, я все ще думаю, що це було краще. Градле - гидота ІМО.
JJF

4
Це єдине, що працювало для мене з Android Studio 3.1 Canary 7.
NOTiFY

2
чудова відповідь. Здається, деякі пристрої мають проблему з видаленням. Для мене це Xiaomi Mi Mix 2 з EU Build. Я думаю, що це помилка у версії збірки пристрою.
Opiatefuchs

1
Це працює для мене. Після запуску ./gradlew uninstallAll
Shanison

1
На початок 2020 року це було єдине рішення, яке працювало для мене.
PGMacDesign

73

Це відбувається, коли ви робите наступне

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

AS думає, що у вас все ще є додаток у вашому пристрої.

tl; dr - Щоб вирішити це питання, ви можете просто відключити свій пристрій після видалення програми та підключити його знову.


11
Хоча не дозволяйте собі заплутатися, якщо додаток не відображається у програмі запуску, просто перевірте налаштування / програми -> "Усі", якщо програма вказана у списку. Так було і з моєю заявою, і після її видалення все знову працювало нормально.
Даніель Гілберт

1
Якщо він не відображається в Launcher, як сказав @DanielGilbert, його можна легко видалити за допомогою "adb uninstall package.name". Це працювало і для мене.
Майк

Це працювало і для мене. Я виконував зразок проекту, який має дві версії. Я встановив першу версію, а потім видалив її, щоб встановити другу версію. Я витратив багато часу, щоб виправити помилку. Це не перший раз, коли в розробці Android виникли такі дивні, нерозв’язні проблеми ...
Чорт овочі

Моя справа. Відключіть і підключіть пристрій - це працювало для мене! Додаток не було на пристрої, але AS не встановив його, думаючи, що додаток все ще є в моєму пристрої
Вікторія Клімова

35

Додаток уже встановлено для іншого користувача. Спробуйте видалити один і той же додаток для всіх користувачів. Потім спробуйте.

Або ви можете спробувати після запуску команди adb.

adb uninstall PACKAGE_NAME

де PACKAGE_NAME - повне ім’я, наприклад com.example.myapp


Це працює! в моєму випадку, adb uninstall com.demoколи назва мого додаткаdemo
Мухаммад Ові

com.demo буде назвою вашого пакета
Dipendra Sharma

3
Єдина відповідь, що спрацювала! Android Studio 3.4.2, API рівень 28
ykonda

Єдине рішення. Дякую!
Хуан Ігнасіо Барісіч

переконайтесь, що пристрій підключено за допомогою командиadb devices
G. Ciardini

33

У мене було те саме питання, і це я вирішив.

Перейдіть до Gradle> Завдання> Встановити> UninstallAll

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


1
Це працює для мене. Дякую.
Malwinder Singh

Це працює і для мене. Але чому це трапляється і як uninstallAllби вирішити? Дякую.
LiuWenbin_NO.

Працював і для мене!
The Fluffy T Rex

Це має бути правильна відповідь! Оптимальний та ефективний
HatemTmi

27

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

У build.gradle :

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

Поясніть, будь ласка, як додати applicationId до buidl.gradle!
realtebo

Ви також можете додати ідентифікатор програми до параметрів модуля програми як альтернатива
Майкл Керн,

19

Спробуйте змінити ім’я активності у вашому AndroidManifest.xmlфайлі.

Зараз воно говорить:

<activity android:name="LandingActivity" >

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

<activity android:name=".LandingActivity" >

Або додавши назву пакета до початку імені Діяльності:

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

Також може бути проблемою, що у вашому імені пакета є лише два компоненти, розділені періодами (назва вашого пакета - "com.trackingeng"; більш стандартна назва пакета буде "com.trackingeng.app")


2
@Siavash, за винятком того, що це не Correct ™
dcow

2
Як так @dcow? Тут прийнята відповідь не працювала для мене, але ця.
Сіаваш

Який? додавання крапки чи 3-х рівневого імені?
realtebo

15

Виконайте кроки нижче Перейдіть до налаштування мобільного> Програми> Ваша програма> Додатково> Додаток для видалення Hit для всіх користувачів.

Причина: оскільки у вас є кілька користувачів у телефоні, і ви видалили цей додаток лише для одного.

Насолоджуйтесь:


Я думаю, що обрана відповідь повинна додати і це. Це те, що працювало на мене.
jasxir

13

Я думаю, що ще одна причина цієї проблеми полягає в тому, що вона видаляється не повністю для всіх користувачів пристрою.

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

Це працює для мене. Це трапляється особливо, якщо ви змінюєте піктограми програми або возитися з файлом AndroidManifest.xml.


1
Я не можу повірити, що це спрацювало. У мене було 2 акаунти на своєму пристрої, і він був встановлений для іншого користувача.
StarWind0

так, це трохи дратує, але зазвичай це трапляється, коли додаток розробляється, тому що ви можете змінити піктограми та інше тощо.
Дао

12

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

Щоб виправити це:

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

    adb kill-server
    adb start-server
  2. спробуйте запустити додаток.

  3. якщо це все ще не працює, перевірте цю відповідь .

переконайтеся , переконайтеся , що platform-toolsв Android SDK додається в список системних змінних шляху !


11

У моєму випадку я видалив додаток з телефону, після цього почалася проблема, але для мене працювала команда нижче.

Виконай нижче команду в терміналі / cmd

adb uninstall <package_name>

package_name щось на зразок com.example.applicationname Потім спробуйте перевстановити програму. Це має працювати.


1
Це працювало для мене, оскільки я раніше встановив apk через adb, але якимось чином видаливши його через менеджер програм телефону, залишив деякі сліди програми.
dekaru

9

для мене на android 6, коли я видалив додаток, він фактично перейшов до вимкнення, а не видалявся з пристрою.

Налаштування> Програми> натисніть на додаток та видаліть його

це зафіксувало це для мене


Це працює, але ще деякі моменти. Якщо ви видалите його через adb, це не гарантує вирішення проблеми, події, якщо ви не побачите цей пакет через adb pm. Ви повинні зробити це руками, знайти його в Налаштування-> Додаток та вибрати Видалити для всіх користувачів. Після цього ви можете встановити його знову
Silwester

9

Внизу команда працювала на мене. Іноді часткова видалення програми також спричиняє це.

Виконай нижче команду в терміналі / cmd

adb uninstall <package_name>

Потім спробуйте перевстановити програму. Це має працювати.


7

Попереджуйте, що якщо на пристрої встановлено кілька профілів, ваш додаток може вже існувати в одній з інших профілів.

Видалення програми з усіх профілів вирішило проблему для мене.


6

Для мене це була дуже специфічна проблема. У мене є тест Lg g5, щоб перевірити свою програму, і для скидання даних моїх програм я видалив її на телефоні, але телефон має "приємну" функцію, щоб не видаляти додатки. негайно, щоб ви могли перевстановити їх протягом одного дня. Тож додаток було встановлено, але його не можна було використовувати ( вимкнено ) після повного видалення програми з телефону.


Працювали для мене. LG G6 має таку ж "особливість" - я не знайшов способу її відключити.
Cililing

6

У моєму випадку це було тому, що додаток, який я намагався запустити, було встановлено для іншого користувача на пристрої. Перейдіть у Налаштування -> Програми (Усі додатки) та виберіть додаток. Клацніть на меню переповнення та виберіть "Видалити для всіх користувачів". Це повинно вирішити проблему.


Це трапилось і мені, і мені довелося перейти в Налаштування> Програми та повідомлення> Інформація про додаток. Довелося "Видалити для всіх користувачів" та встановити знову.
luckylukein

Я зіткнувся з тим же питанням, і, ймовірно, відповідь має бути оновлено і цим рішенням
Panduka DeSilva

Ця помилка сталася зі мною, коли я налаштовував кілька типів збірок у своєму проекті.
Рахул Растогі

6

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

Йти до

File -> Invalidate Caches / Restart...

Для мене вирішена проблема


6

Коли я отримав цю проблему, я завжди намагаюся це рішення, і воно працює.

Instant Run disable 

Build -> Clean Project

File -> Invalidate Caches / Restart

Але я одного разу знайшов виняток. Це рішення не працює для мене. Тоді я з'ясовую, що проблема - це емулятор готівки. Я просто роблю Wipe dataі Cold boot nowпроблема вирішена.

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


5

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

Я намагався бігти adb shell am start -n com.myappid.example.packageone.packagetwo/com.myappid.example.packageone.packagetwo.MySplashActivity

(Звичайно, я спробував багато комбінацій, com.runtimepath.example оскільки у мене був додатковий виклик іншого applicationId в моєму 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.


1
Це була саме моя проблема! Я був розчарований на деякий час, але одного разу я поставив ім'я пакету додатків перед косою рисою, і повністю кваліфікована назва пакета / класу після косої риси.
Чад Шульц

4

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

Після реалізації я просто видалив додаток, а потім запустив його ще раз.

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


4

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

Оскільки Android Studio вважає, що додаток все ще встановлено на пристрої і не розгортає його, ви можете змусити встановити програму ADB:

adb install -r <your_application_from.apk>

де -rозначає перевстановити додаток, зберігаючи його дані.


Це єдине, що працювало на мене, дякую!
Гюго

4

У мене є Samsung Galaxy. Пошук у налаштуваннях вище не працював, оскільки він взагалі не відображався в моїх налаштуваннях додатків.

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

Я сподіваюся, що це допомагає тому, хто може не знайти його так, як багато інших відповідей заявили, що це можна знайти в налаштуваннях.


1
OMG спасибі людино, ти врятував мені день. Та сама проблема з fckn samsung
Пітер

4

Зіткнувся з цією проблемою в андроїд-студії 3.5.1 У день, щоб вирішити цю проблему, я пробував усе, включаючи очищення кешу, перезапуск та перейменування назви пакета. Тож якщо щось із вищезазначеного не вийшло, то спробуйте це.

Просто перейдіть до gradle> Завдання> Встановити> UninstallAll

Ось посилання: Тип помилки 3: Клас активності {...} не існує


4

Декілька разів програма встановлюється на гостьовому користувачі на вашому мобільному телефоні, тому спробуйте переключити гостя та видалити програму.

Крім того, спробуйте виконати наступну команду для видалення пакета adb uninstall програми "Ім'я вашого пакета"


3

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

Збірка -> Очистити проект

Прибирання проекту просто видаляє .class файли і перекомпілює проект. В основному, це змушує відновити проект.

Іноді такі типи помилок не очищаються в проекті очищення, тоді намагаються видалити додаток із пристрою (будь то емулятор чи фізичний) та запустіть додаток ще раз. Сподіваюся, це допоможе вам, це допомагає мені в 50% разів.

Примітка: - Щоразу, коли ви маєте будь-яку помилку, просто не переходьте на Google, очистіть проект, якщо це не спрацюйте, виконайте те, що ви хочете в Google.


3

У мене була така ж проблема, і я вирішив її рефакторинг моєї запуску активності, просто змініть назву класу, і вона працює.


3

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

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

Дякую


3

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


Це, здається, не відповідає мені.
mpaskov

3

У моєму випадку була наступна причина:

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

коли я перейшов на гостьовий екран та видалив звідти додаток, програма встановлена ​​нормально.

сподіваюся, що це комусь допоможе :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.