您的位置:首页 > 移动开发 > Android开发

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

2016-04-04 12:01 681 查看
今天拿到一个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的类对应到了没,对应到了则没问题。如果还是报错,继续往下看。



myeclipse的程序缓存导致

原因:myeclipse的程序缓存导致,未找到MainActivity这个类,尤其会出现在修改过包名或者类名之后。因为有缓存所以对应就没找到这个类。
解决办法: 清除myeclipse的项目缓存,project -> clean 该项目后再启动。



命名空间冲突

原因:工作空间中已经有了同一包名的类,或者模拟器中已经有了同一名称的apk。
解决办法: 如果是工作空间其他android项目中有同一包名的类,可以尝试修改包名。 如果确认其他android项目没有同一包名的类,那就是项目自身跟自身的冲突。表现为 第一次启动时成功,第二次启动时才报错does not exist. 同时会有New package not yet registered with the system的提示。解决方法是把模拟器中的旧的同一项目的apk删除后重试。如果还是不行则可以把旧的模拟器删除重新建一个即可。
我的就是重建模拟器之后解决了问题。如果一些特殊的apk不能完全清除,只能每次都新建一个模拟器测试。



工程版本不匹配

原因: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: