【问题标题】:ProGuard: Problems using obfuscated JARProGuard:使用混淆 JAR 的问题
【发布时间】:2012-11-22 19:18:00
【问题描述】:

我有一个带有类的 JAR myapp-logic,其中一些是混淆的,一些是非混淆的。

我想在名为myapp-web 的网络应用程序中使用myapp-logic。当我将myapp-logic 的混淆版本添加到myapp-web 的依赖项中时,我收到以下错误消息(当我运行mvn clean compile 时):

EntryPageController.java:[55,41] incompatible types
found   : java.lang.Object
required: ru.altruix.ccp.logic.api.simfacade.SimulationFacade

出现错误的代码如下所示:

final SimulationFacadeFactory factory = this.injector.getInstance(SimulationFacadeFactory.class);
simulationFacade = factory.create(); // The error occurs here (line 55)

当我用 Jad 打开混淆的myapp-logic JAR 时,SimulationFacadeFactory 接口没有被混淆(或者看起来它没有被混淆):

原码:

package ru.altruix.ccp.logic.api.simfacade;

import ru.altruix.commons.api.conventions.Factory;

public interface SimulationFacadeFactory extends Factory<SimulationFacade> {
}

Eclipse 没有显示该错误(它只出现在 Maven 中)。

我可以做些什么来修复错误(使myapp-web的代码参考混淆myapp-logic进行编译)?

【问题讨论】:

    标签: java maven maven-2 obfuscation proguard


    【解决方案1】:

    试试看是否有帮助: 在您的 Proguard 规则中,尤其是保留签名可能会有所帮助。

    <keepattribute name="*Annotation*" />
    <keepattribute name="Signature" />
    <keepattribute name="Exceptions" />
    

    【讨论】:

    • 谢谢。 pom.xml 文件(ProGuard maven 插件的配置)中是否有示例说明如何执行此操作?
    • 我不知道这个例子适用于蚂蚁。但是您很容易发现,请查看 ProGuard 的主页。让我知道这是否有帮助。签名需要与 java 泛型兼容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    相关资源
    最近更新 更多