代码之家  ›  专栏  ›  技术社区  ›  Bartek Lipinski

Proguard,保留所有引用的类

  •  6
  • Bartek Lipinski  · 技术社区  · 7 年前

    假设我有结构:

    import some.other.Clazz;
    
    public class A {
    
        Clazz clazz;
        B b;
    
        public class B {
            C c;
            //...
        }
    
        public static class C {
            //...
        }
    }
    

    递归地 keep A B C Clazz ?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Eugene Loy    7 年前

    我不认为只有proguard可以做到这一点,我真的怀疑有没有一个简单的解决方案(你可以使用的插件)与mvn\gradle\sbt\无论什么。


    总体思路是:

    (1) jdeps .class 感兴趣的文件。

    在您的示例中,输出 some.class (限于 root_package )应该是这样的:

    jdeps -v -R -e "root_package.*" some.class
    

    抓住 jdeps 输出并将其转换为proguard config(要 -keep ).

    在主proguard配置文件中 include


    我的建议是使用构建系统必须运行的任何脚本功能 JDEP

    例如,Maven plugin that allows groovy scripts to be executed 在构建期间。

    1. JDEP 输出如下:

      grep -Po classname_regex

      classname_regex

    2. grep 比如:

      awk '{print "-keep class " $0}

      ... 获取proguard配置并将输出保存到文件。