ProGuard修改(增加大小)跳过的类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ProGuard修改(增加大小)跳过的类相关的知识,希望对你有一定的参考价值。

我正在使用ProGuard 5.3.3版混淆可执行jar。

我的jar包含其他我不想混淆或优化的库。

这是我的ProGuard配置:

-libraryjars 'C:Program FilesJavajre1.8.0_131lib
t.jar'

-injars myjar-debug.jar
-outjars myjar-release.jar

-skipnonpubliclibraryclasses
-dontoptimize
-dontshrink
-useuniqueclassmembernames
-keeppackagenames org.**
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
-ignorewarnings

-keep class org.** { *; }
-keepclassmembers class org.** { *; }
-dontwarn org.**

-keepclasseswithmembers public class * {
    public static void main(java.lang.String[]);
}

-keepclasseswithmembers class * {
    native <methods>;
}

-keepclasseswithmembernames class * {
    native <methods>;
}

混淆工作完全正常,执行jar时没有错误。但是,如果我比较原始jar和混淆的jar,我可以看到ProGuard修改了包org.**中的类。大多数类文件的大小都超过了原始大小。

Original Jar(Left) VS Obfuscated Jar(Right)

我不希望ProGuard完全修改这些文件。如何完全排除此包,以便org.**中类文件的二进制文件完全相同?

答案

我认为你需要调整你的jar构建过程,然后先混淆然后制作可执行jar。

我不确定你是否使用maven / gradle,但与使用命令行相比,这将使你的生活更轻松

以上是关于ProGuard修改(增加大小)跳过的类的主要内容,如果未能解决你的问题,请参考以下文章

Proguard 使用 Google Play 服务库返回错误

Android Proguard 跳过外部 jar

转载ProGuard

转载ProGuard

转载ProGuard

启用 Proguard 后无法实例化片段