Android Studio 升级中的“未找到默认活动”
Posted
技术标签:
【中文标题】Android Studio 升级中的“未找到默认活动”【英文标题】:"Default Activity Not Found" on Android Studio upgrade 【发布时间】:2013-03-27 08:18:41 【问题描述】:我将 IntelliJ Idea 从 12.0.4 升级到 12.10。
现在我的 android 项目中的所有模块都给出了错误:
错误:未找到默认活动
我恢复到 12.0.4,一切都恢复正常了。
有什么想法吗?我认为这可能是缺少插件的问题。由于未安装插件,因此无法找到默认活动。另一件事可能是本地配置,但我对此表示怀疑。我删除了配置文件夹进行验证,这并没有改变任何东西。
【问题讨论】:
你看过清单了吗?也许切换版本清除它或什么? developer.android.com/guide/components/fundamentals.html 不...但我让它与 12.0.4 一起工作,但从头开始重新导入项目。 Manifest 的关键,可能是名称错误或遗漏,或者命名空间问题 项目的所有七个模块中的一个清单问题,12.0.4 可以正常运行,但 12.10 不能?? 否,但命名空间或项目布局的更改可能与清单不同步 【参考方案1】:如果您在升级 IntelliJ IDEA 或 Android Studio 版本后或在生成新 APK 后发现该错误,您可能需要刷新 IDE 的缓存。
File -> Invalidate Caches / Restart...
【讨论】:
您也可以尝试在这里提交错误:youtrack.jetbrains.com/issues/IDEA 我发现他们非常擅长跟进我提交的错误。 这在 Android Studio 中对我有用,但重新启动后我还必须执行 Tools -> Android -> Sync Project with Gradle Files。 看看这个github.com/googlesamples/android-CommitContentSampleIME/issues/… 对我不起作用。我不得不接受手动启动应用程序。这很糟糕。 有时会出现这种情况,但问题出在其他地方,例如我的问题是 minSdkVersion 太低【参考方案2】:我无法评论为什么升级 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,这应该可以解决您的问题。
编辑:
其他详情
(AndroidStudio4.1.2) 如果项目创建为 EmptyApplication 则开发者必须手动创建以下 3 个文件以避免Default Activity Not Found
错误
AndroidManifest.xml MainActivity.java activity_main.xml
【讨论】:
ant 可以很好地构建它,IntelliJ 12.0.4 也是如此 我在 Eclipse 中启动了我的应用程序,是的,我有一个默认活动。我将我的应用程序导入到 Android Studio 中一直很好,直到有一天我添加了通知管理器和其他东西,也就是我遇到了这个错误。我做了 File->Invalidate cach->Restart 并修复了它。但是,正如您所说,该错误不是由缺少默认活动引起的。 也为我工作!但请注意:请用小写字母写“android.intent.xxx” - 我的错是Android Studio完成建议大写字母(这花了我一个小时):-( 对于那些对 Android 比较陌生并且刚刚搞砸了 Android Studio 项目的人来说,这就是您正在寻找的答案。公认的答案是当升级给您带来麻烦时。 我已经设置了这个,我的项目已经运行了很多次,它突然出错了。我不知道哪里错了。也许,这是一个潜在的 AS 错误。【参考方案3】:你的应用默认有启动活动?
这可能是你的错误
第 1 步:选择编辑配置
第 2 步:观看此警告:未找到默认活动
第 3 步:选择默认活动
第 3 步:保存更改并完成
祝你好运
【讨论】:
好答案!如果应用程序中没有活动,这会有所帮助。 (仅服务)。您需要将“活动”更改为“不启动活动” 这是唯一适用于没有活动的应用程序的答案。谢谢。 这对我有用!我实际上在 Manifest 中有一个 Default Activity,但由于某种原因,Android Studio 没有找到它。 我按照上述步骤操作,但现在它说“AndroidManifest.xml 中没有声明活动'MainActivity'”,尽管有 MainActivity 我选择了 Launch: "Nothing" 选项并且对我有用 :)【参考方案4】:如果您正在开发小部件应用程序,此解决方案应该适合您:
-
转到
Edit Configuration
将Launch Option
设置为nothing
【讨论】:
你太棒了! 你是救生员 :D :D 这只是跳过问题,但并不能解决问题。设置为空后,应用程序不会在构建结束时运行 我这样做了。它没有更正,但显示了一个我可以更正的错误。设置回默认活动后,它起作用了。 (我的应用程序不是小部件) 耶!!谢谢!! :-D【参考方案5】:执行此操作的正确方法是将以下内容添加到 Manifest 文件中:
<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完成建议大写字母(这花了我一个小时):-( 好点:“这应该插入:”。这是我的问题。非常感谢。 重构代码时要非常小心。在我自己的情况下,我错误地将“类别”重构为“电话”,因此,android.intent.category 被更改为 android.intent.phone。 我使用了 Android Studio 的项目创建向导,仍然必须手动完成。我认为这是一个错误是错误的吗?【参考方案6】:尝试右键单击项目并选择打开模块设置。然后进入你模块中的Sources标签,找到src文件夹,右击并标记作为来源(蓝色)。
编辑: Android Studio 的更高版本中没有源选项卡,但您可以改为编辑 build.gradle 文件:@ 987654321@
【讨论】:
这帮助了我,我意识到 intellij 从 Sources 选项卡中的 src 中删除了很多源文件。我将我的包从项目中移出并重新放入。这解决了我的问题 我做了同样的事情,但是我右键单击 src 文件夹并转到“将目录标记为...”,然后转到“源根目录”。 - Android Studio 0.8.6 像魅力一样工作,删除当前根目录,并再次添加 src 和 gen 的父文件夹 访问模块设置的快速方法是在项目导航器中单击并按 F4 这已被弃用,因为在 打开模块设置 中没有 Sources 选项卡了。【参考方案7】:在 Android Studio 4.0 中,请将 Launch 更改为 Nothing:
运行/调试配置 -> Android 应用 -> 应用 -> 常规 -> 启动选项 -> 启动:无
【讨论】:
将 Android Studio 更新到 4.x 给了我这个问题,尝试了常见的东西。只有这个有效! 这不是一个很好的解决方案来更改为 Nothing。它确实有效,但该应用程序只会安装在设备上,您必须手动运行它。在我这边,我只需要检查 Manifest 文件。我两次宣布了 2 项活动。现在,删除重复项后,我可以使用“默认活动”作为启动选项运行项目而不会出现问题。【参考方案8】:在 Android Studio 中的 Run/Debug Configuration -> Android Application -> General -> Activity -> 选择“Do not launch Activity”选项。
【讨论】:
这是项目是服务时的解决方案,或者由于其他原因没有默认活动。 在 Android Studio 2.2.3 中;运行/调试配置 -> Android 应用 -> myApp -> 常规 -> 启动选项 -> 启动:无【参考方案9】:以上没有任何帮助。一段时间后,我发现 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>
【讨论】:
【参考方案10】:首先确保您已在清单中包含默认活动。
示例:
<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://***.com/a/53476487/5507705
【讨论】:
Android Studio 3.2.1: File -> Sync Project with Gradle Files ::: 必须在缓存失效并在问题消失之前重新启动后执行此操作。 这对我有用。我认为造成这种情况的原因是将我的主要活动移动到根目录下游的不同目录。【参考方案11】:100% 正常工作
你一定看到了
首先打开你的清单并检查它是否存在,
<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>
如果不存在,添加它
如果上述情况存在,但您仍然看到未找到默认活动。
按照以下步骤操作:
1.点击编辑配置
2。单击编辑配置时,您会看到启动选项设置在 DEFAULT ACTIVITY
-
将其更改为 nothing。
问题解决了!
快乐编码。
【讨论】:
【参考方案12】:在我的情况下,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 配置)
【讨论】:
【参考方案13】:这个方法对我有用 单击应用程序图标,然后选择编辑配置。 在编辑配置中选择指定的活动而不是默认活动。 然后在下面给出activity的路径。
最后与 gradle 文件同步。
【讨论】:
【参考方案14】:退出 Android Studio。
转到路径C:\Users\YOUR_WINDOW_USER_NAME\.AndroidStudio3.3\system
删除 /caches 文件夹和 /tmp 文件夹
【讨论】:
哦,天哪,当 Android Studio 破坏其缓存并认为我的某些项目文件已损坏时,它只是一种可以帮助我的解决方案。太糟糕了,但我真的很高兴在第二页找到您的解决方案)【参考方案15】:由于这个问题是清单中大量问题的“登陆页面”,导致没有找到默认活动,这是另一件事来检查您是否遇到此问题。
打开您的 Manifest 并切换到 Merged Manifest 选项卡。
有时问题与将项目中的所有清单合并为一个有关,这可能会导致错误并因此导致“未找到默认活动”。问题是,据我所知,除了这个 Merged Manifest 选项卡之外,其他任何地方都没有显示此错误。
Es:在一个项目minSdkVersion 10
中,将build.gradle文件中的实现版本降级:从25.4.0
到25.3.1
解决这个问题。
dependencies
implementation 'com.android.support:appcompat-v7:25.3.1'
implementation 'com.android.support:design:25.3.1'
implementation 'com.android.support:mediarouter-v7:25.3.1'
【讨论】:
希望我在花了四个小时才找到同样的东西之前看到了这个。必须是最近的更改。【参考方案16】:这发生在我的电脑意外重启后。 奇怪的是,我没有做任何更改,仍然出现此错误。 以上都没有帮助我。是什么解决了我的问题,是这个。 第1步: 第2步: 第 3 步: 如果这不能解决问题,请尝试其他尝试。
尝试1:
File -> Invalidate Caches / Restart...
尝试2:检查以下两行是否
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
在 manifest.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>
尝试 3:
-
点击如图:
运行/调试配置打开。
如果这也没有帮助。 尝试4:
-
文件->导出到 ZIP。
和
将其作为新项目导入。
祝你好运。
【讨论】:
这很好理解,而且比接受的答案更有价值。 我刚刚在合并清单中遇到了完全相同的事情——如果 Android Studio 突出显示此选项卡以显示存在错误,那就太好了。 :-/ 清单一解决了我的问题,它告诉我增加 min sdk 版本,所以我修复了它【参考方案17】:我将 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 库,它提示我定义一个默认意图。这个添加解决了我的问题。
【讨论】:
【参考方案18】:我收到了这个错误。
发现在启动器活动的清单文件中我没有输入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>
【讨论】:
【参考方案19】:@TouchBoarder 几乎拥有它。尽管选择“不启动 Activity”不会导致任何启动。
在 Android Studio 中的 Run/Debug Configuration -> Android Application -> General -> Activity -> 选择“Launch:”选项
选择您的活动。这并不完全修复预期的行为,而是正确地覆盖它。
【讨论】:
【参考方案20】:以上所有答案都没有帮助我。 尝试删除此
<?xml version="1.0" encoding="utf-8"?>
在您的 AndroidManifest 中。 那么:
File > Sync Project with Gradle Files
【讨论】:
我发现Syncing Project With Gradle Files
就像葡萄酒一样工作得很好。顺便说一句,我的错误不知从何而来。【参考方案21】:
如果您的应用程序没有 Activity(例如只有服务),请将运行/调试配置的“启动”选项更改为 Nothing。
【讨论】:
【参考方案22】:我在我的代码中发现了这个:
<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-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
这绝对是直截了当的。参考:
https://www.aboutonline.info/2018/08/error-running-app-default-activity-not-found-on-android-with-kotlin.html
【讨论】:
【参考方案24】:在我的例子中,我重构了一个名为“activity”的成员变量,我将其重命名为“context”......我发现重构是针对清单中的 activity 标签进行的,我发现它们是 context 标记...这对于 Android Studio 来说真的很愚蠢!
【讨论】:
这是Android工作室的一个错误,你是对的@terebentikh【参考方案25】:Build -> Rebuild Project
File -> Invalidate Caches.. -> Invalidate and restart
它对我有用。 重建项目以确保项目中没有错误。然后我们可以使缓存无效。
【讨论】:
【参考方案26】:我在 Android Studio 3.3 Canary 3 中遇到了同样的问题。 Android Studio 3.0 稳定版的项目首先可以正常工作,然后在进行一些清理/重建后,它开始显示 No Default Activity 错误。我试图重新安装这个 alpha 版本的 Android Studio:再次出错。但随后在旧的稳定 Android 中启动它,并使用 apk 安装,这个 apk 可以正常工作。
此外,我的项目是使用 Instant App(基础、功能、即时、应用子目录)创建的。我认为这个 Android Studio 在将 Manifest.xml 文件分成多个目录时存在一些问题。
所以我已将设置更改为:
【讨论】:
【参考方案27】:使用 Gradle 文件同步项目有时会起作用,要解决此问题 您应该解决的总体问题
-
退出 Android Studio
转到 USER -> AndroidStudio -> 系统 -> 缓存
删除该文件夹
启动 Android Studio。
它将重新索引您的文件并且应该可以工作
感谢kirtan403 来自类似问题。
【讨论】:
【参考方案28】:自从 Android Studio 3.5 or 3.6
我开始得到Default Activity not found
并且我厌倦了Invalidating Caches & Restart
,重建项目等等。
事实证明,我处理多模块和清单的方式是错误的。我只有库模块中的默认活动清单,但它应该在两个应用程序模块中。
假设librarymodule
appmodule1
appmodule2
-
从
librarymodule
Manifest 中删除HomeActivity
。
添加:
class AppModuleActivity1 : HomeActivity() to appmodule1
class AppModuleActivity2 : HomeActivity() to appmodule2
-
到
appmodule1
Manifest inside 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。
【讨论】:
【参考方案29】:在我的例子中,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">
【讨论】:
因为它在一个版本中有效而在另一个版本中无效,所以它不可能和你的问题一样。 这就是为什么我说“在我的情况下”【参考方案30】:错误:未找到默认活动
我是这样解决的 运行>>编辑配置>>Android应用>>输入你默认的路径 “启动”编辑框中的活动类。
【讨论】:
VS 代码呢?以上是关于Android Studio 升级中的“未找到默认活动”的主要内容,如果未能解决你的问题,请参考以下文章
Andord:升级Android studio4.2编译失败问题
Android Studio Build 无法识别我的 MainActivity(尝试了所有建议)