IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]Android问题集锦之四十六:改包名后出现Error type 3

    lincyang发表于 2015-11-15 23:07:53
    love 0

    背景:
    为了和使用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



沪ICP备19023445号-2号
友情链接