Proguard issue "Warning:Ignoring InnerClasses attribute for an anonymous inner class"

proguard-android
proguard manual
proguard keep class
proguard ignore all warnings
proguard library
proguard ios
r8 vs proguard
proguard not working android studio

I don't know how I can describe this issue. I searched a lot, but I didn't find any solution.

Also this solution did not help me -keepattributes EnclosingMethod:

dependencies {
    compile project(':libraries:material-drawer')
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.0'
    compile 'com.android.support:recyclerview-v7:23.2.0'
    compile 'com.android.support:design:23.2.0'
    compile 'com.google.code.gson:gson:2.4'
    compile 'com.mcxiaoke.volley:library:1.0.19'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.squareup.okhttp:okhttp:2.4.0'
    compile 'de.greenrobot:eventbus:2.4.0'
    compile 'com.commit451:PhotoView:1.2.4'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.viewpagerindicator:viewpagerindicator:2.4.3'
    compile('com.github.afollestad.material-dialogs:commons:0.8.5.6@aar') {
        transitive = true
    }
    compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
        transitive = true;
    }
}

And the jar folder contains ormlite-android-4.48.jar and ormlite-core-4.48.jar.

Proguard File:

-keepattributes EnclosingMethod
-dontobfuscate

-keep public class * extends android.support.v4.view.ActionProvider {
    public <init>(android.content.Context);
}

-dontwarn android.support.v4.**

#FOR APPCOMPAT 23.1.1:
-keep class !android.support.v7.view.menu.*MenuBuilder*, android.support.v7.** { *; }
-keep interface android.support.v7.* { *; }

# Required for crashlytics
#-keep class com.crashlytics.** { *; }
#-keep class com.crashlytics.android.**

-keepattributes SourceFile,LineNumberTable,*Annotation*

