为什么让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
我想我可以通过从proguard中排除这些软件包来解决这个问题,直到我的应用程序在启用proguard的情况下运行。然后,逐个工作,我可以弄清楚我是否应该忽略警告或只排除必要的部分。
我使用了this example如何排除包,添加
-keep class net.fortuna.ical4j.model.** { public protected private *; }
到我的proguard规则文件。但是,我得到了和以前一样的警告。我确实发现this建议将-keep
与-dontwarn
结合使用,但我不明白为什么让proguard忽略该包并不能完全阻止警告。
答案 0 :(得分:1)
保持课程不会自动隐藏与此课程相关的警告,因为它们可能表示配置有问题或输入丢失。
隐藏特定包裹使用的警告
-dontwarn com.example.**
这只会隐藏警告,而不会隐藏 Notes ,它们可以像这样隐藏:
-dontnote com.example.**
查看特定的警告消息,看起来您缺少一个由ical4j模型类使用和引用的groovy库。