Progaurd问题“警告:忽略匿名内部类的InnerClasses属性”
我不知道如何描述这个问题。 我搜查了很多,但我没有find任何解决scheme。
此解决scheme也没有帮助我-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.jar
和ormlite-core-4.48.jar
。
Progaurd文件:
-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
到ProGuardconfiguration。 这应该解决这个问题。
可能会应用不兼容的优化(可能会导致错误日志的最后一行)。
如果你想允许优化,有必要微调优化configuration
-optimizations optimization_filter
ProGuardconfiguration中的选项。
将这些行添加到proguard-rules.pro文件解决了我的问题。
-keepattributes EnclosingMethod -keepattributes InnerClasses
我build议-dontwarn InnerClasses
你在这里有两个问题。
1) Warning:Ignoring InnerClasses attribute for an anonymous inner class ......
这只是一个警告。 如果您的代码正常工作,您可以通过在.gradle
文件中禁用Lint来忽略它:
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
这看起来像在一些地方ProGuard优化variables分配,但不正确。
尝试通过在ProGuard文件中添加以下行来禁用此优化:
-optimizations !code/allocation/variable
我注意到这个问题的原因往往是当项目中没有引用proguard-android.txt文件,因为它包含正确的configuration,以避免此问题:
# Preserve some attributes that may be required for reflection. -keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod
解
确保将此文件与您自己的ProGuardconfiguration文件一起添加到您的项目中,例如:
release { minifyEnabled true setProguardFiles([getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro']) }
该文件包含在SDK中,因此您的Gradle版本会自动选取,您不需要将其复制到您的项目中。
将dex.force.jumbo=true
添加到你的gradle.properties中。 这个对我有用。
我通过更新编译SDK,目标SDK版本和支持库版本解决了类似的问题。