Proguard:忽略包不会阻止警告
Proguard: ignoring package does not prevent warnings
为什么让 proguard 忽略一个包并不能阻止与该包相关的警告?
背景:
我正在尝试将 Proguard 应用于大型项目。不出所料,我有很多这样的警告:
Warning:net.fortuna.ical4j.model.CalendarFactory: can't find superclass or interface groovy.util.AbstractFactory
Warning:net.fortuna.ical4j.model.CalendarFactory: can't find superclass or interface groovy.lang.GroovyObject
Warning:net.fortuna.ical4j.model.ContentBuilder: can't find superclass or interface groovy.util.FactoryBuilderSupport
Warning:net.fortuna.ical4j.model.ParameterListFactory: can't find superclass or interface groovy.util.AbstractFactory
Warning:net.fortuna.ical4j.model.ParameterListFactory: can't find superclass or interface groovy.lang.GroovyObject
Warning:net.fortuna.ical4j.model.component.AbstractComponentFactory: can't find superclass or interface groovy.util.AbstractFactory
Warning:net.fortuna.ical4j.model.component.AbstractComponentFactory: can't find superclass or interface groovy.lang.GroovyObject
Warning:net.fortuna.ical4j.model.component.XComponentFactory: can't find superclass or interface groovy.util.AbstractFactory
Warning:net.fortuna.ical4j.model.component.XComponentFactory: can't find superclass or interface groovy.lang.GroovyObject
Warning:net.fortuna.ical4j.model.parameter.AbstractParameterFactory: can't find superclass or interface groovy.util.AbstractFactory
Warning:net.fortuna.ical4j.model.parameter.AbstractParameterFactory: can't find superclass or interface groovy.lang.GroovyObject
Warning:net.fortuna.ical4j.model.property.AbstractPropertyFactory: can't find superclass or interface groovy.util.AbstractFactory
我想我可以通过从混淆器中排除这些包来解决这个问题,直到我的应用程序在启用混淆器的情况下运行。然后,逐个包地工作,我可以弄清楚是应该忽略警告还是只排除必要的部分。
我用了this example如何排除包,添加
-keep class net.fortuna.ical4j.model.** { public protected private *; }
添加到我的混淆器规则文件中。但是,我收到与以前相同的警告。我确实找到了 this,它建议将 -keep
与 -dontwarn
结合使用,但我不明白为什么让 proguard 忽略该包并不能一起阻止警告。
保留 class 不会自动隐藏与此 class 相关的警告,因为它们可能表示配置有问题或缺少输入。
要隐藏特定软件包的警告,请使用
-dontwarn com.example.**
这只会隐藏Warnings,不会隐藏Notes,可以这样隐藏:
-dontnote com.example.**
查看您的具体警告消息,您似乎缺少一个 groovy 库,该库被 ical4j 模型 classes 使用和引用。
为什么让 proguard 忽略一个包并不能阻止与该包相关的警告?
背景:
我正在尝试将 Proguard 应用于大型项目。不出所料,我有很多这样的警告:
Warning:net.fortuna.ical4j.model.CalendarFactory: can't find superclass or interface groovy.util.AbstractFactory
Warning:net.fortuna.ical4j.model.CalendarFactory: can't find superclass or interface groovy.lang.GroovyObject
Warning:net.fortuna.ical4j.model.ContentBuilder: can't find superclass or interface groovy.util.FactoryBuilderSupport
Warning:net.fortuna.ical4j.model.ParameterListFactory: can't find superclass or interface groovy.util.AbstractFactory
Warning:net.fortuna.ical4j.model.ParameterListFactory: can't find superclass or interface groovy.lang.GroovyObject
Warning:net.fortuna.ical4j.model.component.AbstractComponentFactory: can't find superclass or interface groovy.util.AbstractFactory
Warning:net.fortuna.ical4j.model.component.AbstractComponentFactory: can't find superclass or interface groovy.lang.GroovyObject
Warning:net.fortuna.ical4j.model.component.XComponentFactory: can't find superclass or interface groovy.util.AbstractFactory
Warning:net.fortuna.ical4j.model.component.XComponentFactory: can't find superclass or interface groovy.lang.GroovyObject
Warning:net.fortuna.ical4j.model.parameter.AbstractParameterFactory: can't find superclass or interface groovy.util.AbstractFactory
Warning:net.fortuna.ical4j.model.parameter.AbstractParameterFactory: can't find superclass or interface groovy.lang.GroovyObject
Warning:net.fortuna.ical4j.model.property.AbstractPropertyFactory: can't find superclass or interface groovy.util.AbstractFactory
我想我可以通过从混淆器中排除这些包来解决这个问题,直到我的应用程序在启用混淆器的情况下运行。然后,逐个包地工作,我可以弄清楚是应该忽略警告还是只排除必要的部分。
我用了this example如何排除包,添加
-keep class net.fortuna.ical4j.model.** { public protected private *; }
添加到我的混淆器规则文件中。但是,我收到与以前相同的警告。我确实找到了 this,它建议将 -keep
与 -dontwarn
结合使用,但我不明白为什么让 proguard 忽略该包并不能一起阻止警告。
保留 class 不会自动隐藏与此 class 相关的警告,因为它们可能表示配置有问题或缺少输入。
要隐藏特定软件包的警告,请使用
-dontwarn com.example.**
这只会隐藏Warnings,不会隐藏Notes,可以这样隐藏:
-dontnote com.example.**
查看您的具体警告消息,您似乎缺少一个 groovy 库,该库被 ical4j 模型 classes 使用和引用。