ChatGPT解决这个技术问题 Extra ChatGPT

错误类型 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.

当我单击 Sync Project with Gradle 文件时,它会输出:

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

https://i.stack.imgur.com/mbMmP.jpg

您原来的 AndroidManifest.xml 文件在哪里?
在同一个地方,在项目的主文件夹下。
我的意思是帖子中的这张照片是不是你原来的AndroidManifest.xml
我找到了一个线程,希望可以帮助。 stackoverflow.com/questions/19670607/…
虽然在 OP 的情况下无效,但进行 gradle 同步为我解决了 Error: Activity class {...} does not exist.

N
Nimantha

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

清理项目删除构建目录重新启动Android Studio重新构建项目运行可选(转到android上的文件菜单,单击“无效缓存/重新启动...”卸载手机上的应用程序并重试)

一切正常!我认为关键是重新启动你的IDE。

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

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

编辑 3
Abhishek's Answer 中所述,如果您的设备上设置了多个用户,还应尝试从您的设备中删除该应用程序。
只需转到 Mobile Settings > Apps > [Your App] > More > Uninstall App for All Users

编辑 4
Yassin Ajdi 所述,执行 uninstallAll Gradle 任务也可以解决问题。
您可以转到 Gradle > Tasks > Install > uninstallAll 完成工作。

Android Studio 2.1 及更高版本的更新

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

要禁用此选项,请转到 Android Studio 顶部菜单中的 Preferences 选项并查找 Instant Run,以便取消选中该屏幕上的第一个复选框。

https://i.stack.imgur.com/sYyyt.png

无论如何,这为我解决了。最初由用户@yusufonder 指出。我发现这是问题,因为 gradle install 仍然有效。


我已经按照此处的描述删除了 gradle 缓存stackoverflow.com/a/25602161/630833
虽然这是一个较晚的条目,但我只有在将 Android Studio 更新到 1.5 后才面临这个问题,并且上述解决方案在我的情况下不起作用。
尝试在终端中执行“adb uninstall ”以从设备中完全删除应用程序
在 Android 7.0 上,当您在设备上卸载应用程序时(通过将其拖到设备主屏幕上的“卸载”标签),该应用程序实际上只是“禁用”。您需要转到设置/应用程序并从那里手动删除该应用程序(或者使用 ADB 命令)。我弹了几次,但经过几口之后,我忘记了这个 Android 7.0 所谓的功能。
adb uninstall <package_name> 为我工作!顺便说一句,这里的包名称类似于 com.android.example.appname
N
Nimantha

有时在设备上进行测试时,应用程序无法正确卸载。要验证和解决此问题:

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


使用 Android O 开发者预览版 3,我无法为所有用户执行卸载操作,因为它告诉我应用程序列表中不存在该应用程序。运行 adb uninstall {packageName} 解决了这个问题。
对于模拟器,Ankit 的回答不起作用。我已从启动器中删除了我的应用程序,但它仍保留在系统上,这导致了问题。我不得不使用这种方法来完全卸载它。
thnx man我在android oreo上遇到了这个问题,应用程序没有完全卸载成功
这正是我的问题,没有为该用户安装应用程序。刚刚按照上面提到的程序卸载它并开始工作
我的应用程序被禁用
S
Sakiboy

通过设备卸载应用程序时我会遇到这个问题(即将应用程序拖到“卸载”选项)。但这里是卸载的正确方法:

使用 ./gradlew uninstallAll 命令。这将防止 Error: Activity class {HomeActivity} does not exist. 错误。

更新:

如果您很懒惰,您可以使用此任务的缩写:./gradlew uA

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


这是唯一对我有用的 Android Studio 3.1 Canary 7。
很好的答案。某些设备似乎有卸载问题。对我来说,它是带有 EU Build 的小米 Mi Mix 2。我猜这是设备构建版本中的错误。
这对我有用。运行后 ./gradlew uninstallAll
在我卸载设备上的应用程序后,这个成功了。此外,您可以创建一个小快捷方式来卸载您的应用程序。只需创建一个空的 .txt 文件并粘贴以下行:C:\Users\K\AppData\Local\Android\sdk\platform-tools\adb.exe uninstall com.myapp.packagename。然后将此 .txt 文件重命名为 .bat,您可以在每次要卸载应用程序时运行它(在 Windows 上)
谢谢,它适用于 Android Studio 4.0.1
Y
Yassin Ajdi

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

