一次对多个项目进行 Java Proguard 混淆或保存接口包括定义?

问题描述

我正在通过 maven 混淆/优化一个应用程序和一组插件/库(使用 ServiceLoader)。

插件仅在与应用程序相同的代码库中创建/维护,它不是用于第 3 方开发的接口,因此需要进行混淆。

我希望能够混淆插件接口类中包含的应用程序代码。我能想到的唯一方法是同时在应用程序和插件上运行 proguard(或者以某种方式让 proguard 保存应用程序运行信息以在插件编译中使用)。这可能吗?或者,我是否必须不混淆任何包含的代码

我现在正在使用单独的 maven pom 文件来构建应用程序和插件。我可以将 proguard 阶段添加到包含应用程序和插件 poms 的顶级 pom 文件中吗?

这是界面的样子,我希望能够混淆 AppClass1 和 AppClass2,首先在应用上使用 proguard 我不能这样做。

package com.project.app;

public interface RunPlugin {

    public int plugin_function(AppClass1 a1,AppClass2 a2);

}

另外,我想我在技术上需要使用 proguard 生成的 .jar 来编译插件,并且它必须知道实体映射。

我得到的错误很简单且符合预期,

Caused by: java.lang.AbstractMethodError: Receiver class com.project.dummy.runcustomPlugin does not define or inherit an implementation of the resolved method 'abstract int plugin_function(com.project.app.o,com.project.app.b)' of interface com.project.app.RunPlugin.
        at com.project.app.o.<init>(UnkNown Source)
        at com.project.app.m.a(UnkNown Source)
        at com.project.app.m.call(UnkNown Source)

抱歉,如果有关于这样做的 proguard 参考 - 除了说不要混淆所需的应用程序类之外,找不到任何其他内容

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)