Getting “EnclosingMethod” errors on building in Android Studio 2

北城余情 提交于 2019-11-27 06:34:10

问题


I am getting below build errors when I am running the app in Android Studio 2. These errors were not there when I was using earlier version of Android Studio.

Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
Error:(com.squareup.haha.guava.base.Joiner$1) that doesn't come with an
Error:associated EnclosingMethod attribute. This class was probably produced by a
Error:compiler that did not target the modern .class file format. The recommended
Error:solution is to recompile the class from source, using an up-to-date compiler
Error:and without specifying any "-target" type options. The consequence of ignoring
Error:this warning is that reflective operations on this class will incorrectly
Error:indicate that it is *not* an inner class.
Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
Error:(com.squareup.haha.guava.collect.Iterables$2) that doesn't come with an
Error:associated EnclosingMethod attribute. This class was probably produced by a
Error:compiler that did not target the modern .class file format. The recommended
Error:solution is to recompile the class from source, using an up-to-date compiler
Error:and without specifying any "-target" type options. The consequence of ignoring
Error:this warning is that reflective operations on this class will incorrectly
Error:indicate that it is *not* an inner class.
Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
Error:(com.squareup.haha.guava.collect.Iterables$3) that doesn't come with an
Error:associated EnclosingMethod attribute. This class was probably produced by a
Error:compiler that did not target the modern .class file format. The recommended
Error:solution is to recompile the class from source, using an up-to-date compiler
Error:and without specifying any "-target" type options. The consequence of ignoring
Error:this warning is that reflective operations on this class will incorrectly
Error:indicate that it is *not* an inner class.

What are these errors and how to resolve them? Also, the apk is building fine and the app also runs perfectly.


回答1:


Update 2016/09/19

This is fixed in LeakCanary 1.4, so simply upgrading should fix it without needing to mess with an alternate version of haha.

debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4'

Previously

These warnings are caused by haha:2.0.2, which is a dependency of leakcanary-android:1.4-beta2.

It's fixed in haha:2.0.3, so you can fix it by explicitly using the newer version in your dependencies. Add this line for each flavor where you are adding a leakcanary dependency. You don't need to add it for leakcanary-android-no-op, since it has no dependencies.

debugCompile 'com.squareup.haha:haha:2.0.3'



回答2:


Adding

-keepattributes EnclosingMethod

to proguard's configuration file (in my case, proguard.cfg) seems to have fixed this.




回答3:


I was getting same error. It seems there was some problem with leakcanary (in my case). I tried following changes in proguard file.

-dontwarn com.squareup.haha.guava.**
-dontwarn com.squareup.haha.perflib.**
-dontwarn com.squareup.haha.trove.**
-dontwarn com.squareup.leakcanary.**
-keep class com.squareup.haha.** { *; }
-keep class com.squareup.leakcanary.** { *; }

# Marshmallow removed Notification.setLatestEventInfo()
-dontwarn android.app.Notification

I am not getting those issue anymore. Here is the link




回答4:


I solved the issue by adding following dependency to my build.gradle:

testCompile "com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2"

here is link:https://github.com/square/leakcanary/issues/491



来源:https://stackoverflow.com/questions/36762834/getting-enclosingmethod-errors-on-building-in-android-studio-2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!