0

我有一个使用 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 混淆就没有问题了。但是,在我不想要的情况下,我的代码也会变得模糊。

感谢和问候阿比诺

4

1 回答 1

0

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

于 2014-01-17T10:07:15.833 回答