android - Proguard 问题 "Warning:Ignoring InnerClasses attribute for an anonymous inner class"

标签 android proguard android-support-library android-proguard

我不知道该如何描述这个问题。我搜索了很多,但没有找到任何解决方案。

这个解决方案也没有帮助我-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;
    }
}

并且jar文件夹包含ormlite-android-4.48.jarormlite-core-4.48.jar

Proguard 文件:

-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.**

错误日志:

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.

错误日志的其余部分:

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)

最佳答案

尝试添加

-keepattributes InnerClasses
-dontoptimize

到 ProGuard 配置。这应该可以解决问题。

可能应用了不兼容的优化(这可能导致错误日志的最后一行)。

如果您想允许优化,则有必要使用

微调优化配置
-optimizations optimization_filter 

ProGuard 配置中的选项。

关于android - Proguard 问题 "Warning:Ignoring InnerClasses attribute for an anonymous inner class",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35796144/

相关文章:

android - 键盘键的自定义弹出窗口

java - 为什么我的 android 应用程序这么慢?

android - 如何使用 volley 将 JSON 响应加载到与从 android 发送的 city_id 相关的微调器中

java - 升级到Gradle 3,我无法构建发行版,因为它似乎不符合我的保护规则

android - 自定义警报中的 handler.postDelayed 导致我的应用程序崩溃

java - ProGuard Java 库路径

android - 将子项目中的本地构建依赖于根项目中的 proguard

android - fitsSystemWindows 被 ConstraintLayout 忽略

android - 操作栏微调器不匹配样式,深色微调器文本

android - 在支持库中为 FloatingActionButton 设置边框颜色