【问题标题】:Error type 3 Error: Activity class {} does not exist错误类型 3 错误:活动类 {} 不存在
【发布时间】:2014-01-21 19:24:24
【问题描述】:

我有一个 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 files 时,它会输出:

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

运行设置:

【问题讨论】:

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

标签: android android-studio android-manifest


【解决方案1】:

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

  1. 清理项目
  2. 删除了Build目录
  3. 重新启动 Android Studio
  4. 重建项目
  5. 运行
  6. 可选(转到 android 上的文件菜单,点击“使缓存无效/重新启动...”卸载手机上的应用,然后重试)

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

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

编辑 2
正如以下 cmets 中的几位用户所建议的那样,有时可以通过从您的设备中完全删除并重新安装该应用程序来解决该问题。
只需在终端中输入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,以便取消选中该屏幕上的第一个复选框。

无论如何为我解决了它。最初由用户@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
【解决方案2】:

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

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

【讨论】:

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

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

使用./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
【解决方案4】:

我遇到了同样的问题,我就是这样解决的:

转到Gradle > Tasks > Install > uninstallAll

【讨论】:

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

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

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

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

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

【讨论】:

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

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

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

adb uninstall PACKAGE_NAME

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

【讨论】:

  • 这行得通!在我的情况下 adb uninstall com.demo 我的应用名称是 demo
  • com.demo 将是你的包名
  • 唯一有效的答案! Android Studio 3.4.2,API 级别 28
【解决方案7】:

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

build.gradle 中:

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

【讨论】:

  • 请解释一下如何将applicationId添加到buidl.gradle!
  • 您也可以将应用程序ID添加到应用程序的模块设置中
【解决方案8】:

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

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

adb uninstall <package_name>

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

【讨论】:

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

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

现在它说:

<activity android:name="LandingActivity" >

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

<activity android:name=".LandingActivity" >

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

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

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

【讨论】:

  • @Siavash 除了它不正确™
  • 怎么样@dcow?这里接受的答案对我不起作用,但这个答案对我有用。
  • 哪一个?添加点还是 3 级名称?
【解决方案10】:

这发生在我使用 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 后,这对我来说成了一个问题,我的 app id 从未与我的包名匹配,但升级后我需要添加 --appId YOUR_APP_ID (请注意,它是 --appId 而不是 app-id)。
【解决方案11】:

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

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

【讨论】:

    【解决方案12】:

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

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

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

    【讨论】:

    • 我不敢相信这有效。我的设备上有 2 个帐户,它是为其他用户安装的。
    • 是的,这有点烦人,但通常会在应用程序正在开发时发生,因为您可能想要更改加载图标和其他内容等。
    【解决方案13】:

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

    修复它:

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

      adb kill-server
      adb start-server
      
    2. 尝试启动您的应用。

    3. 如果还是不行,请查看this answer

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

    【讨论】:

      【解决方案14】:

      以下命令对我有用。有时部分卸载应用程序也会导致此问题。

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

      adb uninstall <package_name>
      

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

      【讨论】:

        【解决方案15】:

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

        Instant Run disable 
        
        Build -> Clean Project
        
        File -> Invalidate Caches / Restart
        

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

        【讨论】:

          【解决方案16】:

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

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

          【讨论】:

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

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

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

          【讨论】:

            【解决方案18】:

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

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

            【讨论】:

              【解决方案19】:

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

              前往

              File -> Invalidate Caches / Restart...
              

              为我解决了问题

              【讨论】:

                【解决方案20】:

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

                【讨论】:

                • 为我工作。 LG G6 具有相同的“功能”——我没有找到禁用它的方法。
                【解决方案21】:

                以防万一有人遇到我的问题并且对其他解决方案没有运气... 在调试亚马逊启动器集成时,我试图通过 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() 获取这些值。

                【讨论】:

                • 这正是我的问题!我有一段时间很沮丧,但是一旦我将应用程序包名称放在斜线之前,并将完全限定的包/类名称放在斜线之后,它就起作用了。
                【解决方案22】:

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

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

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

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

                【讨论】:

                  【解决方案23】:

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

                  【讨论】:

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

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

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

                  找到个人资料的设置

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

                  【讨论】:

                  • 天哪,谢谢你,你拯救了我的一天。 fckn 三星也有同样的问题
                  • 经过一天的开发,LG G6 也是如此……这确实为我节省了很多时间!
                  【解决方案25】:

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

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

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

                  【讨论】:

                    【解决方案26】:

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

                    【讨论】:

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

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

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

                    adb install -r <your_application_from.apk>
                    

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

                    【讨论】:

                    • 这是唯一对我有用的东西,谢谢!
                    【解决方案28】:

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

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

                    【讨论】:

                      【解决方案29】:

                      我在过去的某个地方也遇到过同样的问题。 当我们进行一些重构(如重命名、在项目中移动文件等)时,实际上会发生此类问题。 重命名和移动文件需要更改 gradle 文件,因此每当您重命名或移动某些文件时,只需清理项目:

                      构建 -> 清理项目

                      清理项目只是删除 .class 文件并重新编译项目。基本上,它会强制重建项目。

                      有时此类错误在清理项目时未清除,然后尝试从设备(模拟器或物理设备)卸载应用程序并再次运行应用程序。希望这会对你有所帮助,它可以帮助我 50% 的时间。

                      注意:- 当你遇到任何错误时,不要去谷歌,如果这不起作用,请清理项目,做你想做的谷歌。

                      【讨论】:

                        【解决方案30】:

                        我有 LG Stylus,在我的测试手机中,应用程序不会被永久删除。在设置-> 应用程序中,我找到了关闭注释的调试应用程序(我尝试通过 AS 安装和调试)。当我从手机中删除应用程序时,错误消失了。

                        【讨论】:

                        • 这似乎不是我的答案。
                        猜你喜欢
                        • 1970-01-01
                        • 2013-11-09
                        • 2017-06-14
                        • 1970-01-01
                        • 2019-04-18
                        • 2022-11-19
                        相关资源
                        最近更新 更多