YGuard没有正确地混淆两个库

时间:2014-01-08 11:18:58

标签: java maven ant obfuscation yguard

我有一个基于eclipse的应用程序,它使用YFiles库。我想混淆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&amp;我的代码在一起,所以YFiles混淆也包含在我的代码中。我在课堂上也有一个模式集。包元素告诉YGaurd“不要混淆我的代码,只调整YFiles混淆变化”

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

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

谢谢&amp;问候 Abhinaw

1 个答案:

答案 0 :(得分:0)

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