从Fabric Beta安装应用程序后的java.lang.NoClassDefFoundError

时间:2016-04-27 13:37:16

标签: android twitter-fabric

当我直接编译我的应用程序时,它适用于每个设备。但是,当我通过Fabric进行构建并从Fabric Beta应用程序安装我的应用程序时,我在启动应用程序后立即崩溃:

java.lang.NoClassDefFoundError: com.android.tools.fd.runtime.AppInfo
    at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:229)
    at android.app.Application.attach(Application.java:201)
    at android.app.Instrumentation.newApplication(Instrumentation.java:998)
    at android.app.Instrumentation.newApplication(Instrumentation.java:982)
    at android.app.LoadedApk.makeApplication(LoadedApk.java:502)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4720)
    at android.app.ActivityThread.access$1500(ActivityThread.java:166)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1343)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5584)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
    at dalvik.system.NativeStart.main(Native Method)

仅在4.4及更低版本的设备上发生这种情况。我也遇到与this有关的麻烦。你认为我遇到的崩溃有关系吗?

这是我的项目build.gradle:

buildscript {
    repositories {
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'
        classpath 'io.fabric.tools:gradle:1.+'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

这是我的app build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
...
buildscript {
    repositories {
        jcenter()
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}

repositories {
    mavenCentral()
    maven { url 'https://maven.fabric.io/public' }
}

2 个答案:

答案 0 :(得分:8)

如果您使用的是Android Studio 2.0或更高版本,则应禁用即时运行&尝试再次建造。

Instant Run会尝试热插拔代码;这会导致应用程序类被移动。

禁用即时运行转到 文件>设置>构建,执行,部署>即时运行>取消选中"启用即时运行"

答案 1 :(得分:0)

NoClassDefFoundError - 通常与multidex问题有关。请检查此答案:Multidex