遇到问题----Android----ActivityManager: Error: Activity class {xx/xx.MainActivity} does not exist



今天拿到一个android项目后打算分析一下,结果加载到myeclipse后调试运行run as Android Application在模拟器时报错:

ActivityManager: Error: Activity class {com.android.system.emial/com.android.system.emial.MainActivity} does not exist.


经过一番调试之后解决了该问题,收集了可能有以下几种情况,希望大家也能顺利解决:


AndroidMainfest.xml配置问题

原因:AndroidMainfest.xml的配置不对导致找不到MainActivity这个类

解决方法:

检查AndroidMainfest.xml的配置是否正确。在myeclipse中比较好确认,按住ctrl把鼠标移到android:name=""中的类名,点击后如果能跳转到MainActivity说明没问题。

如果不能对应到则要相应修改包名路径名,这一点也就是很多资料上说的 在AndroidManifest.xml文件中查看主Activity的名字前是否有'.'符号,其实也就是看Activity的类对应到了没,对应到了则没问题。如果还是报错,继续往下看。

遇到问题----Android----ActivityManager: Error: Activity class {xx/xx.MainActivity} does not exist_第1张图片




myeclipse的程序缓存导致

原因:myeclipse的程序缓存导致,未找到MainActivity这个类,尤其会出现在修改过包名或者类名之后。因为有缓存所以对应就没找到这个类。

解决办法: 清除myeclipse的项目缓存,project -> clean 该项目后再启动。

遇到问题----Android----ActivityManager: Error: Activity class {xx/xx.MainActivity} does not exist_第2张图片




命名空间冲突

原因:工作空间中已经有了同一包名的类,或者模拟器中已经有了同一名称的apk。

解决办法: 如果是工作空间其他android项目中有同一包名的类,可以尝试修改包名。 如果确认其他android项目没有同一包名的类,那就是项目自身跟自身的冲突。表现为 第一次启动时成功,第二次启动时才报错does not exist. 同时会有New package not yet registered with the system的提示。解决方法是把模拟器中的旧的同一项目的apk删除后重试。如果还是不行则可以把旧的模拟器删除重新建一个即可。

我的就是重建模拟器之后解决了问题。如果一些特殊的apk不能完全清除,只能每次都新建一个模拟器测试。

遇到问题----Android----ActivityManager: Error: Activity class {xx/xx.MainActivity} does not exist_第3张图片




工程版本不匹配

原因:Android项目的编译版本与myeclipse的jdk不匹配,除了提示does not exist同时会提示Please use Android Tools > Fix Project Properties

Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.
解决方法:

1. 项目 右键 ->android tools ->Fix Project
2. 如果不可以,检查Project -> Properties->Java Compiler
确认JDK compliance被设置为1.6,并且enable specific seetings





你可能感兴趣的:(android,遇到问题)