错误类型 3 - 活动类不存在

Posted

技术标签:

【中文标题】错误类型 3 - 活动类不存在【英文标题】:Error type 3 - Activity class does not exist 【发布时间】:2017-06-14 01:13:12 【问题描述】:

我正在尝试运行 webRTC 应用程序,但返回以下错误:

启动应用程序: com.onlinevoicecallapp/com.onlinevoicecallapp.MainActivity。

设备外壳命令:am start -n “com.onlinevoicecallapp/com.onlinevoicecallapp.MainActivity”-a android.intent.action.MAIN -c android.intent.category.LAUNCHER

开始:Intent act=android.intent.action.MAIN 猫=[android.intent.category.LAUNCHER] cmp=com.onlinevoicecallapp/.MainActivity

错误类型 3 错误: 活动课 com.onlinevoicecallapp/com.onlinevoicecallapp.MainActivity 没有 存在。

当我搜索它时,我发现了很多解决方案,但它们都不适用于我的情况,请指教!

下面是我的 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<!-- WebRTC Dependencies -->
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

<!-- PubNub Dependencies -->
<!--<uses-permission android:name="android.permission.INTERNET" />-->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:name="your.package.name.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="your.package.name.permission.C2D_MESSAGE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_pubrtc"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.onlinevoicecallapp.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.onlinevoicecallapp.VideoChatActivity"
        android:label="@string/title_activity_video_chat"
        android:parentActivityName="com.onlinevoicecallapp.MainActivity"
        android:windowSoftInputMode="stateHidden"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.onlinevoicecallapp.MainActivity" />
    </activity>
    <activity
        android:name="com.onlinevoicecallapp.IncomingCallActivity"
        android:label="@string/title_activity_incoming_call">
    </activity>
    <activity
        android:name="com.onlinevoicecallapp.LoginActivity"
        android:label="@string/title_activity_login" >
    </activity>
</application>

【问题讨论】:

我发现这个问题不仅发生在webRTC,而且我创建的每个项目都会发生! 【参考方案1】:

我在手动卸载旧的调试版本后遇到了这个问题。该应用程序不知何故进入了一个奇怪的状态,它仍然被安装,但“为另一个用户安装”。我曾尝试在没有运气的情况下进行干净的构建。这终于为我解决了:

    进入应用列表,找到应用。对我来说,它是“为其他用户安装的”。 从右上角的菜单中选择“为所有用户卸载”。

完成此操作后,我能够正常将调试版本部署到手机。

【讨论】:

我的英雄!这为我修好了。我希望我在拔头发之前找到这个…… 这是正确答案,谢谢!【参考方案2】:

我认为问题是您已经在不同用户下拥有相同的应用程序,可以通过转到

来删除 设置 > 所有应用 > 您的应用 > 为所有用户卸载

如果问题仍然存在,您应该从 ADB 本身尝试使用终端上的命令将其卸载。

adb uninstall yourpackagename 

【讨论】:

【参考方案3】:

对我来说,解决方案是转到 Gradle > Tasks > Install > UninstallAll

【讨论】:

谢谢!你救了我 这应该是市场的正确答案。像魅力一样工作。【参考方案4】:

可能是旧版本的应用未正确卸载。

当我从 LG G5 上的启动器卸载应用程序时,它仍然存在于 >Settings>Apps 中,但标有“已停用”。

我确实必须从>设置>应用程序中卸载它才能真正删除它。 之后,我能够再次安装并运行该应用程序。

【讨论】:

【参考方案5】:

唯一对我有用的是,我将测试设备从 LG 更改为三星,它开始为我工作。与其他任何设备相比,在 LG 设备上更频繁地观察到相同的问题。

【讨论】:

确实,安装了新设备,它正在工作。我想模拟器损坏了,然后就会发生这个错误。【参考方案6】:

我也遇到了同样的错误。当我将启动器活动移动到其他文件夹时,我会发生这种情况。

但在内部,Android Studio 正在查看先前路径的文件。

我多次清理项目,但错误仍然存​​在。最后只需执行一步错误就消失了。

我通过重启 Android Studio 并再次打开项目解决了这个错误。

谢谢

【讨论】:

【参考方案7】:

尝试了上面给出的几乎所有解决方案。错误仍然存​​在。然后我重新启动了模拟器,它就可以工作了。

【讨论】:

【参考方案8】:

在我的例子中,模拟器处于安全模式

重启模拟器,瞧。 NB重启以将其从安全模式中移除

【讨论】:

【参考方案9】:

这就是我解决问题的方法。 转到 Run -> Edit Configuration-> 然后选中 Install for all users 复选框。

【讨论】:

【参考方案10】:
    干净的构建 只需重构和重命名项目包名 进入安卓应用列表 查找应用程序 为所有用户卸载

【讨论】:

【参考方案11】:

您的设备包含旧版本的 apk。您可能会重命名包或更改应用标识符。因此,当您安装新版本的 apk 时,由于包不匹配,它将无法安装。 为了解决这个问题,

从您的设备中卸载旧版本的 apk。 如果问题仍然存在,则通过在 Android Studio 中选择 Build --&gt; Clean Project 来清理项目。

【讨论】:

【参考方案12】:

我发现android studio有问题,我还没有找到问题的根本原因,但是通过卸载android studio并从另一个来源安装它来解决问题。

【讨论】:

如果您没有根本原因,为什么这是公认的答案? 因为它解决了问题。我找不到帮助来了解根本原因,但这是唯一有效的方法。 因为它解决了问题。我找不到帮助来了解根本原因,但这是唯一有效的方法。 在我的情况下,根本原因是 proguard 和 multidex,在较慢的设备上。 Android 无法以足够快的速度访问 multidex 放入的段,从而导致了这个奇怪的问题。 可能是 proguard,甚至更改 Edit Configurations->General->Deploy->Default Activity(或根据您的 gradle 设置更改为 Nothing)。【参考方案13】:

可能你已经在你的android中安装了应用程序,尝试通过adb推荐卸载它 "adb 卸载 com.onlinevoicecallapp"

【讨论】:

需要进行一些编辑以使声明清晰 - 现在不太容易理解

以上是关于错误类型 3 - 活动类不存在的主要内容,如果未能解决你的问题,请参考以下文章

错误类型 3 - 活动类不存在

错误:活动类 .MainActivity 不存在

包重命名和错误“活动类不存在”

活动类 .....SplashActivity 不存在

使用adb shell启动Android应用程序时出现错误“活动类不存在”

运行时错误'1004':不存在“活动”字段