【问题标题】:YGuard does not obfuscate properly two libraries togetherYGuard 没有正确混淆两个库
【发布时间】:2014-01-08 11:18:58
【问题描述】:

我有一个使用 YFiles 库的基于 Eclipse 的应用程序。我想在我的代码中混淆 YFiles 并调整 YFiles 库的混淆类。

我正在通过触发 ant 脚本的 Maven 构建来执行这种混淆。我的蚂蚁脚本有混淆的逻辑。这看起来像--

<project name="obfuscate">
<target name="obf-modeler">
    <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="./lib/yguard.jar" />
    <yguard>
        <inoutpair in="yfiles.jar" out="obfyfiles.jar" />
        <inoutpair in="<my-app-jar>" out="<my-app-jar>" />
        <rename replaceClassNameStrings="true">
            <keep>
                <class classes="private" methods="private" fields="private">
                    <patternset>
                        <include name="com.<my-company-name>." />
                    </patternset>
                </class>
                <package>
                    <patternset>
                        <include name="com.<my-company-name>." />
                    </patternset>
                 </package>
            </keep>
            <adjust replaceContent="true">
                <include name="plugin.xml" />
            </adjust>
        </rename>
    </yguard>
</target>

我正在混淆 Yfiles 和我的代码,以便 YFiles 混淆也包含在我的代码中。我还有一个关于类和包元素的模式集,告诉 YGaurd“不要混淆我的代码,只调整 YFiles 混淆更改”

不幸的是,如果我运行 maven 构建,一些具有某些返回类型的公共 YFiles 方法不会被混淆。 例如 -- y.base.NodeMap 类的方法被混淆了,没有返回类型,其他返回东西的方法仍然有旧的方法名称。

任何线索我的模式集中出了什么问题。另外,如果我删除了这个模式集,YFiles 混淆就没有问题了。但是,在我不想要的情况下,我的代码也会变得模糊。

感谢和问候 阿比诺

【问题讨论】:

    标签: java maven ant obfuscation yguard


    【解决方案1】:

    您似乎正在继承/实现 yFiles 库的接口或类。请注意,如果您要对一个类进行子类化并告诉 yGuard 不要混淆子类,则整个类层次结构也会保留(这对于类加载器是必需的)。只需在您的保留规则中排除扩展/实现 yFiles API 类的类。这里的一个陷阱是匿名类。为避免这种情况,请将您的匿名类转换为外部或内部类,并在您的保留规则中明确排除这些类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      相关资源
      最近更新 更多