错误类型3错误:活动类{}不存在

Jac*_*cob 325 android android-manifest android-studio

我有一个INTELIJ(v12)android项目成功导入到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.
Run Code Online (Sandbox Code Playgroud)

当我单击与Gradle文件同步项目时,它输出:

Project Sync
The project 'TrackingEng' is not a Gradle-based project
Run Code Online (Sandbox Code Playgroud)

有人遇到过这个问题吗?有任何想法吗?

运行设置: 在此输入图像描述

S1L*_*IOR 517

重构后我遇到了类似的问题.
这就是我为解决这个问题所做的工作:

  1. 清理了项目
  2. 删除了Build目录
  3. 重启Android Studio
  4. 重建项目

一切正常!
我认为关键是重启IDE.

希望这可以帮助你或其他任何人!

编辑:
如果上述步骤对您不起作用,那么删除gradle缓存似乎是一个解决方案,正如@Yasitha所指出的那样.

编辑2
正如下面评论中的几位用户所建议的那样,有时可以通过从设备中完全删除并重新安装应用程序来解决问题.
只需输入adb uninstall <package>终端即可从设备中完全删除应用.

适用于Android Studio 2.1及更新版本

运行Android Studio 2.1及更高版本时,如果在首选项中启用了即时运行选项(默认情况下已启用),则也会遇到此问题.

要禁用此选项,请转到顶部菜单Mobile Settings > Apps > [Your App] > More > Uninstall App for All Users中的Preferences选项并查找,Android Studio以便取消选中该屏幕上的第一个复选框.

在此输入图像描述

