Android Studio 升级后出现 "Default Activity Not Found" 问题

560
我将 IntelliJ IDEA 从 12.0.4 升级到 12.10 后,我的 Android 项目中的所有模块都出现了以下错误:Error: Default Activity Not Found。我回退到 12.0.4 后一切正常。你有什么想法吗?我认为可能是缺少插件的问题。由于插件未安装,它无法找到默认活动。另一种可能是本地配置,但我对此表示怀疑。我删除了配置文件夹进行验证,但结果没有变化。

3
你是否查看了清单文件?也许切换版本可以解决这个问题?http://developer.android.com/guide/components/fundamentals.html - MaxOvrdrv
2
清单是关键,可能是名称错误或遗漏,或命名空间问题。 - salezica
项目的所有七个模块中都存在一个清单问题,12.0.4版本可以正常运行,但12.10版本不能? - Saad Farooq
不,但是命名空间的更改或项目布局的变化可能会与清单文件不同步。 - salezica
正如@uʍopǝpısdn所提到的那样,请检查您的androidManifest.xml文件:<application> <activity android:name="com.company.Main"> </application> - Alia Ramli Ramli
显示剩余4条评论
75个回答

1023

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

菜单 文件无效缓存并重新启动...


2
您也可以尝试在此处提交错误报告:http://youtrack.jetbrains.com/issues/IDEA我发现他们非常善于跟进我提交的错误报告。 - Sky Kelsey
41
这个方法在我的Android Studio上可行,但是重新启动后我还需要执行 "工具" -> "Android" -> "与Gradle文件同步项目"。 - vaughandroid
4
请查看这个链接:https://github.com/googlesamples/android-CommitContentSampleIME/issues/2#issuecomment-428936292 - Ninja
3
对我没用,我现在只能手动启动应用程序了。这太糟糕了。 - David Heisnam
4
有时候会出现这种情况,但问题实际上可能出在别的地方,比如说我的问题是因为minSdkVersion设置得太低了。 - Kochchy
显示剩余10条评论

349

我无法评论为什么升级 IntelliJ IDEA 可能会导致这个问题,因为我没有使用它。

不过,那个错误信息:“Default Activity Not Found” 似乎在告诉你,在文件 AndroidManifest.xml 中没有声明一个被标记为主 activity 的活动,以在应用程序启动时启动。

你应该至少有一个类似于以下代码的 activity:

<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>

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

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

其他详细信息

(Android Studio 4.1.2) 如果项目创建为空应用程序,则开发人员必须手动创建以下三个文件以避免出现默认活动未找到错误:

文件AndroidManifest.xml

进入图像描述

文件MainActivity.java

进入图像描述

文件activity_main.xml

进入图像描述


Ant能顺利构建,IntelliJ 12.0.4也可以。 - Saad Farooq
对我也起作用了!但请注意:请使用小写字母编写“android.intent.xxx” - 我的错误是Android Studio自动完成建议使用大写字母(这花费了我一个小时):-( - Philipp P
29
针对那些相对不熟悉安卓系统并刚刚搞糊涂了他们的安卓工程的人,这是你正在寻找的答案。接受的答案适用于在升级后产生问题的情况。 - Tom Kidd
3
我已经设置了这个,我的项目已经运行多次,但突然出现了错误。我不知道哪里有问题。也许这是AS的潜在错误。 - Chinese Cat
@mattgmg1990,我已经编辑了你的答案,以包含更多细节。 - divine
显示剩余4条评论

101
如果您的应用程序具有默认的启动活动,则可能会出现以下错误:

Enter image description here

步骤1: 选择编辑配置

Enter image description here

步骤2:观看此警告:未找到默认活动。

Enter image description here

步骤三:选择默认活动。

Enter image description here

Enter image description here

步骤 3:保存更改并完成

Enter image description here

好运

Enter image description here


好的回答!如果应用程序没有活动,这就是有所帮助的(仅限服务)。您需要将“activity”更改为“不启动activity”。 - Udi Reshef
13
我会尽力为您翻译。根据提供的内容,您遵循了上述步骤,但现在出现了“AndroidManifest.xml文件中未声明'MainActivity'活动”的错误提示,尽管MainActivity确实存在。 - Far
这个答案很容易理解。同时感谢@Udi Reshef的评论。 - Bishwas Mishra
4
我选择了“启动:无”选项,对我来说起作用了 :) - Andy
我在启动配置中选择了错误的模块,该模块没有启动器活动。纠正这个问题解决了我的问题,谢谢! - NeeK
显示剩余2条评论

