Android Studio升级中的“未找到默认活动”


458

我将IntelliJ Idea从12.0.4升级到12.10。

现在,我的Android项目中的所有模块都给出了错误:

错误:找不到默认活动

我回到了12.0.4,一切又恢复了。

有任何想法吗?我认为这可能是缺少插件的问题。由于未安装该插件,因此无法找到默认活动。另一件事可能是本地配置,但我对此表示怀疑。我删除了配置文件夹以进行验证,但没有进行任何更改。


3
你看过清单了吗?也许切换版本清除了它或什么?developer.android.com/guide/components/fundamentals.html
MaxOvrdrv

否...但是我让它可以与12.0.4一起使用,但是从头开始重新导入了项目。
Saad Farooq

2
清单是关键,可能是名称错误或遗漏或名称空间问题
slezica

项目的所有七个模块中的清单问题是:12.0.4正确运行,但12.10没有运行?
Saad Farooq

否,但是例如更改名称空间或项目布局可能与清单不同步
slezica 2013年

Answers:


883

如果您在升级IntelliJ IDEA或Android Studio的版本后,或在生成新的APK之后看到错误,则可能需要刷新IDE的缓存。

File -> Invalidate Caches / Restart...

2
您也可以尝试在此处提交错误:youtrack.jetbrains.com/issues/IDEA 我发现他们非常善于跟进我提交的错误。
Sky Kelsey

我想就是这样...我将继续调查...我没有时间再打开目录作为每个平台上的一个新项目。
2013年

我有同样的问题。在清单文件中,我还收到“无法解析符号'MainActivity'”错误。我从Eclipse导入了该项目。
罗伯托

27
这在Android Studio中对我有用,但是在重新启动后,我还必须执行“工具”->“ Android”->“使用Gradle文件同步项目”。
vaughandroid


304

我无法评论为什么IntelliJ升级可能会导致此问题,因为我不使用它。

但是,该错误:“未找到默认活动”似乎是在告诉您您没有在AndroidManifest.xml中声明的活动被标记为主要活动,该活动将在应用程序启动时启动。

您应该至少有一个看起来像这样的活动:

<activity
        android:name="com.your.package.name.YourActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

如果您没有至少一个活动具有这样的意图过滤器,则很可能会看到此处包含的错误消息。

您应该在启动应用程序时将该意图过滤器添加到希望打开的活动中,这样可以解决您的问题。


蚂蚁会很好地构建它,IntelliJ 12.0.4也是如此-Saad
Farooq

我在Eclipse中启动了我的应用程序,是的,我有默认活动。我将我的应用程序导入Android Studio,直到有一天我添加了通知管理器和其他东西(也就是当我遇到此错误时),这很好。我做了File-> Invalidate cach-> Restart并修复了它。但是,该错误并非由您所说的缺少默认活动引起的。
The_Martian

