我有一个基于eclipse的应用程序,它使用YFiles库。我想在我的代码中混淆YFiles和调整YFiles库的混淆类。
我正在通过触发ant脚本的Maven构建来执行这个混淆。我的ant-script有混淆的逻辑。这看起来...
<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混淆也不会有问题。然而,我的代码在这种情况下也会变得模糊,这是我不想要的。
感谢并问候阿比诺
发布于 2014-01-17 18:07:16
您似乎正在对yFiles库的接口或类进行子类化/实现。请注意,如果您正在子类化一个类,并告诉yGuard不要混淆这个子类,那么整个类的层次结构也会被保留(这对于类加载器来说是必要的)。只需在keep规则中排除扩展/实现yFiles类类。这里的一个陷阱是匿名类。要避免这种情况,请将匿名类转换为外部或内部类,并在keep规则中显式排除这些类。
https://stackoverflow.com/questions/20994125
复制相似问题