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

我有一个IntelliJ Android项目,我成功地导入到Android Studio 0.4.0。如果我不改变manifest中的任何东西,它就能很好地工作。然而,当我想要改变启动器活动并运行时,它会失败,并出现以下错误:

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.

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

Project Sync
The project 'TrackingEng' is not a Gradle-based project
< p >运行设置: enter image description here

427755 次浏览
在重构之后,我也遇到了类似的问题。
这是我所做的解决这个问题:

  1. 清洁项目
  2. 删除Build目录
  3. 重启Android Studio
  4. 重建项目
  5. 运行
  6. 可选(在android上打开文件菜单,点击“Invalidate Caches / Restart…”卸载手机上的应用程序,然后再试一次)

一切都很好!
我认为关键是重新启动IDE.

< p > 编辑1:
如果上面的步骤对你不起作用,那么删除Gradle缓存似乎是一个解决方案,正如@Yasitha所指出的 < p > 编辑2
正如一些用户在下面的评论中所建议的那样,有时这个问题可以通过完全删除并重新安装应用程序来解决。
只要在终端中键入adb uninstall <package>,就可以从设备中完全删除app < p > 编辑3
正如阿布舍克的回答中提到的,还应该尝试从您的设备中删除应用程序,以防在您的设备上设置了多个用户。
简单地去Mobile Settings > Apps > [Your App] > More > Uninstall App for All Users

< p > 编辑4
正如亚辛Ajdi所提到的,执行uninstallAll Gradle任务也可以修复这个问题。
你可以去Gradle > Tasks > Install > uninstallAll来完成这项工作

更新Android Studio 2.1及以上

当运行Android Studio 2.1及以上版本时,当你在首选项中启用了即时运行选项时(默认是启用的),你也会遇到这个问题。

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

Disable Instant Run in Android Studio 2.1+ .

不管怎样,这帮我解决了问题。最初由用户@yusufonder指出。我发现这是问题,因为gradle安装仍然有效。

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

现在它说:

<activity android:name="LandingActivity" >

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

<activity android:name=".LandingActivity" >

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

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

这也可能是一个问题,你的包名只有两个用句点分隔的组件(你的包名是"com.trackingeng";更标准的包名应该是"com.trackingeng.app")

我在重命名/重构后也出现了同样的错误。我所做的就是将applicationId属性属性添加到我的构建中。Gradle文件,并将其值设置为应用程序包。

build.gradle:

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

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

  • 连接您的设备/模拟器
  • 从Android Studio (AS)运行应用程序
  • 使用/测试应用程序,并从设备上卸载它,而它仍然是 连接到您的计算机
  • 尝试从AS重新运行应用程序

AS认为你的设备上还有应用程序。

tl;dr -要解决这个问题,你可以简单地断开你的设备卸载应用程序后,重新连接它。

重构活动启动器并更改类名。

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

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

对我来说,问题是AndroidStudio 认为应用程序仍然在设备上。

解决方法:

  1. < p > 重新启动adb守护进程;在终端或命令提示符中输入:

    adb kill-server
    adb start-server
    
  2. try to launch your app.

  3. if it still doesn't work, check out this answer.

make sure the platform-tools of the Android SDK is added to your system path variables!

去Build >重建项目

我的设备上有一个版本的应用程序无法卸载,因为它以某种方式损坏了。我不得不重新设置设备。

有时在设备上测试时,应用程序不能正常卸载。要验证并修复此问题:

  1. 设置
  2. 应用程序
  3. 选择你的应用程序。
  4. 打开右上方的溢出菜单并选择为所有用户卸载
  5. 完成了。尝试安装,然后再次启动应用程序。

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

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

更新:

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

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

我想分享一下对我有帮助的技巧。我从设备上卸载了应用程序,所有的清理/重建/Android Studio重启操作都不起作用。

由于Android Studio认为应用程序仍然安装在设备上,不部署它,你可以使用ADB强制安装:

adb install -r <your_application_from.apk>

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

