首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有混淆和优化

只有混淆和优化
EN

Stack Overflow用户
提问于 2018-10-28 13:35:31
回答 1查看 163关注 0票数 1

我一直在混乱的配置,并发现我想测试,只是为了优化和混淆,而不是缩小只是为了减少我的罐子一点。这是我的配置:

代码语言:javascript
复制
# Include java runtime classes
-libraryjars  <java.home>/lib/rt.jar


-dontshrink
-dontusemixedcaseclassnames
-dontpreverify
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
-optimizationpasses 5
-dontwarn
-keep class **
-keep interface **
-keep enum **

但我还是会犯这样的错误:

java.lang.IllegalArgumentException:找不到org/apache/logging/log4j/core/jackson/Log4jXmlModuleorg/apache/logging/log4j/core/jackson/Log4jJsonModule的普通超类

我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-28 14:00:21

log4j库依赖于某些运行时依赖项,请参见此处的页面:

https://logging.apache.org/log4j/2.x/runtime-dependencies.html

所讨论的类(Log4jXmlModule和Log4jJsonModule)是从某些jackson类扩展而来的,它只是一个可选的依赖项,因此可能没有包含在您的项目中。

如果启用-dontshrink,ProGuard无法删除这些类,在优化过程中会出现类似的错误,因为ProGuard不了解层次结构。通常,不建议执行优化,而是禁用收缩,因为一些优化技术依赖于收缩之后清理的事实。

在您的示例中,您可以将缺失的运行时依赖项作为-libraryjar输入添加到ProGuard中,以避免此错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53032091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档