java.lang.NoClassDefFoundError 从 Fabric Beta 安装应用程序后
java.lang.NoClassDefFoundError after installing app from Fabric Beta
当我直接编译我的应用程序时,它适用于所有设备。但是,当我通过 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.access00(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
}
这是我的应用 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' }
}
NoClassDefFoundError - 通常与 multidex 问题有关。检查这个答案:
如果您使用的是 Android Studio 2.0 或更高版本,那么您应该禁用即时 运行 并尝试重新构建。
即时 运行 尝试对您的代码进行热插拔;这会导致应用程序 class 被移动。
要禁用 Instant 运行 转到
文件 > 设置 > 构建、执行、部署 > 即时 运行 > 取消选中 "Enable instant run"
当我直接编译我的应用程序时,它适用于所有设备。但是,当我通过 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.access00(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
}
这是我的应用 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' }
}
NoClassDefFoundError - 通常与 multidex 问题有关。检查这个答案:
如果您使用的是 Android Studio 2.0 或更高版本,那么您应该禁用即时 运行 并尝试重新构建。
即时 运行 尝试对您的代码进行热插拔;这会导致应用程序 class 被移动。
要禁用 Instant 运行 转到 文件 > 设置 > 构建、执行、部署 > 即时 运行 > 取消选中 "Enable instant run"