Android问题集锦之四十六

最后更新于:2022-04-01 06:39:42

## 改包名后出现Error type 3 背景:  为了和使用Eclipse的同学并行工作了,我将原Eclipse的项目中加入build.gradle,内容如下: ~~~ android { compileSdkVersion 19 buildToolsVersion "19.1.0" sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] } // Move the tests to tests/java, tests/res, etc... instrumentTest.setRoot('tests') debug.setRoot('build-types/debug') release.setRoot('build-types/release') } packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } lintOptions { abortOnError false } buildTypes { debug { debuggable true signingConfig signingConfigs.debug } release { debuggable false signingConfig signingConfigs.debug minifyEnabled true proguardFiles 'proguard-project.txt' } } } ~~~ 一直很好的工作着,直到今天我心血来潮将项目的包名在manifest中修改了,也在各个文件中修改了此包名。编译通过,但是运行时报错: ~~~ Launching application: com.foo.app/com.foo.app.main. DEVICE SHELL COMMAND: am start -n "com.foo.app/com.foo.app.main" Starting: Intent { cmp=com.foo.app/.main} Error type 3 Error: Activity class {com.foo.app/com.foo.app.main} does not exist. ~~~ 这真是见鬼了,我clean build,并将代码目录下的bin也都删掉了。重启Android Studio,还是有问题。我也将app从手机中卸载再调试,等等等等。尝试了很多办法。stackoverflow那篇帖子上的方法也尝试了许多。 当然,我知道新建一个项目并将此项目中的文件拷过去,一定能够运行。但我不想这么做。 最后,还是参考网友,将build.gradle中android下加入applicationId为新包名,解决了这个问题。 ~~~ defaultConfig { applicationId "com.yourpackage.yourapplication" } ~~~ > 参考:  > [http://stackoverflow.com/questions/7071271/activity-class-does-not-exist](http://stackoverflow.com/questions/7071271/activity-class-does-not-exist)
';