79
如果你正在开发一个小部件应用程序,这个解决方案可以帮助你:
  1. 进入 编辑配置
  2. 启动选项 设置为

4
这只是回避问题,但并没有解决它。在设置为空后,应用程序无法在构建结束时运行。 - Leo Paim
我做了这个。它没有正确运行,但是显示了一个错误,我可以进行更正。将其设置回默认活动后,它就可以工作了。(我的应用程序不是小部件) - Thomas

68

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

<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>之间。" 这正是我的问题所在。非常感谢。 - Dennis Mathew
重构代码时要非常小心。在我的情况下,我错误地将“category”重构为“phone”,因此android.intent.category被更改为android.intent.phone。 - Kenny Dabiri
我使用了Android Studio的项目创建向导,但仍然不得不手动完成这个步骤。我认为这是一个错误吗? - pdoherty926

44

尝试右键单击项目,然后选择 打开模块设置。接着进入您的模块中的 选项卡,在其中找到 src 文件夹,右键单击并将其标记为 源代码(蓝色)。

在较新版本的Android Studio中没有“源”选项卡,但您可以编辑 build.gradle 文件:如何在Android Studio中添加链接的源文件夹?


这对我很有帮助,我意识到IntelliJ在“Sources”选项卡中删除了许多源文件。我将我的包移出项目,然后再移回去。这解决了我的问题。 - Jesse Black
3
我曾经做过类似的事情,但我右键单击了"src"文件夹,然后选择了"Mark Directory As...",最后选择了"Sources Root." - Android Studio 0.8.6 - elliptic1
2
运行得很好,移除了当前的根目录,然后再次添加了src和gen的父文件夹。 - Udi Oshi
2
快速访问模块设置的方法是单击项目导航器并按F4键。 - whyoz
4
由于在“Open Module Settings”中不再有“Sources”选项卡,因此此功能已被弃用。 - Buddy
我试图构建谷歌自己的一个示例,这是解决问题的方法。具体来说,在我的版本(2.1.1)中,这在“文件”->“项目结构”->“模块”中。 - SilentDirge

38
在Android Studio 4.0中,请将 Launch 更改为 Nothing : < p> Run / Debug Configuration → Android App → app → General Launch Options →将 Launch 设置为 Nothing 。

Enter image description here


6
将Android Studio升级到4.x版本后,我遇到了这个问题,尝试了常见的方法,只有这个方法有效! - Ferdau
这并不是一个很好的解决方案,将其更改为“Nothing”。它确实可以工作,但应用程序只会安装在设备上,并且您必须手动运行它。在我的端上,我只需要检查清单文件。我有两个活动声明了两次。现在,在删除重复项后,我可以使用“默认活动”作为启动选项无问题地运行项目。 - David Rauca

24
在Android Studio中,转到“运行/调试配置” -> “Android应用程序” -> “常规” -> “Activity”,选择选项“不启动Activity”。

4
当项目是一个服务,或者因某些其他原因没有默认活动时,这就是解决方案。 - Aharon Manne
3
在Android Studio 2.2.3中,进入 Run/Debug Configuration -> Android App -> myApp -> General -> Launch Options -> Launch,将 Launch 设置为 Nothing。 - liteflier

23

之前的回答都没能帮到我。过了一段时间,我发现 IntelliJ 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>

21

首先确保您在清单中包含了默认活动。

示例:

<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 中删除缓存,然后重新同步项目。

或者查看这个答案:

Android Studio shows wrong file contents


1
Android Studio 3.2.1:文件 -> 与Gradle文件同步项目 ::: 在清除缓存并重新启动后,必须执行此操作才能解决问题。 - Kreebog
1
这适用于我。我认为造成这个问题的原因是将我的主活动移动到与根目录下游不同的目录中。 - Shane Sepac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接