我把IntelliJ IDEA从12.0.4升级到12.10。

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

错误:没有找到默认活动

我恢复到12.0.4,一切都恢复正常了。

什么好主意吗?我认为这可能是一个丢失插件的问题。由于插件没有安装,它无法找到默认活动。另一个东西可能是本地配置,但我对此表示怀疑。我删除了配置文件夹来验证,这没有改变任何东西。


当前回答

我将Intent-filter改为

<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库,它提示我定义一个默认意图。这就解决了我的问题。

其他回答

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

菜单文件→无效缓存和重启…

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

然而,这个错误:“Default Activity Not Found”似乎是在告诉你,你没有在文件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>

如果您至少没有一个带有这样意图过滤器的活动,那么您很可能会看到您在这里包含的错误消息。

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

额外的细节

(Android Studio 4.1.2)如果项目创建为EmptyApplication,那么开发人员必须手动创建以下三个文件,以避免出现Default Activity Not Found错误:

文件AndroidManifest.xml

文件MainActivity.java

文件activity_main.xml

我从一个演示应用程序开始,并对其进行了修改。我改变java路径内的源从com -> example -> foo到我自己和编辑清单;然而,Android Studio(0.8.7)却非常困惑。

我尝试了上面列出的所有方法,但没有一种对我有效。也许它甚至让事情变得更糟?

我的最终解决方案是编辑<projectname>。在Android Studio(又名文本编辑器)中打开。idea子目录下的iml。

之前:

<content url="file://$MODULE_DIR$">
  <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
</content>

我(重新)添加了src目录(第二行)。 后:

<content url="file://$MODULE_DIR$">
  <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
</content>

保存后,Android Studio重新加载并开始正常运行。

在我的案例中,AndroidManifest.xml中有一个打印错误,如下所示。删除应用程序标签上方的“o”字母就解决了这个问题。

显然,Android Studio不会检测AndroidMainfest.xml中的类型错误

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

o
<application android:name=".AppName"
             android:allowBackup="false"
             android:icon="@drawable/ic_launcher"
             android:label="@string/app_name"
             android:theme="@android:style/Theme.Light.NoTitleBar">

我在我的代码中发现了这个:

<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中的名称。