正如其他人所注意到的,这个问题可能是由卸载应用程序时附加的设备/模拟器引起的,而As连接仍然存在。在我的端,我只是删除项目中的所有构建文件夹(在app和项目dirs下),并在设备/模拟器上重新启动应用程序。

请遵循以下步骤:

  1. 清理项目
  2. 删除构建目录
  3. 重新启动Android Studio
  4. 重新构建项目

我引用了@jayeffkay的评论:

我已经删除gradle缓存在这里描述Android Studio在运行.apk时出错包名

它为我工作后,我删除gradle缓存文件位于:

/your_proj_directory/.gradle/2.10

2.10是我使用的gradle版本。

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

Build ->清洁项目

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

有时这种类型的错误没有在清洗项目上清洗,然后尝试从设备(无论是模拟器还是物理设备)卸载应用程序,然后再次运行应用程序。希望这对你有帮助,它对我有50%的帮助。

注意:- 无论何时你有任何错误,不要去谷歌,如果这个不行,清理项目,做你想做的谷歌。

禁用Android Studio的即时运行(在2.1.1版本上测试)

我有错误类型3。我设法通过在AndroidMainfest.xml中添加以下代码来修复它。

    <activity android:name=".GameActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />


<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

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

进入“设置”->应用程序->您的应用程序->单击右上方的3个点->卸载所有用户

这对我很管用。尤其是当你改变了应用的图标或者摆弄了AndroidManifest.xml文件时。

我修改了一个NDK,问题就解决了。

对我来说,这是一个非常具体的问题,我有一个Lg g5来测试我的应用程序,为了重置我的应用程序数据,我在手机上卸载了它,但手机有一个“不错”的功能,不立即卸载应用程序,所以你可能可以在一天内重新安装它们。 所以应用程序被安装但不可用(禁用)后,应用程序从手机完全删除它工作

如果你不小心,你试图在你的应用程序清单中禁用某些东西,确保你没有禁用应用程序…

<application
android:allowBackup="false"
android:enabled="true"
...

我不小心将enabled设置为“false”,而不是allowBackup。浪费了2个小时寻找解决方案。

我的解决方案是:关闭android studio的“即时运行”。

"instant run"可以通过以下步骤找到: 首选项->构建,执行,部署->立即运行

. b

然后取消勾选“Enable Instant Run to hot插拔....”复选框。

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

设置在应用程序在点击应用程序并卸载

检查你是否正在构建隐藏版本。这是隐藏应用的预期行为。

如果你想构建常规版本,你需要在Android Studio Build >选择Build Variant中更改build Variant,将其更改为常规。

我有LG Stylus,在我的测试手机中,应用程序不会永久删除。在设置->应用程序中,我发现调试应用程序(我尝试安装和调试AS)与声明关闭。当我删除应用程序从我的手机,错误消失。

如果你从一个现有的项目中创建一个新项目:

build.gradle

defaultConfig {
applicationId "xxxxxxxxx" //xxxxxxxxx should be "package name (com.demo.app) from AndroidMenifest.xml"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "3.0.0"
ndk {
abiFilters "armeabi-v7a", "x86"
}
}

然后在Android Studio中单击同步

我通过简单地删除app -> build文件夹,然后重建项目来解决这个问题。构建文件夹将在项目构建后自动重新创建,因此删除它没有风险。

就我而言,这是因为我试图启动的应用程序在设备上为另一个用户安装了。进入设置->应用程序(所有应用程序)和选择应用程序。单击溢出菜单并选择“卸载所有用户”。

如果你的应用只有两个字的包名,比如[com.example],那么你所有的类都必须在manifest中以完整路径提到,比如[com.example.SplashActivity],而不是像[.SplashActivity]这样的相对路径。 改变这一点,删除你所有的构建文件夹,重新运行app

进入模块设置->Falvors→应用程序id -> (添加您的包名)

只是为了以防有人遇到我的问题,没有其他的解决方案… 我试图通过adb为FireTV启动一个活动,同时调试亚马逊启动器集成。然而,我的项目有60个不同的构建变体(多平台,多应用程序项目)和ApplicationId不匹配任何类路径,因为运行时包(和类路径)不同于ApplicationId 我试着逃跑 adb shell am start -n com.myappid.example.packageone.packagetwo/com.myappid.example.packageone.packagetwo.MySplashActivity < / p >

