Android K上的BuildConfig NoClassDefFoundError [英] BuildConfig NoClassDefFoundError on Android K

查看:169
本文介绍了Android K上的BuildConfig NoClassDefFoundError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近将构建环境升级到了Android Studio 2.2,JDK 1.8(带有jack),并且正在使用gradle-2.14.1的gradle包装器.我的build/release变体可以在任何> K的android版本上编译并正常运行.但是,当我尝试在android K设备上运行代码时,代码可以很好地编译,并且apk可以正确生成,但是代码立即崩溃,堆栈跟踪如下代码似乎找不到BuildConfig类.我将不胜感激任何指针.谢谢!

I recently upgraded my build environment to Android studio 2.2, JDK 1.8 (with jack) and I am using gradle wrapper with gradle-2.14.1. My build/release variants compile and run properly on any android release > K. However when I try to run the code on an android K device, the code compiles fine and apk is generated properly but the code immediately crashes with stack trace below as the code can't seem to find BuildConfig class. Would appreciate any pointers that I can possibly look into. Thanks!

致命异常:主要 流程:com.trail.android.debug,PID:21045 java.lang.NoClassDefFoundError:com.trail.android.BuildConfig 在 com.trail.android.TrailApplication.attachBaseContext(TrailApplication.java:41) 在android.app.Application.attach(Application.java:181) 在 android.app.Instrumentation.newApplication(Instrumentation.java:991) 在 android.app.Instrumentation.newApplication(Instrumentation.java:975) 在android.app.LoadedApk.makeApplication(LoadedApk.java:511) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:4317) 在android.app.ActivityThread.access $ 1500(ActivityThread.java:135) 在 android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1256) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:136) 在android.app.ActivityThread.main(ActivityThread.java:5017) 在java.lang.reflect.Method.invokeNative(本机方法) 在java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:779) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 在dalvik.system.NativeStart.main(本机方法)

FATAL EXCEPTION: main Process: com.trail.android.debug, PID: 21045 java.lang.NoClassDefFoundError: com.trail.android.BuildConfig at com.trail.android.TrailApplication.attachBaseContext(TrailApplication.java:41) at android.app.Application.attach(Application.java:181) at android.app.Instrumentation.newApplication(Instrumentation.java:991) at android.app.Instrumentation.newApplication(Instrumentation.java:975) at android.app.LoadedApk.makeApplication(LoadedApk.java:511) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4317) at android.app.ActivityThread.access$1500(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) 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:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method)

推荐答案

这与 https://code.google.com/p/android/issues/detail?id=224026

某些类进入二级dex文件(在我的情况下,BuildConfig.class在二级dex中),而KitKat在二级dex中找不到(这在Android L及更高版本以及pre L之前可自动使用,对multidex的支持库应该已经解决了这个问题,但是我碰到了我猜到的错误).要解决此问题,请在您的jackOptions中添加以下内容.

Some of the classes get into secondary dex file (in my case BuildConfig.class was in secondary dex) and KitKat was not able to find in secondary dex (this works automatically on Android L and above and on pre L the multidex support library should have taken care of this but I was hitting the bug I guess). To workaround the issue, please add following to your jackOptions.

 jackOptions {
            enabled true
            additionalParameters("jack.dex.output.policy" : "multidex")
            additionalParameters("jack.preprocessor" : "true")
            additionalParameters("jack.preprocessor.file" : "legacyMultidexInstallation.jpp")
            additionalParameters("jack.dex.output.multidex.legacy": "true")
        }

使用此修复程序,它对我有用.

With this fix, it worked for me.

这篇关于Android K上的BuildConfig NoClassDefFoundError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