项目场景:
最近开始学习Android,第一次尝试建立一个空白项目,手动添加activity时出现报错:Default Activity not found
问题描述:
运行时程序可以正常编译,但不能发布到AVD上,查看了几篇博文,发现这篇方法较全而且总结较好
https://blog.csdn.net/yforyoung/article/details/84952283
转载记录一下
原因分析:
原因可能有如下几种情况:
- AndroidManifest.xml文件中没有声明相应Activity,新手很容易犯的错,所以最好直接用AS快速创建Activity,不需要手动声明。注意为默认启动Activity添加intent-filter。解决方案如下:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- 包名与activity所在路径不符,一般来说不会出现这种问题,这种问题也很好排查,一般来说IDE就会直接报红,这种情况也很好解决:
- 配置正确的项目包名路径
- 为Activity添加完整路径:
<activity
android:name="com.paradise.facephone_webrtc.MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这种错误与第一种一样,一般不会发生,最好的避免方法就是使用AS自带的快速建立Activity的方法。
-
项目中没有Activity,只定义了service的情况。这种运行当然就是找不到Activity啦,需要设置一下Launch Options的参数,也很简单,如下:
会看到默认是Default Activity ,手动改为Nothing就可以了。
-
当你排除了以上的情况之后,你发现问题还没有得到解决,这个时候可以试一试缓存清除大法,因为很有可能是AS不定时抽风
然后坐等AS自动重启就好了
-
以上方案仍旧解决不了,干脆重建一个项目吧!只不过感觉不是很优雅的样子。当然前4种都没能解决,可能重建也解决不了,所有有了第6种方案。
-
重装AS吧。我遇到的就是最后这一个问题,版本问题。本着开发者当然要用最新版啦的观念,每次升级我都是非常坚定的,于是我的版本一路奔到3.2.1,项目遇到的问题就是,导入了一个module,module中没有Activity,正常情况下是没有任何影响的,毕竟他就是个module!但就是这个东西,导致我不能正常运行项目,修改Launch Options为nothing, 是可以成功安装的,但是不能打开项目,会一直提示 Client Not Ready Yet… ,但是手动点击app图标打开又没有问题,只是不能debug而已。最后回退到和同事相同的3.0.1版本后完美解决。
参考:
https://blog.csdn.net/yforyoung/article/details/84952283