我有一个 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
。
Error: Activity class {...} does not exist.
。
重构后我遇到了类似的问题。这就是我为解决这个问题所做的:
清理项目删除构建目录重新启动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 仍然有效。
有时在设备上进行测试时,应用程序无法正确卸载。要验证和解决此问题:
前往设置。转到应用程序。选择您的应用。 (在这里,您可以验证您的应用程序是否未正确卸载)。打开右上角的溢出菜单,然后为所有用户选择卸载。完毕。尝试安装然后再次启动您的应用程序。
adb uninstall {packageName}
解决了这个问题。
通过设备卸载应用程序时我会遇到这个问题(即将应用程序拖到“卸载”选项)。但这里是卸载的正确方法:
使用 ./gradlew uninstallAll
命令。这将防止 Error: Activity class {HomeActivity} does not exist.
错误。
更新:
如果您很懒惰,您可以使用此任务的缩写:./gradlew uA
。
或者在您的 .bash_profile
中为常见的 gradle 任务定义别名,这样做可以节省时间和打字,而且您不必记住每个命令,也不必担心拼写错误。我建议这样做。
.txt
文件并粘贴以下行:C:\Users\K\AppData\Local\Android\sdk\platform-tools\adb.exe uninstall com.myapp.packagename
。然后将此 .txt
文件重命名为 .bat
,您可以在每次要卸载应用程序时运行它(在 Windows 上)
我有同样的问题,这就是我解决它的方法:
前往Gradle > Tasks > Install > uninstallAll
https://i.stack.imgur.com/o6kmE.png
uninstallAll
将如何解决?谢谢。
当您执行以下操作时会发生这种情况
连接您的设备/模拟器
从 Android Studio (AS) 运行应用程序
使用/测试应用程序并在设备仍连接到您的计算机时将其从设备上卸载
尝试从 AS 再次运行应用程序
AS 认为您的设备中仍有该应用程序。
tl;dr - 要解决此问题,您只需在卸载应用程序后断开设备并重新连接即可。
该应用程序已为其他用户安装。请尝试为所有用户卸载相同的应用程序。然后尝试。
或者您可以在运行 adb 命令后尝试。
adb uninstall PACKAGE_NAME
其中 PACKAGE_NAME 是全名,例如 com.example.myapp
adb uninstall com.demo
中,我的应用名称是 demo
重命名/重构后我遇到了同样的错误。我所做的是将 applicationId
属性添加到我的 build.gradle 文件中,并将其值设置为应用程序包。
在 build.gradle 中:
android {
defaultConfig {
applicationId "com.example.myapp"
}
}
就我而言,我在问题开始后从手机上卸载了应用程序,但是下面的命令对我有用。
在终端/cmd中执行以下命令
adb uninstall <package_name>
package_name 类似于 com.example.applicationname 然后,尝试重新安装应用程序。它应该工作。
$/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
结果字符串。
尝试在 AndroidManifest.xml 文件中更改 Activity 的名称。
现在它说:
<activity android:name="LandingActivity" >
尝试在 Activity 名称的开头添加句点:
<activity android:name=".LandingActivity" >
或者将包名称添加到 Activity 名称的开头:
<activity android:name="com.trackingeng.LandingActivity" >
您的包名称只有两个由句点分隔的组件也可能是一个问题(您的包名称是“com.trackingeng”;更标准的包名称是“com.trackingeng.app”)
这发生在我使用 react-native run-android 时,因为我的包名称与我的应用 ID 不匹配。只需添加 --appId YOUR_APP_ID
。
PackageName com.{biz_name}.{app.name} Folder structure was just com.{app.name}
按照以下步骤转到移动设置 > 应用程序 > 您的应用程序 > 更多 > 为所有用户点击卸载应用程序。
原因:因为您的手机中有多个用户,而您只为一个用户卸载了该应用程序。
我认为这个问题发生的另一个原因是它没有为设备上的所有用户完全删除。
转到设置->应用程序->您的应用程序->单击右上角的3个点->为所有用户卸载
这个对我有用。尤其是您更改应用程序的图标或弄乱 AndroidManifest.xml 文件时,会发生这种情况。
对我来说,问题在于AndroidStudio
认为该应用仍在设备上。
要解决这个问题:
重启 adb 守护进程;在终端或命令提示符下,输入: adb kill-server adb start-server 尝试启动您的应用程序。如果它仍然不起作用,请查看此答案。
确保将 Android SDK 的 platform-tools
添加到您的系统路径变量!
下面的命令对我有用。有时,应用程序的部分卸载也会导致这种情况。
在终端/cmd中执行以下命令
adb uninstall <package_name>
然后,尝试重新安装应用程序。它应该工作。
当我遇到这个问题时,我总是尝试这个解决方案并且它有效。
Instant Run disable
Build -> Clean Project
File -> Invalidate Caches / Restart
但这一次我发现了一个例外。这个解决方案对我不起作用。然后我发现问题是模拟器现金。我只做Wipe data
和Cold boot now
,问题就解决了。
https://i.stack.imgur.com/X4AUb.png
在 Android 6 上,当我卸载该应用程序时,它实际上被禁用而不是从设备中删除。
设置>应用程序>单击您的应用程序并卸载
有时应用程序会安装在您手机上的访客用户上,因此请尝试切换访客并卸载应用程序。
另外,尝试执行以下命令卸载应用程序 adb uninstall package "Your package Name"
请注意,如果您在设备上设置了多个配置文件,则您的应用可能已经存在于其他配置文件之一中。
从所有配置文件中卸载应用程序为我解决了这个问题。
我使用 Android Studio 3.2 Beta 5,遇到同样的问题
去
File -> Invalidate Caches / Restart...
为我解决了问题
对我来说这是一个非常具体的问题,我有一个 Lg g5 来测试我的应用程序,并重置我的应用程序数据,我在手机上卸载了它,但手机有一个“不错”的功能,不卸载应用程序立即,以便您可以在一天内重新安装它们。因此,从手机中完全删除该应用程序后,该应用程序已安装但无法使用(已禁用)。
以防万一有人遇到我的问题并且对其他解决方案没有运气......我试图通过 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_ID
和 this.getLocalClassName()
获取这些值。
就我而言,还有下一个原因:
我有 2 个用户:我和访客。并且应用程序都安装在它们上,但最初仅被删除。
当我切换到访客屏幕并从那里删除应用程序时,应用程序安装正常。
希望这会对某人有所帮助:)
如果您已从设备手动卸载应用程序并设置了多用户,则可能会发生此错误。该应用程序需要从设备中的所有用户中卸载。
我有三星 Galaxy。在上面的设置中搜索不起作用,因为它根本没有出现在我的应用程序设置中。
我通过在搜索字段中输入应用程序的名称在手机上找到了该应用程序。我意识到它在“工作”(使用 Mobile@Work)配置文件中并将其删除。您可以通过转到设置->工作资料->应用程序找到配置文件的设置
我希望这可以帮助那些可能无法像许多其他答案所说的那样在设置中找到它的人。
在 android studio 3.5.1 中遇到这个问题我花了一天时间来解决这个问题,尝试了包括清理缓存、重启和重命名包名在内的一切。因此,如果上述任何一项都不起作用,请尝试此操作。
只需转到 gradle > 任务 > 安装 > UninstallAll
这是链接:Error type 3: Activity Class {...} does not exist
就我而言,这是因为我尝试启动的应用程序是为设备上的其他用户安装的。转到设置 -> 应用程序(所有应用程序),然后选择应用程序。单击溢出菜单并选择“为所有用户卸载”。
就我而言,我实际上更改了包名称,它开始导致此问题。
我尝试了很多技巧,但在这里我描述的是对我真正有用的方法。
删除你的构建文件夹,它还包括清理(所以不需要清理它)如果这不起作用,请尝试重新启动 android studio,然后使缓存也无效。如果它仍然给你错误然后尝试清除你的模拟器的数据,希望这能解决问题,
确保您的活动名称正确并确保清单文件中的包名称正确。
我想分享对我有帮助的技巧。我从设备上卸载了该应用程序,并且清理/重建/Android Studio 重启操作没有任何帮助。
由于 Android Studio 认为应用程序仍然安装在设备上并且没有部署它,因此您可以使用 ADB 强制安装:
adb install -r <your_application_from.apk>
其中 -r
表示重新安装应用程序,保留其数据。
即使我遇到了同样的问题,但上述解决方案都不适合我。问题是,我冻结了我试图通过 Titanium Backup 运行的特定应用程序,因此我收到了上述错误。我在 Eclipse 和 Android Studio 中都试过了。
意识到之后,我只是卸载了该应用程序,然后再次运行它。
File -> Invalidate Caches / Restart
adb uninstall <package_name>
为我工作!顺便说一句,这里的包名称类似于com.android.example.appname
。