Proguard 问题“警告:忽略匿名内部类的 InnerClasses 属性”
Posted
技术标签:
【中文标题】Proguard 问题“警告:忽略匿名内部类的 InnerClasses 属性”【英文标题】:Proguard issue “Warning:Ignoring InnerClasses attribute for an anonymous inner class” 【发布时间】:2018-06-25 03:51:11 【问题描述】:我在构建 APK 时收到此错误日志。请帮我解决一下这个。提前致谢。
我的 Gradle 文件
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.2"
multiDexEnabled true
dexOptions
javaMaxHeapSize "4g"
buildTypes
release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
dependencies
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile files('libs/glide-3.7.0.jar')
compile files('libs/android-async-http-1.4.4.jar')
compile('com.github.ozodrukh:CircularReveal:2.0.1@aar')
transitive = true;
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.google.code.gson:gson:2.7'
compile 'com.mcxiaoke.volley:library-aar:1.0.0'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'de.hdodenhof:circleimageview:2.1.0'
compile 'com.google.android.gms:play-services:10.0.1'
compile 'com.android.support:multidex:1.0.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.google.firebase:firebase-core:10.0.1'
compile 'com.googlecode.ez-vcard:ez-vcard:0.10.2'
compile 'com.applozic.communication.uiwidget:audiovideo:1.2'
compile 'com.itextpdf:itextg:5.5.9'
compile 'lib.kashif:folderpicker:2.2'
compile 'com.yovenny.VideoCompress:videocompress:1.0.0'
apply plugin: 'com.google.gms.google-services'
我的 Proguard 文件是
-keep class com.itextpdf.** *;
-dontwarn com.itextpdf.**
-dontwarn com.squareup.picasso.**
-keep class org.apache.http.** *;
-dontwarn org.apache.http.**
-keep class android.net.http.** *;
-dontwarn android.net.http.**
-keepattributes InnerClasses
-optimizations optimization_filter
最后是错误日志
信息:Gradle 任务 [:app:assembleDebug] 错误:警告:忽略匿名内部类的 InnerClasses 属性 错误:(freemarker.cache.FileTemplateLoader$1) 不附带 错误:关联的 EnclosureMethod 属性。这个类可能是由一个 错误:没有针对现代 .class 文件格式的编译器。推荐的 错误:解决方案是使用最新的编译器从源代码重新编译类 错误:并且没有指定任何“-target”类型选项。忽视的后果 错误:此警告是对此类的反射操作将错误 错误:表明它不是一个内部类。 错误:警告:忽略匿名内部类的 InnerClasses 属性 错误:(freemarker.cache.FileTemplateLoader$2) 不附带 错误:关联的 EnclosureMethod 属性。这个类可能是由一个 错误:没有针对现代 .class 文件格式的编译器。推荐的 错误:解决方案是使用最新的编译器从源代码重新编译类 错误:并且没有指定任何“-target”类型选项。忽视的后果 错误:此警告是对此类的反射操作将错误 错误:表明它不是一个内部类。 错误:警告:忽略匿名内部类的 InnerClasses 属性 错误:(freemarker.cache.FileTemplateLoader$4) 不附带 错误:关联的 EnclosureMethod 属性。这个类可能是由一个 错误:没有针对现代 .class 文件格式的编译器。推荐的 错误:解决方案是使用最新的编译器从源代码重新编译类 错误:并且没有指定任何“-target”类型选项。忽视的后果 错误:此警告是对此类的反射操作将错误 错误:表明它不是一个内部类。 错误:警告:忽略匿名内部类的 InnerClasses 属性 错误:(freemarker.cache.FileTemplateLoader$3) 不附带 错误:关联的 EnclosureMethod 属性。这个类可能是由一个 错误:没有针对现代 .class 文件格式的编译器。推荐的 错误:解决方案是使用最新的编译器从源代码重新编译类 错误:并且没有指定任何“-target”类型选项。忽视的后果 错误:此警告是对此类的反射操作将错误 错误:表明它不是一个内部类。 错误:警告:忽略匿名内部类的 InnerClasses 属性 错误:(freemarker.cache.TemplateCache$1) 不附带 错误:关联的 EnclosureMethod 属性。这个类可能是由一个 错误:没有针对现代 .class 文件格式的编译器。推荐的 错误:解决方案是使用最新的编译器从源代码重新编译类 错误:并且没有指定任何“-target”类型选项。忽视的后果 错误:此警告是对此类的反射操作将错误 错误:表明它不是一个内部类。 错误:警告:忽略匿名内部类的 InnerClasses 属性 错误:(freemarker.cache.TemplateLookupResult$1) 不附带 错误:关联的 EnclosureMethod 属性。这个类可能是由一个 错误:没有针对现代 .class 文件格式的编译器。推荐的 错误:解决方案是使用最新的编译器从源代码重新编译类 错误:并且没有指定任何“-target”类型选项。忽视的后果 错误:此警告是对此类的反射操作将错误 错误:表明它不是一个内部类。 错误:警告:忽略匿名内部类的 InnerClasses 属性 错误:(freemarker.cache.TemplateLookupStrategy$1) 不附带 错误:关联的 EnclosureMethod 属性。这个类可能是由一个 错误:没有针对现代 .class 文件格式的编译器。推荐的 错误:解决方案是使用最新的编译器从源代码重新编译类 错误:并且没有指定任何“-target”类型选项。忽视的后果 错误:此警告是对此类的反射操作将错误 错误:表明它不是一个内部类。 错误:警告:忽略匿名内部类的 InnerClasses 属性 错误:(freemarker.cache.TemplateNameFormat$1) 不附带 错误:关联的 EnclosureMethod 属性。这个类可能是由一个 错误:没有针对现代 .class 文件格式的编译器。推荐的 错误:解决方案是使用最新的编译器从源代码重新编译类 错误:并且没有指定任何“-target”类型选项。忽视的后果 错误:此警告是对此类的反射操作将错误 错误:表明它不是一个内部类。 错误:警告:忽略匿名内部类的 InnerClasses 属性 错误:(freemarker.core.BlockAssignment$CaptureOutput$1) 不附带 错误:关联的 EnclosureMethod 属性。这个类可能是由一个 错误:没有针对现代 .class 文件格式的编译器。推荐的 错误:解决方案是使用最新的编译器从源代码重新编译类 错误:并且没有指定任何“-target”类型选项。忽视的后果 错误:此警告是对此类的反射操作将错误 错误:表明它不是一个内部类。 错误:警告:忽略匿名的 InnerClasses 属性
【问题讨论】:
【参考方案1】:将此添加到proguard
-dontwarn freemarker.**
或者另一种解决方案是-这是因为一些依赖关系,所以在 build.gradle (app) 中添加它
dependencies
compile ('com.mylib.lib')
exclude group: 'org.freemarker'
【讨论】:
以上是关于Proguard 问题“警告:忽略匿名内部类的 InnerClasses 属性”的主要内容,如果未能解决你的问题,请参考以下文章
Proguard 启用 NoSuchMethodException
proguard.ParseException:proguard.cfg 中的未知选项“-encryptstrings”