(当然,我已经尝试了许多与com.runtimepath.example的组合,因为我在构建中遇到了不同applicationId的额外挑战。Gradle和另一个在运行时)

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

这揭示了一种不同的格式! com.myappid.example/com.runtimepath.example.packageone.packagetwo.MySplashActivity < / p >

因此,如果您有不同的运行时类路径,请尝试使用构建指定。斜杠前面是gradle applicationId,斜杠后面是运行时类路径。

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

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

我有两个用户:我和Guest。 而app在这两个平台上都安装了,但只在一开始就删除了

当我切换到Guest屏幕并从那里删除应用程序时,应用程序安装成功。

希望这能帮助到一些人:)

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

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

只是做一个干净的构建对我来说很有用。

要进行干净的构建,请执行以下操作:

Build -> Clean Project

然后在设备上进行构建或直接运行。

对我来说,在Android Studio 3.1.2和Ubuntu 16.04上,我遇到了同样的问题。 当我的同事更改包名时就会发生这种情况,并且在他的机器上没有问题。 既不清理项目,也不重建项目工作

我使用同步项目与gradle文件按钮在Android工作室的顶部面板和一切工作良好。

android/app/build.gradle,然后搜索

 buildTypes {
....
}

你可能会有

buildTypes {
debug {
...
}
release {
...
}
customBuildType {
...
}
}

选择你想要启动的buildType,然后启动应用程序如下

react-native run-android --variant=[buildType] --appIdSuffix '[buildType]'

所以,

react-native run-android --variant=debug --appIdSuffix 'debug'

删除应用程序在Android机器。

这对我很有用。

这个方法对我很有效:

  1. 从您的手机中删除已安装的调试APK
  2. 在Android Studio中,选择Build,选择Build APK(s)
  3. 把这个生成的APK放在你的手机上并启动它
  4. 退出此应用程序,并尝试从Android Studio再次调试应用程序

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

File -> Invalidate Caches / Restart...

为我解决了问题

在manifest文件和build.gradle(Module:app)中保持包名相同。它解决了我的问题。

这通常发生在卸载正在开发的应用程序时。检查您是否激活了guest帐户,如果激活了,切换帐户并卸载应用程序,切换回Admin用户(您)。坚持下去!

在我的例子中,我已经定义了defaultConfig两次。

我不知道为什么,但要仔细检查以防出错。

我在不同的设备上尝试了相同的应用程序,它可以工作。最后我注意到应用程序被禁用:

  1. 进入设置/应用程序(在手机上)
  2. 如果已禁用,请将其移除

当应用程序没有正确卸载时,就会发生这种情况。

使用下面的Android Studio插件从设备上卸载应用[以防你在设备设置中无法找到你的应用]

ADBIdea: https://github.com/pbreault/adb-idea

ADBIdea为Android Studio和Intellij添加了以下ADB命令:

  • ADB卸载App
  • ADB Kill App
  • ADB Start App
  • ADB重启App
  • ADB Clear App Data
  • ADB清除应用数据并重新启动
  • ADB撤销权限
  • ADB启动应用程序与调试器
  • ADB使用调试器重新启动应用程序

调用命令有两种基本方式:

通过Tools->Android->ADB Idea菜单 通过搜索“;ADB"在&;Find action &;

  • Mac OS X: Cmd + 转变 + 一个
  • Windows/Linux: Ctrl + 转变 + 一个

我的包名是“barisciftci. __abc0”。因此,将其更改为全小写解决了我的问题,所以现在它看起来像“barisciftci.patternapplier”。

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

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

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

adb uninstall <package_name>

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

我错误地在AndroidMenifest.xml中添加了额外的空<application>标签,这导致了这个问题。

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

Instant Run disable


Build -> Clean Project


File -> Invalidate Caches / Restart

但这次我发现了一个例外。这个办法对我没用。然后我发现问题是模拟器的现金。我只要做Wipe dataCold boot now,问题就解决了。