无论如何,它为我修好了.最初由用户@yusufonder指出.我发现这是问题,因为gradle安装仍然有效.

  • 尝试在终端中执行'adb uninstall <package>'以从设备中完全删除应用 (30认同)
  • 我已经删除了gradle cache,如http://stackoverflow.com/a/25602161/630833所述 (12认同)
  • 虽然这是一个较晚的条目,但我只是在将Android Studio更新为1.5后面临此问题,并且上述解决方案在我的情况下不起作用. (4认同)
  • 即使不删除构建目录,它也能正常工作. (2认同)
  • 对我来说完美(和独特)的解决方案.我在build.gradle(`applicationId"com.example."+ CLIENT_ID)`中有一个动态应用程序ID,以便管理多个客户端的自定义,每次我更改变量的值我都无法启动应用程序.啤酒给你男人! (2认同)
  • 尝试上述步骤后,删除 gradle 缓存似乎是解决方法。 (2认同)
  • (╯°□°)╯(┻━┻我必须清除设备上的'App Trash'. (2认同)
  • 我有同样的问题。什么都没有为我工作。清理,重新启动,删除缓存。主要问题是手机中的多用户。从其他用户删除了应用并正常工作 (2认同)
  • 文件 - 与 Gradle 文件同步项目是唯一对我有用的东西 (2认同)
  • 在Android 7.0上,当您在设备上卸载应用程序时(通过将其拖到设备主屏幕上的“卸载”标签上),该应用程序实际上只是“已禁用”。您需要转到“设置/应用程序”并从那里手动删除该应用程序(或者使用ADB命令)。我弹了几次,但是经过几口,我就忘了这个所谓的Android 7.0功能。 (2认同)
  • 小米 Mix 2 手机。在尝试卸载应用程序时,我注意到它会正确卸载,但它也会保持安装在手机本机的“第二空间”(切换应用程序)上。从第二个空间中删除应用程序时 -&gt; 在 Android Studio 中清理项目并再次安装。有用! (2认同)
  • `adb uninstall &lt;package_name&gt;` 对我有用!顺便说一句,这里的包名称是类似于`com.android.example.appname` 的名称。 (2认同)
  • @ReeshabhRanjan 一台设备中有两个用户。我通过手动卸载应用程序解决了这个问题。现在我可以成功启动我的应用程序。 (2认同)
  • 感谢@NJ,在我的 Redmi 设备上..我创建了第二个空间。然后搬到了第一空间。然后,当我从 Android studio 运行应用程序时,它显示应用程序已安装,但它从未出现在屏幕上。经过一番努力,我找到了(新泽西州)的评论。然后检查第二空间,我看到 Android studio 运行了安装在第二空间上的应用程序。我刚刚删除了第二个空格。并重新启动设备。解决了问题。 (2认同)

Nic*_*cks 274

可能对某人有帮助: -

有时在设备上进行测试时,应用程序无法正常卸载.要验证并修复此问题:

  1. 转到"设置".
  2. 转到应用.
  3. 选择你的应用.(在这里,您可以验证您的应用是否未正确卸载).
  4. 打开右上角的溢出菜单,然后为所有用户选择卸载.
  5. 完成.尝试安装然后再次启动您的应用程序.

  • 使用Android O开发人员预览3,我无法执行所有用户的卸载操作,因为它告诉我应用程序列表中不存在该应用程序.运行`adb uninstall {packageName}`解决了这个问题. (9认同)
  • thnx man我在android oreo上面临这个问题,其中应用程序没有完全卸载成功 (2认同)
  • 这正是我的问题,没有为这个用户安装应用程序.只是通过上面提到的程序卸载它,它开始工作 (2认同)
  • 我的应用已禁用 (2认同)

Yas*_*jdi 75

我有同样的问题,这就是我解决它的方法。

转到Gradle > 任务 > 安装 > UninstallAll

在此处输入图片说明

  • 这对我也有用。但是为什么会出现这个问题以及“uninstallAll”如何解决?谢谢。 (2认同)
  • 这是唯一适合我的解决方案。非常感谢 (2认同)
  • 对于那些不知道在哪里访问此面板的人,它位于屏幕的右上角。 (2认同)

小智 69

执行以下操作时会发生这种情况

  • 连接您的设备/模拟器
  • 从Android Studio(AS)运行应用程序
  • 使用/测试应用程序并在设备仍连接到计算机时将其从设备中卸载
  • 尝试再次从AS运行该应用程序

AS认为您的设备中仍然有应用程序.

tl; dr - 要解决此问题,您可以在卸载应用程序并重新连接后断开设备.

  • 虽然如果应用程序未显示在启动器中,请不要让自己感到困惑,只需检查设置/应用程序 - >"全部"如果应用程序已列出.这是我的应用程序的情况,并在删除后,一切都工作正常. (11认同)
  • 如果它没有像@DanielGilbert 所说的那样出现在启动器中,您可以使用“adb uninstall package.name”轻松卸载。这对我也有用。 (2认同)

Sak*_*boy 57

通过设备卸载应用程序时我会遇到此问题(即将应用程序拖到"卸载"选项).但这是正确的卸载方式:

使用该./gradlew uninstallAll命令.这样可以防止Error: Activity class {HomeActivity} does not exist.错误.

更新:

如果你很懒,你可以使用这个任务的缩写: ./gradlew uA.

或者为您的常见gradle任务定义别名.bash_profile,这样做可以节省时间,打字,而且您不必记住每个命令,也不必担心打字错误.我建议这样做.

  • 我认为目前的Android开发工具链是一场灾难.谢谢 (4认同)
  • 这是Android Studio 3.1 Canary 7唯一对我有用的东西. (3认同)
  • 很好的答案。某些设备似乎有卸载问题。对我来说,它是带有 EU Build 的小米 Mi Mix 2。我想这是设备的构建版本中的错误。 (3认同)
  • 这对我有用。运行 ./gradlew uninstallAll 后 (2认同)

Blu*_*ift 26

重命名/重构后我遇到了同样的错误.我所做的是将applicationIdproperty属性添加到我的build.gradle文件中,并将其值设置为应用程序包.

build.gradle中:

android {
defaultConfig {
    applicationId "com.example.myapp"  
  }
}
Run Code Online (Sandbox Code Playgroud)


Dip*_*rma 24

该应用程序已为另一个用户安装。请尝试为所有用户卸载同一应用。然后尝试。

或者您可以在运行adb命令后尝试。

adb uninstall PACKAGE_NAME
Run Code Online (Sandbox Code Playgroud)

其中PACKAGE_NAME是全名,例如com.example.myapp

  • 唯一有效的答案!Android Studio 3.4.2,API级别28 (2认同)

Ber*_*ove 20

在我的情况下,我在问题开始后从手机上卸载了应用程序,但是,以下命令对我有用。

在终端/cmd中执行以下命令

adb uninstall <package_name>
Run Code Online (Sandbox Code Playgroud)

package_name 类似于 com.example.applicationname 然后,尝试重新安装应用程序。它应该工作。

  • 这对我有用。对于多个设备: adb -s &lt;设备 ID&gt; uninstall &lt;软件包名称&gt; (3认同)
  • 这对我有用,因为我之前通过 adb 安装了 apk,但不知何故通过手机的应用程序管理器卸载它留下了一些应用程序痕迹。 (2认同)

Jos*_*osh 16

尝试更改AndroidManifest.xml文件中活动的名称.

现在它说:

<activity android:name="LandingActivity" >
Run Code Online (Sandbox Code Playgroud)

尝试在活动名称的开头添加句点:

<activity android:name=".LandingActivity" >
Run Code Online (Sandbox Code Playgroud)

或者将包名添加到活动名称的开头:

<activity android:name="com.trackingeng.LandingActivity" >
Run Code Online (Sandbox Code Playgroud)

您的包名称只有两个以句点分隔的组件(您的包名称为"com.trackingeng";更标准的包名称为"com.trackingeng.app")也可能是一个问题.

  • @Siavash除了它不是Correct™ (2认同)
  • 怎么这么@dcow?这里接受的答案对我没有用,但是这个答案确实如此. (2认同)

pha*_*ann 14

这发生在我使用 react-native run-android 上,因为我的包名称与我的应用 ID 不匹配。只需添加--appId YOUR_APP_ID.

  • 在将 React Native 从 0.61.5 升级到 0.62.2 后,这对我来说成为了一个问题,我的应用程序 id 从未与我的包名称匹配,但升级后我需要添加 --appId YOUR_APP_ID (注意它是 --appId 不是 app- ID)。 (3认同)
  • 这恰好是我的问题,包名称被重命名,但文件夹结构不遵循模式。````PackageName com.{biz_name}.{app.name} 文件夹结构只是 com.{app.name}```` (2认同)

Lon*_*Dao 13

我认为问题发生的另一个原因是它没有完全删除设备上的所有用户.

转到设置 - >应用程序 - >您的应用程序 - >单击右上角的3个点 - >为所有用户卸载

这个对我有用.尤其是您更改应用程序的图标或使用AndroidManifest.xml文件进行操作时,尤其会发生这种情况.


Eri*_*ric 12

对我来说,问题是AndroidStudio 认为该应用仍在设备上.

要解决这个问题:

  1. 重启adb守护进程 ; 在终端或命令提示符下,输入:

    adb kill-server
    adb start-server
    
    Run Code Online (Sandbox Code Playgroud)
  2. 尝试启动您的应用.

  3. 如果仍然无效,请查看此答案.

确保platform-tools了的Android SDK中被添加到您的系统路径变量!


小智 10

从终端尝试这个

gradlew uninstallAll
Run Code Online (Sandbox Code Playgroud)

这将卸载应用程序所有版本的所有调试、发布、apk。并重新安装应用程序


zai*_*lah 9

对我来说,在Android 6上,当我卸载应用程序时,它实际上是禁用而不是从设备中删除.

设置>应用>单击您的应用并卸载

这为我修好了


Ron*_*hta 8

下面的命令为我工作。有时,部分卸载应用程序也会导致此问题。

在terminal / cmd中执行以下命令

adb uninstall <package_name>
Run Code Online (Sandbox Code Playgroud)

然后,尝试重新安装该应用程序。它应该工作。


Md *_*ury 8

当我遇到这个问题时,我总是尝试这个解决方案并且它有效。

Instant Run disable 

Build -> Clean Project

File -> Invalidate Caches / Restart
Run Code Online (Sandbox Code Playgroud)

但是这一次我发现了一个例外。这个解决方案对我不起作用。然后我发现问题是模拟器现金。我只是这样做Wipe dataCold boot now问题就解决了。

在此处输入图片说明


Abh*_*hek 8

请执行以下步骤:转到“移动设置”>“应用”>“您的应用”>“更多”>“为所有用户点击卸载应用”。

原因:因为您的手机中有多个用户,并且仅卸载了一个应用程序。

请享用:


kar*_*rma 8

File -> Invalidate Caches / Restart


zdd*_*zdd 7

有时,当您重命名项目的根目录时,会发生这种情况,只需删除.idea项目的文件夹并使用 Android Studio 重新打开它即可。


Flo*_*n K 6

对我来说这是一个非常具体的问题,我有一个Lg g5来测试我的应用程序,并重置我的应用程序数据我在手机上卸载它,但手机有一个"很好"的功能,不要卸载应用程序即时,所以你可以在一天内重新安装它们.因此,应用程序已安装但无法使用(禁用)后从手机中删除应用程序完全正常工作.


not*_*guy 6

在我的情况下,这是因为我试图启动的应用程序是为设备上的其他用户安装的.转到设置 - >应用(所有应用),然后选择应用.单击溢出菜单,然后选择"为所有用户卸载".这应该可以解决问题.


Bla*_*lik 6

以防万一有人遇到我的问题并且在其他解决方案上没有运气......我试图在调试亚马逊启动器集成时通过 adb for FireTV 启动一个活动。但是,我的项目有 60 个不同的构建变体(多平台、多应用程序项目)并且 ApplicationId 不匹配任何类路径,因为运行时包(和类路径)与 applicationId 不同。

我试着跑 adb shell am start -n com.myappid.example.packageone.packagetwo/com.myappid.example.packageone.packagetwo.MySplashActivity

(Of course I had tried many combinations with com.runtimepath.example since I had the added challenge of a different applicationId in my build.gradle and another at runtime)

What finally helped was this post /sf/answers/2537900921/

Which revealed a different format! com.myappid.example/com.runtimepath.example.packageone.packagetwo.MySplashActivity

So if you have a different runtime classpath try specifying with the build.gradle applicationId before the slash and the runtime classpath afterwards.

You can also get these values from BuildConfig.APPLICATION_ID and this.getLocalClassName() respectively if you want to log them in logcat.


And*_*nov 6

就我而言,还有下一个原因:

我有 2 个用户:我和来宾。并且应用程序已安装在它们上,但最初仅被删除。

当我切换到访客屏幕并从那里删除应用程序时,应用程序安装正常。

希望这会帮助某人:)


Ale*_*tyl 6

请注意,如果您在设备上设置了多个配置文件,则您的应用可能已经存在于其他配置文件中.

从所有配置文件中卸载应用程序解决了我的问题.


小智 6

我使用Android Studio 3.2 Beta 5时遇到同样的问题

File -> Invalidate Caches / Restart...
Run Code Online (Sandbox Code Playgroud)

为我解决了问题


Raj*_*pan 6

如果您从设备上手动卸载了应用程序并且您设置了多用户,则可能会发生此错误。需要从设备中的所有用户卸载该应用程序。


oso*_*ver 6

我有一个三星 Galaxy。在上面的设置中搜索不起作用,因为它根本没有出现在我的应用程序设置中。

我通过在搜索字段中输入应用程序的名称在手机上找到了该应用程序。我意识到它在“工作”(使用 Mobile@Work)配置文件中并将其删除。您可以通过转到设置-> 工作配置文件-> 应用程序来找到配置文件的设置

我希望这可以帮助那些可能无法像许多其他答案所说的那样在设置中找到它的人。


Nar*_*mar 6

有时应用程序会安装在您手机上的访客用户上,因此请尝试切换访客并卸载该应用程序。

另外,尝试执行以下命令卸载应用程序 adb 卸载包“你的包名”


小智 6

Gradle -> 任务 -> 安装 -> 全部卸载。


Bui*_*d3r 5

即使我遇到了同样的问题,但上述解决方案都不适合我。问题是,由于出现上述错误,我冻结了我试图通过 Titanium Backup 运行的特定应用程序。我在 Eclipse 和 Android Studio 中都尝试过。

意识到后,我只是卸载了应用程序,然后再次运行它。

问题解决了 :-)