前往Gradle > Tasks > Install > uninstallAll

https://i.stack.imgur.com/o6kmE.png


这也适用于我。但是为什么会出现这个问题以及 uninstallAll 将如何解决?谢谢。
这对我有用。请解释这将如何解决问题?
如果您在 gradle 侧边栏中找不到 uninstallAll 选项。单击运行任何东西(gradle 图标)然后搜索uninstallAll。
对于那些不知道在哪里访问此面板的人,它位于屏幕的右上角。
A
Ankit

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

连接您的设备/模拟器

从 Android Studio (AS) 运行应用程序

使用/测试应用程序并在设备仍连接到您的计算机时将其从设备上卸载

尝试从 AS 再次运行应用程序

AS 认为您的设备中仍有该应用程序。

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


如果应用程序未显示在启动器中,请不要让自己感到困惑,如果列出了应用程序,只需检查设置/应用程序 - >“全部”。我的应用程序就是这种情况,删除它后,一切都恢复正常了。
如果它没有像@DanielGilbert 所说的那样出现在启动器中,您可以使用“adb uninstall package.name”轻松卸载。这对我也有用。
这对我也有用。我正在运行一个示例项目,它有两个版本。我安装了第一个版本,然后卸载它以安装第二个版本。我浪费了很多时间来修复错误。这不是 Android 开发第一次遇到这种奇怪的、无法解决的问题......
我的情况。断开并连接设备 - 这对我有用!该应用程序不在设备上,但 AS 没有安装它,认为该应用程序仍在我的设备中
j
jeremysprofile

该应用程序已为其他用户安装。请尝试为所有用户卸载相同的应用程序。然后尝试。

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

adb uninstall PACKAGE_NAME

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


这行得通!在我的情况 adb uninstall com.demo 中,我的应用名称是 demo
com.demo 将是你的包名
唯一有效的答案! Android Studio 3.4.2,API 级别 28
B
Blue5hift

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

在 build.gradle 中:

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

请解释如何将 applicationId 添加到 buidl.gradle !
您还可以将应用程序 ID 添加到应用程序的模块设置中作为替代
B
Bercove

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

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

adb uninstall <package_name>

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


这对我有用,因为我以前通过 adb 安装了 apk,但是通过手机的应用程序管理器以某种方式卸载它会留下一些应用程序痕迹。
这对我有用。对于多个设备: adb -s uninstall
要获取设备列表,请使用以下命令:$/Users/<user>/Library/Android/sdk/platform-tools/adb devices 获取设备列表(类似于 'VQM0218126001101' 或 'emulator-5555' ),然后:$/Users/<user>/Library/Android/sdk/platform-tools/adb -s <device_ID> uninstall "com.<xxxxx>.<xxxx>" 并等待 Success 结果字符串。
J
Josh

尝试在 AndroidManifest.xml 文件中更改 Activity 的名称。

现在它说:

<activity android:name="LandingActivity" >

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

<activity android:name=".LandingActivity" >

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

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

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


@Siavash,除了它不正确™
怎么样@dcow?这里接受的答案对我不起作用,但这个答案对我有用。
哪一个?添加点或 3 级名称?
t
tom

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


这恰好是我的问题,包名被重命名,但文件夹结构没有遵循模式。 PackageName com.{biz_name}.{app.name} Folder structure was just com.{app.name}
在将 react native 从 0.61.5 升级到 0.62.2 后,这对我来说成了一个问题,我的应用程序 ID 从未与我的包名称匹配,但升级后我需要添加 --appId YOUR_APP_ID (注意它是 --appId 不是 app- ID)。
在花费数小时尝试从其他答案中卸载等的所有不同方法之后,这只是解决了问题。我也遇到了升级到 RN 0.62.x 的问题。配置文件中可能会发生什么更改以使其成为必要?
N
Nimantha

按照以下步骤转到移动设置 > 应用程序 > 您的应用程序 > 更多 > 为所有用户点击卸载应用程序。

原因:因为您的手机中有多个用户,而您只为一个用户卸载了该应用程序。


L
Long Dao

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

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

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


我不敢相信这行得通。我的设备上有 2 个帐户,它是为其他用户安装的。
是的,这有点烦人,但通常在应用程序正在开发时发生,因为您可能想要更改加载图标和其他内容等。
C
Community

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

要解决这个问题:

