背景:
为了和使用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 3Error: 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
版权声明:本文为博主原创文章,未经博主允许不得转载。