我将IntelliJ Idea从12.0.4升级到12.10。
现在,我的Android项目中的所有模块都给出了错误:
错误:找不到默认活动
我回到了12.0.4,一切又恢复了。
有任何想法吗?我认为这可能是缺少插件的问题。由于未安装该插件,因此无法找到默认活动。另一件事可能是本地配置,但我对此表示怀疑。我删除了配置文件夹以进行验证,但没有进行任何更改。
我将IntelliJ Idea从12.0.4升级到12.10。
现在,我的Android项目中的所有模块都给出了错误:
错误:找不到默认活动
我回到了12.0.4,一切又恢复了。
有任何想法吗?我认为这可能是缺少插件的问题。由于未安装该插件,因此无法找到默认活动。另一件事可能是本地配置,但我对此表示怀疑。我删除了配置文件夹以进行验证,但没有进行任何更改。
Answers:
如果您在升级IntelliJ IDEA或Android Studio的版本后,或在生成新的APK之后看到错误,则可能需要刷新IDE的缓存。
File -> Invalidate Caches / Restart...
我无法评论为什么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>
如果您没有至少一个活动具有这样的意图过滤器,则很可能会看到此处包含的错误消息。
您应该在启动应用程序时将该意图过滤器添加到希望打开的活动中,这样可以解决您的问题。
正确的方法是将以下内容添加到清单文件中:
<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>
无需使缓存无效。
尝试右键单击该项目,然后选择“ 打开模块设置”。然后转到模块中的“ 源”选项卡,找到src文件夹,右键单击它并将其标记为“ 源”(蓝色)。
编辑:在更高版本的Android Studio中没有源选项卡,但您可以改为编辑build.gradle文件:https : //stackoverflow.com/a/22028681/1101730
如果您使用的是窗口小部件应用程序,则此解决方案应该适合您:
Edit Configuration
Launch Option
于nothing
在Android Studio中的“运行/调试配置-> Android应用程序->常规->活动->选择不启动活动”下。
上方没有任何帮助。一段时间后,我发现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>
首先,确保清单中包含默认活动。
例:
<activity android:name=".DefaultActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
如果您尝试了一切,但似乎没有任何效果,那么
或检查此答案
就我而言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
并删除下一个文件夹
(如果需要,可以.AndroidStudio3.2
在删除之前保存一些Android配置)
您可以CLEAR_CACHE.cmd
像这样创建bat文件来删除没有回收站的文件夹
rmdir /S /Q .android
rmdir /S /Q .AndroidStudio3.2
rmdir /S /Q .gradle
它会更快地工作,您也不必从回收站中删除它
PS把CLEAR_CACHE.cmd
成C:\Users\YOUR_USER_WINDOWS_NAME
删除Android Studio文件夹并再次下载也是个好主意
我得到这个错误。
并且发现,在启动活动清单文件我没有把action
与
category
在意图过滤器。
错误之一:
<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>
退出Android Studio。
前往路径 C:\Users\YOUR_WINDOW_USER_NAME\.AndroidStudio3.3\system
删除/ caches文件夹和/ tmp文件夹
我将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库,它提示我定义默认意图。此添加解决了我的问题。
我在代码中找到了这个:
<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中更改了名称。
我发现这个博客确实解决了我的问题。事实证明,您必须添加某种意图:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
绝对很简单。参考:
以上所有答案对我没有帮助。尝试删除此
<?xml version="1.0" encoding="utf-8"?>
在您的AndroidManifest中。然后:
File > Sync Project with Gradle Files
Syncing Project With Gradle Files
像酒一样很好。顺便说一句,我的错误从无处发生。
在我的案例中,我重构了一个名为“ activity”的成员变量,将其重命名为“ context” ...我发现重构是针对清单中的activity标签,而我却找到了context标签...这对于Android Studio来说真的很愚蠢!
我在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文件分离到多个目录中时遇到了一些问题。
自从Android Studio 3.5 or 3.6
开始Default Activity not found
,我就开始感到厌烦,并且对Invalidating Caches & Restart
重建项目等感到厌倦。
事实证明,我处理多模块和清单的方式是错误的。我仅在库模块中具有默认的“活动清单”,但应该在两个应用程序模块中都具有。
假设 librarymodule
appmodule1
appmodule2
HomeActivity
从librarymodule
清单中删除任何内容。class AppModuleActivity1 : HomeActivity() to appmodule1
class AppModuleActivity2 : HomeActivity() to appmodule2
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>
appmodule2
但将2更改为1。编辑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>
有时,由于内部缓存和项目构建系统导致的android studio行为不当,会导致此错误。甚至我们都为默认活动设置了完美的东西。对于这样的问题,我找到了一个解决方案,它正在为我工作。
步骤1. Android Studio --->文件->无效的缓存并关闭android studio。
第2步。转到路径C:\ Users \ USER.AndroidStudio3.2 \ system
步骤3.在以下文件夹中使用扩展名.back更改名称示例:编译器应为Compiler.back
步骤4:启动Android Studio并打开您的项目。
希望它对您有用。