重启 adb 守护进程;在终端或命令提示符下,输入: adb kill-server adb start-server 尝试启动您的应用程序。如果它仍然不起作用,请查看此答案。

确保将 Android SDKplatform-tools 添加到您的系统路径变量


R
Ronak Mehta

下面的命令对我有用。有时,应用程序的部分卸载也会导致这种情况。

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

adb uninstall <package_name>

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


M
Md Imran Choudhury

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

Instant Run disable 

Build -> Clean Project

File -> Invalidate Caches / Restart

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

https://i.stack.imgur.com/X4AUb.png


N
Nimantha

在 Android 6 上,当我卸载该应用程序时,它实际上被禁用而不是从设备中删除。

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


这行得通,但还有更多要点。如果您通过 adb 删除它并不能保证问题已解决,如果您没有通过 adb pm 看到此包,则事件。您必须手动操作,在 Settings->App 中找到它,然后为所有用户选择 Delete。之后,您可以再次安装它
N
Narendrakumar

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

另外,尝试执行以下命令卸载应用程序 adb uninstall package "Your package Name"


A
Alex Styl

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

从所有配置文件中卸载应用程序为我解决了这个问题。


M
MakBeard

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

File -> Invalidate Caches / Restart...

为我解决了问题


F
Florian K

对我来说这是一个非常具体的问题,我有一个 Lg g5 来测试我的应用程序,并重置我的应用程序数据,我在手机上卸载了它,但手机有一个“不错”的功能,不卸载应用程序立即,以便您可以在一天内重新安装它们。因此,从手机中完全删除该应用程序后,该应用程序已安装但无法使用(已禁用)。


为我工作。 LG G6 具有相同的“功能”——我没有找到禁用它的方法。
B
Blaze Gawlik

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

我试图运行 adb shell am start -n com.myappid.example.packageone.packagetwo/com.myappid.example.packageone.packagetwo.MySplashActivity

(当然,我尝试了许多与 com.runtimepath.example 的组合,因为我在 build.gradle 中遇到了不同 applicationId 的额外挑战,而在运行时又遇到了另一个挑战)

最终有帮助的是这篇文章 https://stackoverflow.com/a/36255727/5970652

其中揭示了不同的格式! com.myappid.example/com.runtimepath.example.packageone.packagetwo.MySplashActivity

因此,如果您有不同的运行时类路径,请尝试在斜线之前使用 build.gradle applicationId 指定,之后使用运行时类路径。

如果要将这些值记录到 logcat 中,也可以分别从 BuildConfig.APPLICATION_IDthis.getLocalClassName() 获取这些值。


这正是我的问题!我有一段时间感到沮丧,但是一旦我将应用程序包名称放在斜线之前,并将完全限定的包/类名称放在斜线之后,它就起作用了。
A
Andriy Antonov

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

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

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

希望这会对某人有所帮助:)


R
Raj kannan Iyyappan

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


这个怎么做?
如果您有多个用户,可以在主屏幕的通知抽屉中找到它(它会与设置图标一起出现)。否则,转到设置页面并转到系统-> 多个用户并单击该用户。登录其他用户后,可以卸载该应用程序。
我在三星 s9+ 的“工作资料”中安装了复制应用程序,卸载了该应用程序的所有副本。
o
osoclever

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

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

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


天哪,谢谢你,你救了我的一天。 fckn 三星也有同样的问题
经过一天的开发,LG G6 也是如此……这确实为我节省了很多时间!
c
codingwithtashi

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

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

这是链接:Error type 3: Activity Class {...} does not exist


N
Nimantha

就我而言,这是因为我尝试启动的应用程序是为设备上的其他用户安装的。转到设置 -> 应用程序(所有应用程序),然后选择应用程序。单击溢出菜单并选择“为所有用户卸载”。


这也发生在 e 上,我不得不去设置>应用程序和通知>应用程序信息。必须“为所有用户卸载”并重新安装。
我遇到了同样的问题,可能答案也应该用这个解决方案更新
当我在我的项目中配置多个构建类型时,我发生了这个错误。
I
Irshad Babar

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

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

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

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


100% 工作我尝试了前两种方法谢谢
Z
Zoe stands with Ukraine

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

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

adb install -r <your_application_from.apk>

其中 -r 表示重新安装应用程序,保留其数据。


这是唯一对我有用的东西,谢谢!
N
Nimantha

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

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


N
Nimantha

File -> Invalidate Caches / Restart


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