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)