2017-12-27 49 views
1

ProGuard 버전 5.3.3을 사용하여 실행 파일을 난독 화합니다.ProGuard는 건너 뛴 클래스를 수정 (크기 증가)

My jar에는 난독 화하거나 최적화하고 싶지 않은 다른 라이브러리가 들어 있습니다.

-libraryjars 'C:\Program Files\Java\jre1.8.0_131\lib\rt.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>; 
} 

난처 완벽하게 잘 작동하고 항아리를 실행에 오류가 없는지 :

이 내 ProGuard에서의 설정입니다. 그러나 원래의 jar와 난독 화 된 jar를 비교하면 ProGuard가 패키지 org.** 내의 클래스를 수정 한 것을 볼 수 있습니다. 대부분의 클래스 파일 크기는 원래 크기보다 큽니다.

Original Jar(Left) VS Obfuscated Jar(Right)

나는 ProGuard에서 모두에서 이러한 파일을 수정하지 않습니다. org.**에있는 클래스 파일의 바이너리가 정확히 동일하도록이 패키지를 완전히 제외하려면 어떻게해야합니까?

답변

0

난 당신이 귀하의 항아리 건물 프로세스를 조정할 필요가 있다고 생각하고 먼저 난독 화를 실행 다음 항아리를 확인하십시오. 당신은 그러나이가 항아리가 만들어 않습니다 아무리 명령 줄

+0

를 사용하는 것에 비해 쉽게 당신의 인생을 만들 것입니다 받는다는/Gradle을 사용하는 경우

나는 확실하지 않다? –

+0

어느 정도는 가능합니다. 뚱뚱한 (실행 가능한) jar 파일을 생성하기 전에 먼저 obfuscate하면 ​​jar 파일에 소스 코드 만 포함되므로 실행 가능한 jar 파일을 만드는 프로세스가 종속 파일을 번들에 포함하게됩니다. – Shailesh