enter image description here

如果您在开发即时应用程序时遇到此错误,请转到设备设置->应用程序,并从设备中清除即时应用程序。

如果你在智能手机上测试你的应用程序,它有24小时安全应用程序删除(如LG G6),你必须在设置中手动卸载应用程序,因为卸载后24小时它在bin中,所以Android Studio认为应用程序已经安装,但它在你的智能手机上的应用程序thrash中。

重命名我的包后,我面临这个问题…

所以最简单的一个是去文件->无效缓存/重新启动....

删除虚拟设备并重新下载(在Android Studio 3.1.3上测试,2019年1月)。

如果你在你的AndroidManifest.xml中错误地有两个启动器活动,这也可能发生:

    <activity android:name=".ActivityA">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".ActivityB">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

只留下正确的LAUNCHER Activity

我读了所有的“运行”日志,在那里我看到了这一行:

"Exception occurred while executing:
android.os.ParcelableException: java.io.IOException: Requested internal only, but not enough space"

我的问题是,没有内部的空闲空间来安装应用程序。所以,我删除了一些文件,应用程序安装成功。

在我的例子中,我实际上改变了包的名称,它开始导致这个问题。

我尝试过很多方法,但在这里我只描述对我有效的方法。

  1. 删除你的构建文件夹,它也包括清洁(所以不需要清洁它)
  2. 尝试重新启动android工作室,如果这没有工作,然后使缓存无效。
  3. 如果它仍然给你错误,然后尝试清除模拟器的数据,希望这将解决问题,

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

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

在我的情况下,这是由ndk abiFilters在编译arm时引起的。 为了解决这个问题,我不得不在app/build中添加以下“分割”部分。Gradle的android block:

splits {
abi {
enable true //enables the ABIs split mechanism
reset() //reset the list of ABIs to be included to an empty string
include "armeabi-v7a", "arm64-v8a", "armv7l"
universalApk true
}
}

我一直在使用保护应用程序来使用Android工作简介 -我已经将自己的应用程序复制到工作配置文件中。

我必须从常规配置文件和工作配置文件中删除我的应用程序,然后应用程序才能正常启动。工作概要文件中的现有包在某种程度上阻碍了IDE部署。

问题是由于在设备仍然插入时卸载应用程序引起的。 设备会禁用应用,而不是删除应用。< / p >

  1. 进入你设备上的应用程序列表,从那里卸载应用程序。您将看到它当前被标记为禁用。这就是为什么你不能运行应用程序,因为Android Studio无法安装它,因为它认为它已经存在。

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

也可以在执行adb命令后再尝试。

adb uninstall PACKAGE_NAME

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

除了第一个upvotes评论提供的情况外,还有一种情况会导致这个错误:输出的apk文件不能被Android Studio替换,你可以手动删除它并重新构建,它应该可以工作。

如果你没有改变输出路径,默认的apk输出路径是{Your Project Path}/app/build/outputs/apk/debug/app-debug.apk

如果你的应用还没有安装在设备上(在Android 9上测试):

  1. 构建的apk
  2. 移动apk到设备并安装
  3. 返回Android Studio,按Run启动应用程序

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

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

我希望这能帮助到一些人,他们可能不会以同样的方式找到它,许多其他答案都可以在设置中找到。

我正在简单地解决(不要删除构建文件夹):

  1. 删除*.apk中的所有文件 “\ yourapp \ app \ \中间体\ split-apk \调试\片”李< / >
  2. 正在运行应用程序比较弹出消息“应用程序安装 “是否要卸载现有应用程序?”单击 李好< / >
  3. 重新构建项目
  4. 再次运行项目

遵循以下步骤 去 移动设置>应用程序在App >更多的在

.卸载所有用户的应用程序

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

以我为例,我不知道为什么,智能手机阻止了我的应用程序。为了解决这个问题,我去了配置->应用程序,找到我的应用程序,并按下“卸载”。我进入了配置,因为我的应用程序没有出现在菜单上。