# Required for eventbus
-keepclassmembers class ** {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
-keepclassmembers class ** {
    public void onEvent*(**);
}

# OrmLite uses reflection
-keep class com.j256.**
-keepclassmembers class com.j256.** { *; }
-keep enum com.j256.**
-keepclassmembers enum com.j256.** { *; }
-keep interface com.j256.**
-keepclassmembers interface com.j256.** { *; }

# Keep the helper class and its constructor
-keep class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper
-keepclassmembers class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper {
  public <init>(android.content.Context);
}

# Keep all model classes that are used by OrmLite
# Also keep their field names and the constructor
-keep @com.j256.ormlite.table.DatabaseTable class * {
    @com.j256.ormlite.field.DatabaseField <fields>;
    @com.j256.ormlite.field.ForeignCollectionField <fields>;
}

-keep public class org.codehaus.**
-keep public class java.nio.**

##---------------Begin: proguard configuration for Gson  ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class com.packagename.database.tables.** { *; }
-keep class com.packagename.models.apidata.** { *; }
-keep class com.packagename.models.data.** { *; }

## Nineolddroid related classes to ignore

-keep class com.nineoldandroids.animation.** { *; }
-keep interface com.nineoldandroids.animation.** { *; }
-keep class com.nineoldandroids.view.** { *; }
-keep interface com.nineoldandroids.view.** { *; }

-dontwarn okio.**

Error log:

Warning:Ignoring InnerClasses attribute for an anonymous inner class
this warning is that reflective operations on this class will incorrectly
(android.support.v4.app.FragmentTransitionCompat21$1) that doesn't come with an
(android.support.v4.view.accessibility.AccessibilityNodeProviderCompatJellyBean$1) that doesn't come with an
Warning:Ignoring InnerClasses attribute for an anonymous inner class
indicate that it is *not* an inner class.
Warning:Ignoring InnerClasses attribute for an anonymous inner class
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
(android.support.v4.view.ViewPropertyAnimatorCompatJB$1) that doesn't come with an
and without specifying any "-target" type options. The consequence of ignoring
(io.fabric.sdk.android.services.common.ExecutorUtils$1) that doesn't come with an
compiler that did not target the modern .class file format. The recommended
Warning:Ignoring InnerClasses attribute for an anonymous inner class
associated EnclosingMethod attribute. This class was probably produced by a
solution is to recompile the class from source, using an up-to-date compiler
compiler that did not target the modern .class file format. The recommended
compiler that did not target the modern .class file format. The recommended
(android.support.v4.view.accessibility.AccessibilityNodeProviderCompatKitKat$1) that doesn't come with an
indicate that it is *not* an inner class.
this warning is that reflective operations on this class will incorrectly
and without specifying any "-target" type options. The consequence of ignoring
(android.support.v4.view.AccessibilityDelegateCompatIcs$1) that doesn't come with an
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
(android.support.v4.app.FragmentTransitionCompat21$3) that doesn't come with an
solution is to recompile the class from source, using an up-to-date compiler
indicate that it is *not* an inner class.
solution is to recompile the class from source, using an up-to-date compiler
compiler that did not target the modern .class file format. The recommended
this warning is that reflective operations on this class will incorrectly
associated EnclosingMethod attribute. This class was probably produced by a
Warning:Ignoring InnerClasses attribute for an anonymous inner class
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
associated EnclosingMethod attribute. This class was probably produced by a
indicate that it is *not* an inner class.
Warning:Ignoring InnerClasses attribute for an anonymous inner class
indicate that it is *not* an inner class.
(android.support.v4.view.ViewPropertyAnimatorCompatKK$1) that doesn't come with an
and without specifying any "-target" type options. The consequence of ignoring
Warning:Ignoring InnerClasses attribute for an anonymous inner class
solution is to recompile the class from source, using an up-to-date compiler
this warning is that reflective operations on this class will incorrectly
solution is to recompile the class from source, using an up-to-date compiler
associated EnclosingMethod attribute. This class was probably produced by a
Warning:Ignoring InnerClasses attribute for an anonymous inner class
(android.support.v4.view.ViewPropertyAnimatorCompatICS$1) that doesn't come with an
(android.support.v4.app.FragmentTransitionCompat21$4) that doesn't come with an
solution is to recompile the class from source, using an up-to-date compiler
this warning is that reflective operations on this class will incorrectly
this warning is that reflective operations on this class will incorrectly
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
(android.support.v4.app.FragmentTransitionCompat21$2) that doesn't come with an
indicate that it is *not* an inner class.
this warning is that reflective operations on this class will incorrectly
compiler that did not target the modern .class file format. The recommended
indicate that it is *not* an inner class.
solution is to recompile the class from source, using an up-to-date compiler
compiler that did not target the modern .class file format. The recommended
and without specifying any "-target" type options. The consequence of ignoring
and without specifying any "-target" type options. The consequence of ignoring
indicate that it is *not* an inner class.
this warning is that reflective operations on this class will incorrectly
compiler that did not target the modern .class file format. The recommended
Warning:Ignoring InnerClasses attribute for an anonymous inner class
this warning is that reflective operations on this class will incorrectly
compiler that did not target the modern .class file format. The recommended
Warning:Ignoring InnerClasses attribute for an anonymous inner class
indicate that it is *not* an inner class.
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
associated EnclosingMethod attribute. This class was probably produced by a
indicate that it is *not* an inner class.
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
Warning:Ignoring InnerClasses attribute for an anonymous inner class
this warning is that reflective operations on this class will incorrectly
(android.support.v4.view.AccessibilityDelegateCompatJellyBean$1) that doesn't come with an
Warning:Ignoring InnerClasses attribute for an anonymous inner class
associated EnclosingMethod attribute. This class was probably produced by a
associated EnclosingMethod attribute. This class was probably produced by a
and without specifying any "-target" type options. The consequence of ignoring
(android.support.v4.view.ViewCompatLollipop$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
solution is to recompile the class from source, using an up-to-date compiler
Warning:Ignoring InnerClasses attribute for an anonymous inner class
compiler that did not target the modern .class file format. The recommended
indicate that it is *not* an inner class.
this warning is that reflective operations on this class will incorrectly
Warning:Ignoring InnerClasses attribute for an anonymous inner class
indicate that it is *not* an inner class.
associated EnclosingMethod attribute. This class was probably produced by a
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
solution is to recompile the class from source, using an up-to-date compiler
associated EnclosingMethod attribute. This class was probably produced by a
(com.android.volley.ExecutorDelivery$1) that doesn't come with an
solution is to recompile the class from source, using an up-to-date compiler
compiler that did not target the modern .class file format. The recommended
and without specifying any "-target" type options. The consequence of ignoring
associated EnclosingMethod attribute. This class was probably produced by a
and without specifying any "-target" type options. The consequence of ignoring
indicate that it is *not* an inner class.
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
indicate that it is *not* an inner class.
this warning is that reflective operations on this class will incorrectly
associated EnclosingMethod attribute. This class was probably produced by a
associated EnclosingMethod attribute. This class was probably produced by a
(io.fabric.sdk.android.services.common.ExecutorUtils$2) that doesn't come with an
Warning:Ignoring InnerClasses attribute for an anonymous inner class
compiler that did not target the modern .class file format. The recommended
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
and without specifying any "-target" type options. The consequence of ignoring
Uncaught translation error: com.android.dx.cf.code.SimException: local variable type mismatch: attempt to set or access a value of type int using a local variable of type android.support.design.widget.CoordinatorLayout$LayoutParams. This is symptomatic of .class transformation tools that ignore local variable information.

Rest of error log:

Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.commit451/PhotoView/1.2.4/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.crashlytics.sdk.android/crashlytics-core/2.3.8/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.github.afollestad.material-dialogs/commons/0.8.5.6/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.github.afollestad.material-dialogs/core/0.8.5.6/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.viewpagerindicator/viewpagerindicator/2.4.3/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.2.0/jars/classes.jar] (filtered)
  Copying resources from program jar [/home/ibrahim/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.4.0/5b72bf48563ea8410e650de14aa33ff69a3e8c35/okio-1.4.0.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.crashlytics.sdk.android/answers/1.3.6/jars/classes.jar] (filtered)
  Copying resources from program jar [/home/ibrahim/.gradle/caches/modules-2/files-2.1/com.nineoldandroids/library/2.4.0/e9b63380f3a242dbdbf103a2355ad7e43bad17cb/library-2.4.0.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/io.fabric.sdk.android/fabric/1.3.10/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.crashlytics.sdk.android/crashlytics/2.5.5/jars/classes.jar] (filtered)
  Copying resources from program jar [/home/ibrahim/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.4/695b63d702f505b9b916e02272e3b6381bade7f/gson-2.4.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.crashlytics.sdk.android/beta/1.1.4/jars/classes.jar] (filtered)
  Copying resources from program jar [/home/ibrahim/.gradle/caches/modules-2/files-2.1/com.mcxiaoke.volley/library/1.0.19/a8f23f65fc1e522ee4a1a697ee569901a46741fa/library-1.0.19.jar] (filtered)
  Copying resources from program jar [/home/ibrahim/.gradle/caches/modules-2/files-2.1/com.squareup.picasso/picasso/2.5.2/7446d06ec8d4f7ffcc53f1da37c95f200dcb9387/picasso-2.5.2.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.2.0/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.mikepenz/iconics/1.6.2/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/transforms/mergeJavaRes/release/jars/2/1f/main.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/AppName.libraries/material-drawer/unspecified/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.2.0/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.2.0/jars/libs/internal_impl-23.2.0.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/23.2.0/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.android.support/design/23.2.0/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/23.2.0/jars/classes.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/com.mikepenz/iconics-core/1.6.2/jars/classes.jar] (filtered)
  Copying resources from program jar [/home/ibrahim/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp/okhttp/2.4.0/40340c0748190fe897baf7bffbc1b282734294e5/okhttp-2.4.0.jar] (filtered)
  Copying resources from program jar [/home/ibrahim/.gradle/caches/modules-2/files-2.1/de.greenrobot/eventbus/2.4.0/ddd166d01b3158d1c00576d29f7ed15c030df719/eventbus-2.4.0.jar] (filtered)
  Copying resources from program jar [path/to/application/app/build/intermediates/exploded-aar/me.zhanghai.android.materialprogressbar/library/1.1.4/jars/classes.jar] (filtered)

Try adding

-keepattributes InnerClasses
-dontoptimize

to the ProGuard config. That should fix the problem.

It's probable that incompatible optimizations are applied (that probably causes the last line of the error log).

If you want to allow optimizations, it's necessary to fine tune optimizations config with

-optimizations optimization_filter 

option in ProGuard config.

How to fix this Proguard issue?, This issue is nothing related to code level or proguard setting in apps. Many apps are facing this:  Hey @HenryEgal, sorry for taking long to reply, no I left this issue, because I had other stuff to carry on that was more urgent, so I just left ProGuard unchecked. Then now working for home where I have the most recent version of visual studio I've refactored the code and the ProGuard simply worked.

Adding these lines to proguard-rules.pro file fixed my issue.

-keepattributes EnclosingMethod
-keepattributes InnerClasses

ProGuard icon ProGuard manual, The following sections discuss some common issues and solutions: InvalidClassException, class loading error, or verification error (in Java Micro Edition). I too am seeing a similar issue. On Xamarin Forms 2.5.0.122203 with ProGuard enabled no issue On Xamarin Forms 2.5.1.444934 with ProGuard NOT enabled - no issue On Xamarin Forms 2.5.1.444934 with ProGuard enabled - I get the attached exception on app load

I suggest -dontwarn InnerClasses

Java Obfuscator and Android App Optimizer, ProGuard is the most popular optimizer and obfuscator for Java bytecode and Android apps. Reduce your Java and Android applications up to 90% with  Troubleshooting ProGuard issues on Android. Wojtek Kaliciński. Follow. Sep 29, 2017

I've noticed that often the cause for this problem is when proguard-android.txt file is not referenced in the project, as it contains the correct configuration to avoid this issue:

# Preserve some attributes that may be required for reflection.
-keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod
Solution

Make sure to add this file to your project, along with your own ProGuard configuration files, for example:

release {
    minifyEnabled true
    setProguardFiles([getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'])
}

The file is contained in the SDK so your gradle build will pick it up automatically, you don't need to copy it to your project.

Proguard issue: "DaggerApplication Can't find referenced class , After migrating to 2.26 I started getting Proguard (not R8) obfuscation error: Warning: dagger.android.DaggerApplication: can't find referenced  How to fix this Proguard issue? Ask Question Asked 3 years, 7 months ago. Active 3 years, 7 months ago. Viewed 820 times 3. 3. I have removed proguard from my app but

You've got 2 problems here.

1) Warning:Ignoring InnerClasses attribute for an anonymous inner class ......

It's just a warning. If your code works properly you can ignore it by disabling Lint in the .gradle file:

android {
    ...
    lintOptions {
        abortOnError false
    }
}

2) translation error: attempt to set or access a value of type int using a local variable of type android.support.design.widget.CoordinatorLayout$LayoutParams

This looks like in some place ProGuard optimizes variable allocation, but does it incorrectly.

Try to disable this optimization by adding the line below in your ProGuard file:

-optimizations !code/allocation/variable

Proguard issue · Issue #1042 · stripe/stripe-android · GitHub, Summary I'm dealing with some issues trying last stripe SDK version with proguard (I migrate from 8.7.0). Code to reproduce Use stripe > 9.0.0  Summary I'm dealing with some issues trying last stripe SDK version with proguard (I migrate from 8.7.0). Code to reproduce Use stripe > 9.0.0 Installation method gradle SDK version greater than 9.0.0 Other information Here is my current

The Xamarin.Android and ProGuard issue, If you are trying to use ProGuard against Android 7.0 or later, you must download a newer version of ProGuard because the Android SDK does not ship a new  Actually everybody has those problems who wants to use ProGuard. Therefore I opened bug 54642 in order that Xamarin fixes their installation routine to install ProGuard correctly from the start so that you can use it right away without fiddling with it yourself.

Shrink, obfuscate, and optimize your app, In fact, R8 works with all of your existing ProGuard rules files, so updating the find a solution to your issue below, also read the R8 FAQ page and ProGuard's  I am building an android app with proguard in Android Studio and I only want to use proguard to obfusciate my code except the library jar files. Since some classes from the library jar are giving me errors during the building process with proguard but none without, I don't want proguard to process the library jar files.

Configuring ProGuard, ProGuard is a tool to help minify, obfuscate, and optimize your code. It is not Because of the latter issue, ProGuard is often recommended to be used both in  If you are unable to resolve the issue, please report a bug. Troubleshoot with R8. This section describes some strategies for troubleshooting issues when enabling shrinking, obfuscation, and optimization using R8. If you do not find a solution to your issue below, also read the R8 FAQ page and ProGuard’s troubleshooting guide.

Comments
  • Hello, please do you remembrer the size of your org.gradle.jvmargs=xxxx ?
  • I have tried below solutions but it didn't worked out.Please help me with this stackoverflow.com/questions/51629487/… Thanks in advance
  • Hmm, weird. What about the other module ':libraries:material-drawer', is it obfuscated? This problem often occurs when an obfuscated library is added to an app and the library is missing some attributes.
  • Try to skip optimizations -dontoptimize. It's possible that some incompatible optimizations are performed.
  • -dontoptimize worded thank you. Please edit your answer so i can accept it :)
  • Done. I added some more details to optimizations.
  • What if I want to avoid these warning on debug build, do I have to use proguard file?
  • Is this relevant for debug builds?
  • @IgorGanapolsky I just tested it on my debug build and it removed the errors I had for the same issue.
  • @IgorGanapolsky unless you've explicitly changed your build.gradle file, debug builds do not use ProGuard, so this is not relevant for debug builds. It doesn't make much sense (to me at least) to obfuscate debug builds, because it makes it harder to debug.
  • I have tried above solution but it didn't worked out.Please help me with this stackoverflow.com/questions/51629487/… Thanks in advance