Proguard:混淆后发生RuntimeException

时间:2018-12-30 02:47:58

标签: java proguard obfuscation chromium-embedded

我正在Intellij Idea(不使用gradle / maven)中构建Java应用程序,该应用程序使用JCEF(Java Chromium嵌入式框架)。该程序取决于一些本地库和其他jar。目录结构如下所示:

-assets
-blob_storage
-cache
-cert
-rel
-sample-data
debug.log
lastmsg.dat
preferences.json
app.jar
app-ob.jar

所有其他目录都是无关紧要的,但relrel包含Jcef运行所需的所有本机dll。 app.jar是Intellij Idea生成的jar的非混淆版本,app-ob.jar是使用proguard混淆的同一jar。我现在面临的问题是,如果RuntimeException不可用或具有以空字符串作为其值的字段,则混淆版本的jar会抛出一个preferences.json。干净,无混淆的罐子运行没有问题。我的config.pro文件看起来像这样:

-injars app.jar
-outjars app-ob.jar
-libraryjars C:\Program Files\Java\jre1.8.0_161\lib\rt.jar
-keepattributes SourceFile,Signature,LineNumberTable,Exceptions, *Annotation*
-dontoptimize
-keepdirectories
-keep public class application.MainFrame {
    public static void main(java.lang.String[]);
}

我正在使用以下命令运行它: C:\Users\Devashish\Desktop\proguard6.0.3\bin>proguard @config.pro -dontwarn

其他jar依赖项(例如Gson和Commons-exec)由Intellij打包在jar文件中。我想指出的是,如果没有-dontwarn,则proguard会发出警告,提示诸如17 References are not foundCode is inconsistent之类的东西,但是jar的未混淆版本可以正常工作,所以我只附加了-dontwarn。有人可以帮我解决吗?还是我需要添加更多信息(在这种情况下,请在评论中让我知道)?

0 个答案:

没有答案