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