2016-10-03 87 views
0

我最近将我的编译环境升级到Android studio 2.2,JDK 1.8(带插孔),并且我使用了gradle-2.14.1的gradle wrapper。我的构建/发布变体编译并在任何Android版本> K上正常运行。但是,当我尝试在android K设备上运行代码时,代码编译正常,并且apk已正确生成,但代码立即崩溃,代码似乎无法找到BuildConfig类。将不胜感激任何指针,我可以看看。谢谢!Android上的BuildConfig NoClassDefFoundError K

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)

+0

'BuildConfig'类应该由Android自动生成..或者你创建了自己的(这是坏的)?你有没有尝试过_Build_ - > _Clean Project_ - > _Rebuild Project_? –

+0

感谢您的回复。我尝试了一个干净的项目 - >重建,但我继续得到相同的错误。我没有编写任何自定义BuildConfig并使用默认生成的。令人费解的是,该设置对Android L及以上版本完美无缺。 –

+0

最后几次猜测,您是否设置了正确的'minSdkVersion'?您是否尝试过更新构建工具或Android Gradle插件版本? –

回答

0

这是(本作品相关https://code.google.com/p/android/issues/detail?id=224026

一些类进入二次DEX文件(在我的情况BuildConfig.class在二次DEX)和奇巧无法在二级DEX找到自动在Android L和以上,并在前L multidex支持库应该已经照顾了这一点,但我打了我猜的错误)。要解决该问题,请将以下内容添加到您的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") 
     } 

有了这个修复程序,它为我工作。

+0

文件的位置和位置legacyMultidexInstallation .jpp? –