当我在模拟器中切换到客户配置文件时,我也收到了同样的错误消息。我切换回所有者配置文件,它工作了。

在android studio 3.5.1中遇到这个问题,花了我一天的时间来解决这个问题,尝试了所有的方法,包括清理缓存,重新启动和重命名包名。所以,如果以上任何一种方法都不起作用,那就试试这个。

只要去gradle > Tasks >安装>卸载

以下是链接: 错误类型3:活动类{…}不存在 < / p >

有时应用程序安装在客户用户在您的移动,所以尝试切换客户和卸载应用程序。

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

. adb卸载包"Your package Name

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

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

adb uninstall <package_name>

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

检查Gradle文件中的应用程序id。我遇到了同样的问题,因为我在重构视图名称时不小心更改了应用程序id。

对我来说,你的设备已经没有空间了。

我有同样的问题,这是我如何解决它:

Gradle > Tasks > Install > uninstallAll

enter image description here

SharedPreferences的文件名必须以当前样式的名称作为后缀,以防止产品的活动编译变体访问已定义用户的首选项 用于另一个具有相同首选项名称的活动编译

虽然每个编译包都是不同的,但当使用flavorDimensions时,可能会交叉访问用户首选项并获得启动MainActivity时出现类型3的错误

app.getSharedPreferences("${BuildConfig.FLAVOR}_shared_pref_3", Context.MODE_PRIVATE)

GL

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

Gradle→任务→安装→卸载所有。

我得到了这个错误。我试图修复的错误(没有工作)是:

  • 清洁项目
  • 重建项目
  • 重启Android Studio

解决方案很简单,只需卸载模拟器/手机上的应用程序,然后点击“运行”。Android Studio。

问题的发生是由于我的模拟器。我的模拟器在SafeMood中运行。

没有SafeMood重新启动模拟器工作。首先在SafeMood中自动启动,然后出现了问题。然后当我禁用SafeMood并重新启动模拟器时,它就成功了!

在所有这些解决建议之后,我仍然没有解决我的这个问题。然后我想起来我的手机有两个ANDROID用户界面。其中一个是休闲用的,另一个是你的私人物品。当我下载我的项目到手机,下载他们两个。我删除了我的项目在休闲的,但没有私人的。当我删除私人的时候,一切都很好。所以如果你有2个android用户界面,你应该删除他们,并重新下载。

一个简单的破解方法是重命名你的包:例如MainActivity为ApplicationMainActivity

在更新的Android Studio(4.1版本)中也出现了同样的错误。全新安装的Android Studio +全新的“基本活动”;模板将陷入错误类型3长达数小时。我在win10 -我的问题是如何杀死gradle缓存。上面的一个很好的答案显示了gradle的屏幕快照,但我在Android Studio 4.1中没有找到它。此外,gradle的env变量还没有设置,并且gradle的命令行不起作用。所以. .这是它最后是如何工作的。我去了C:\Users\myusername\ .gradle。这有subdir“缓存”。我把里面的东西都删掉了。成功了!我之前确实关闭了Android Studio,重新启动,然后它工作得很好。啊忘了一件事-我运行设备模拟器(defauöt设备),即还没有物理设备。

这适用于Android Studio 4.0.1版本:

  1. 把我的git分支改为主分支
  2. 回到我自己的分支
我也面临同样的问题,我认为解决方案比我想象的要简单得多 只需要到你的manifest中更改包名,而不是在Gradle

中将相同的包名复制到你的应用程序iD中 < p > defaultConfig { applicationId "your package name here" } 就是这样,祝你好运

我用…来解决这个问题 编辑配置->部署→选择默认apk https://i.stack.imgur.com/8xuLG.png < / p >

发生在我改变应用程序名称时。卸载app,从调试版本切换到发布版本,安装发布版本,然后切换回调试版本并工作。

File -> Invalidate Caches / Restart

在“android/app/src/main/AndroidManifest.xml”目录中查看以下内容

<application
android:name="[your_package_name].MainApplication"
...>
<activity
android:name="[your_package_name].MainActivity"
...>

从终端试试

gradlew uninstallAll

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