pep*_*red 5

我想分享对我有帮助的技巧。我从设备上卸载了应用程序,没有任何清理/重建/Android Studio 重启操作没有帮助。

由于 Android Studio 认为应用程序仍然安装在设备上并且没有部署它,因此您可以使用 ADB 强制安装:

adb install -r <your_application_from.apk>
Run Code Online (Sandbox Code Playgroud)

其中-r意味着重新安装应用程序,保留其数据。


I B*_*I B 5

就我而言,我实际上更改了包名称,它开始导致此问题。

我尝试过很多技巧,但在这里我描述的是真正对我有用的技巧。

  1. 删除你的构建文件夹,它还包括清理(所以不需要清理它)
  2. 如果这不起作用,请尝试重新启动 android studio,然后也使缓存失效。
  3. 如果仍然出现错误,请尝试清除模拟器的数据,希望这能解决问题,

确保您的活动名称正确,并确保清单文件中的包名称正确。


cod*_*shi 5

在 android studio 3.5.1 中遇到这个问题花了我一天时间解决这个问题,尝试了包括清理缓存、重启和重命名包名在内的一切。因此,如果以上任何一项不起作用,请尝试此操作。

只需转到 gradle > 任务 > 安装 > UninstallAll

这是链接: 错误类型 3:活动类 {...} 不存在