【问题标题】:Only Obfuscate & Optimize仅混淆和优化
【发布时间】:2018-10-28 13:35:31
【问题描述】:

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

# 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/Log4jXmlModule] 的通用超类(具有 1 个已知超类)和 [org/apache/logging/log4j/core /jackson/Log4jJsonModule](有 4 个已知的超类)

我做错了什么?

【问题讨论】:

    标签: java kotlin proguard


    【解决方案1】:

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

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

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

    如果您启用-dontshrink,ProGuard 将无法删除这些类,并且在优化期间您会收到类似的错误,因为 ProGuard 不了解层次结构。一般来说,不建议执行优化而是禁用收缩,因为一些优化技术依赖于收缩之后清理的事实。

    在您的情况下,您可以将缺少的运行时依赖项作为 -libraryjar 输入添加到 ProGuard 以避免此错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多