前两天用Android Studio在测试机上编译运行一个project时,编译通过,运行时报错,报错提示主要信息为:
Activity class {.../MainActivity} does not exist.
顿时一脸懵逼,MainActivity明明存在啊,而且也在manifest中声明了,之后又检查了App module下build.gradle中的配置信息,
defaultConfig {
applicationId "com.chan.example"
minSdkVersion 15
targetSdkVersion 19
versionCode 146
versionName "2.0.0.1112.0"
}
applicationId的值与包名保持一致啊,顺便说一句,这里的值可以不写,默认为包名。
实在想不出来问题原因,后来无意中发现,之前在测试机上安装过一个与当前app包名相同的老版本应用,于是果断卸载之,clean project,果然可以正常启动了。
小结一下,通常导致Activity class {package/class} does not exist这类问题的主要原因在于:
1.build.gradle下defaultConfig中applicationId的值与包名不一致;
该情况下,可以省去不写,或保持与包名一致。
2.运行过两个包名一样的应用,导致无法识别入口activity;
卸载 当前包名的应用,或通过adb shell rm /data/app/*.apk 卸载所有apk(Android安装包)。