也为我工作!但请注意:请用小写字母写“ android.intent.xxx”-我的错是Android Studio的完成建议使用大写字母(这花了我一个小时):-(
Philipp P

22
对于那些刚接触Android的人,而您刚刚搞砸了Android Studio项目,这就是您想要的答案。可接受的答案是当升级为您造成麻烦时。
汤姆·基德

3
我已经设置好了,我的项目已经运行了很多次,突然出错了。我不知道哪里错了。也许,这是AS的潜在错误。
利卡特·朱利叶斯

81

您的应用默认有启动活动吗?

可能这是你的错误

在此处输入图片说明

步骤1:选择编辑配置

在此处输入图片说明

步骤2:注意此警告:找不到默认活动 在此处输入图片说明

步骤3:选择默认活动 在此处输入图片说明

在此处输入图片说明

步骤3:保存您的更改并完成

在此处输入图片说明

祝好运

在此处输入图片说明


好答案!如果应用程序中没有活动,这将有所帮助。(仅服务)。您需要将“活动”更改为“不启动活动”
Udi Reshef

这是适用于无活动的应用程序的唯一答案。谢谢。
sephiron

这对我有用!我实际上在清单中有一个默认活动,但是由于某些原因,Android Studio找不到该活动。
ocramot19年

2
我跟着上述步骤,但现在它说:“活动‘MainActivity’没有在AndroidManifest.xml中声明”,虽然MainActivity有
远东

这个答案很容易理解。也来自@Udi Reshef的评论感谢
Bishwas Mishra

66

正确的方法是将以下内容添加到清单文件中:

<activity
    android:name="FULL_NAME_OF_YOUR_ACTIVITY"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

这应该插入之间:

<application> </application>

无需使缓存无效。


也为我工作!但请注意:请用小写字母写“ android.intent.xxx”-我的错是Android Studio的完成建议使用大写字母(这花了我一个小时):-(
Philipp P

优点:“应在以下之间插入<application> </ application>”。这是我的问题。非常感谢。
丹尼斯·马修

重构代码时要非常小心。在我自己的情况下,我错误地将“类别”重构为“电话”,因此android.intent.category更改为android.intent.phone。
肯尼·达比里

我使用了Android Studio的项目创建向导,但仍然必须手动执行此操作。我以为这是个错误是错误的吗?
pdoherty926

44

尝试右键单击该项目,然后选择“ 打开模块设置”。然后转到模块中的“ 源”选项卡,找到src文件夹,右键单击它并将其标记为“ 源”(蓝色)。

编辑:在更高版本的Android Studio中没有源选项卡,但您可以改为编辑build.gradle文件:https : //stackoverflow.com/a/22028681/1101730


这帮助了我,我意识到intellij从Sources选项卡中的src中删除了很多源文件。我将包裹移出项目,然后又搬回。这解决了我的问题
Jesse Black

2
我做了同样的事情,但是我右键单击了src文件夹,然后转到“将目录标记为...”,然后单击“源根目录”。-Android Studio 0.8.6
elliptic1

1
像咒符一样工作,删除了当前根,并再次添加了src和gen的父文件夹
Udi Oshi 2014年

1
快速访问模块设置的方法是在项目导航器中单击,然后按F4
whyoz

3
不推荐使用此功能,因为“ 打开模块设置”中不再有“ 源”选项卡。
好友


23

在Android Studio中的“运行/调试配置-> Android应用程序->常规->活动->选择不启动活动”下。


3
当项目是服务或由于其他原因没有默认活动时,这是解决方案。
Aharon Manne

2
在Android Studio 2.2.3中;运行/调试配置-> Android应用程序-> myApp->常规->启动选项->启动:没什么
凌晨

21

上方没有任何帮助。一段时间后,我发现IDEA将动作名称更改为大写。喜欢:

<intent-filter>
  <action android:name="ANDROID.INTENT.ACTION.MAIN"/>
  <category android:name="ANDROID.INTENT.CATEGORY.LAUNCHER"/>
</intent-filter>

恢复正常后,IDEA会识别默认活动:

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

19

首先,确保清单中包含默认活动。

例:

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

如果您尝试了一切,但似乎没有任何效果,那么

  • 从%Home%\。gradle \ caches中删除缓存,然后再次同步项目。

或检查此答案

https://stackoverflow.com/a/53476487/5507705


1
Android Studio 3.2.1:文件->使用Gradle文件::>同步项目:::在使缓存无效并重新启动之前必须执行此操作,直到问题消失。
Kreebog

1
这对我有用。我认为导致此问题的原因是将我的主要活动移至根目录下游的其他目录。
Shn_Android_Dev


11

就我而言File -> Invalidate Caches / Restart...没有帮助

我的项目一切正常,当然我的活动还有下一个意图过滤器

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

真正帮助我的是删除Android / Gradle缓存文件夹(它们可以增长到10-30 GB)

转到C:\Users\YOUR_USER_WINDOWS_NAME并删除下一个文件夹

  • .android
  • .AndroidStudio3.2
  • .gradle

(如果需要,可以.AndroidStudio3.2在删除之前保存一些Android配置)

您可以CLEAR_CACHE.cmd像这样创建bat文件来删除没有回收站的文件夹

rmdir /S /Q .android
rmdir /S /Q .AndroidStudio3.2
rmdir /S /Q .gradle

它会更快地工作,您也不必从回收站中删除它

PS把CLEAR_CACHE.cmdC:\Users\YOUR_USER_WINDOWS_NAME

删除Android Studio文件夹并再次下载也是个好主意


7

我得到这个错误。

并且发现,在启动活动清单文件我没有把actioncategory在意图过滤器。

错误之一:

<activity
android:name=".VideoAdStarter"
android:label="@string/app_name">

    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />

</activity>

正确对象,真爱:

<activity
android:name=".VideoAdStarter"
android:label="@string/app_name">

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

</activity>


7

我将Intent过滤器更改为

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

只需添加DEFAULT选项。我正在使用Process Phoenix库,它提示我定义默认意图。此添加解决了我的问题。


6

@TouchBoarder几乎拥有它。尽管选择“不启动活动”不会导致任何启动。

在Android Studio中,在“运行/调试配置”下->“ Android应用程序”->“常规”->“活动”->选择“启动:”选项

选择您的活动。这不能完全解决预期的行为,而是可以正确地覆盖它。

编辑运行/调试配置并指定启动活动


4

如果您的应用程序没有活动(例如仅服务),请将运行/调试配置的“启动”选项更改为“无”。


4

我在代码中找到了这个:

<context android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</context>

如果您仔细看,应该<activity android:name=".MainActivity">改用。

显然,我在某处重构了“活动”,并且它也在AndroidManifest中更改了名称。


在我的案例中,FilterClasses的重命名导致了<intent-filterList>标签:)
Emanuel

2
重构代码时要非常小心。在我自己的情况下,我错误地将“类别”重构为“电话”,因此android.intent.category更改为android.intent.phone。
肯尼·达比里


4

以上所有答案对我没有帮助。尝试删除此

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

在您的AndroidManifest中。然后:

File > Sync Project with Gradle Files

我发现它Syncing Project With Gradle Files像酒一样很好。顺便说一句,我的错误从无处发生。
本垒打

4

在我的案例中,我重构了一个名为“ activity”的成员变量,将其重命名为“ context” ...我发现重构是针对清单中的activity标签,而我却找到了context标签...这对于Android Studio来说真的很愚蠢!


2
这是来自Android Studio的错误,您说得对@tere bentikh
mayank_droid

3

我在Android Studio 3.3 Canary 3中遇到相同的问题。来自Android Studio 3.0稳定版的项目首先可以正常工作,而不是在进行一些清理/重建后开始显示“没有默认活动”错误。我尝试重新安装此Alpha版本的Android Studio:再次出错。但是,然后在旧的稳定的Android中启动它,并使用apk install,此apk可以正常工作。

此外,我的项目是使用Instant App(基础,功能,Instant,App子目录)创建的。我认为这个Android Studio在将Manifest.xml文件分离到多个目录中时遇到了一些问题。

因此,我将设置更改为此: 在此处输入图片说明


3

自从Android Studio 3.5 or 3.6开始Default Activity not found,我就开始感到厌烦,并且对Invalidating Caches & Restart重建项目等感到厌倦。

事实证明,我处理多模块和清单的方式是错误的。我仅在库模块中具有默认的“活动清单”,但应该在两个应用程序模块中都具有。

假设 librarymodule appmodule1 appmodule2

  1. HomeActivitylibrarymodule清单中删除任何内容。
  2. 加:
class AppModuleActivity1 : HomeActivity() to appmodule1
class AppModuleActivity2 : HomeActivity() to appmodule2
  1. appmodule1清单的清单中application,我添加了:
        <activity
            android:name="com.app.name.AppModuleActivity1">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  1. 相同,appmodule2但将2更改为1。

2
  1. Build -> Rebuild Project
  2. File -> Invalidate Caches.. -> Invalidate and restart

这个对我有用。重建项目以确保项目中没有错误。然后我们可以使缓存无效。


2

错误:找不到默认活动

我以这种方式解决了
运行>>编辑配置>> Android应用程序>>在“启动”编辑框中输入默认活动类的路径。


2

刚在Android Studio 2.1.2上遇到此错误。通过在味觉清单的默认活动中添加MAIN / LAUNCHER Intent-filter来解决,尽管默认清单中的默认活动中已经存在过滤器。它甚至出现在合并清单中,但是Studio直到我在两个清单中都重复过滤器后才能找到它。


2

我的经验:确保您的所有Java文件都已被识别,如果IDEA无法识别您的Java文件,那么他将无法理解“活动”的含义

祝好运 :)

在此处输入图片说明


2

好吧,我也收到了这个错误,

错误:找不到默认活动

在我的情况下,这是用于磨损模块的..我在那里不需要活动,所以我要做的就是

  1. 进入编辑配置->磨损->启动选项->启动->什么都没有。
  2. 应用更改。单击确定。
  3. 从清单文件中删除默认活动的现有代码。

注意:不要忘记清理项目和同步Gradle文件。


2

编辑androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.java2">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivityName">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

您能否扩展这个答案?只是一段代码不是很有帮助
Azsgy

2

有时,由于内部缓存和项目构建系统导致的android studio行为不当,会导致此错误。甚至我们都为默认活动设置了完美的东西。对于这样的问题,我找到了一个解决方案,它正在为我工​​作。

步骤1. Android Studio --->文件->无效的缓存并关闭android studio。

第2步。转到路径C:\ Users \ USER.AndroidStudio3.2 \ system

步骤3.在以下文件夹中使用扩展名.back更改名称示例:编译器应为Compiler.back

  • 编译器
  • 编译器服务器
  • 转换
  • external-build_system
  • 构架
  • 摇动
  • resource_folder_cache

步骤4:启动Android Studio并打开您的项目。

希望它对您有用。


1
这是唯一对我有用的答案,但是除了此处描述的过程外,您还必须删除“ system / caches”文件夹的内容,否则,只有在完成该过程并重新启动Android Studio之后,它才第一次起作用,然后它返回发生相同的事件,“未找到默认活动”。
杰拉德

对我有用的唯一选择。硬计算机重置后发生了这种情况,这可能损坏了您所说的某些文件。另一个选择是重新安装android studio,但幸运的是清除您指定的文件夹就足够了。
RJFares

2

与Gradle文件同步项目有时可以正常工作,要解决此总体问题,您应该

  1. 退出Android Studio
  2. 转到USER-> AndroidStudio-> system->缓存
  3. 删除该文件夹
  4. 启动Android Studio。

它将重新索引您的文件,这应该可以工作

感谢类似问题的kirtan403

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.