1

내 자신의 사용자 정의 프레임 워크/jar/SDK를 사용하는 Android 애플리케이션을 개발 중입니다. 이 메인 패키지 내에 SDK 패키지 이름이 com.vrs.fm이고 하위 패키지 및 클래스가 N 개가 없다고 가정합니다. 내 응용 프로그램 패키지는 역사적인 이유로 com.vrs.app입니다.Proguard - 외부 패키지를 유지하면서 내부 패키지를 난독 화합니다.

사용자 정의 vrs SDK에서 proguard를 활성화하는 동안 패키지를 com.vrs으로 유지해야하므로 proguard 규칙을 추가했습니다.

-dontwarn com.vrs.** 
-keep class com.vrs.** { *; } 

이것은 내 응용 프로그램 코드를 모호하지 않게 유지합니다.

지금은 내가 당신이 유지되는 특정 서브 패키지를 제외 할 제외 규칙을 사용할 수 있습니다 com.vrs.fm

답변

2

에서 com.vrs.app 패키지에서 클래스 만 유지하는 클래스를 당황하게 할 수있는, 어떤 방법/규칙이 알고 싶다 : 그런 필요에 따라

-keep class !com.vrs.app.**, com.vrs.** { *; } 

아직 명시 적으로 유지 될 필요가 com.vrs.app의 특정 부분은 추가적인 킵 규칙을 추가 할 수있는 경우 :

-keep class com.vrs.app.xxx.yyy { xxx; } 
+0

-keep class! com.vrs.app. **, com.vrs. ** {; } 작동 안됨. 그러나 -keep 클래스! com.vrs.app. *, com.vrs. ** {*; } com.vrs.app에서는 하위 클래스 com.vrs.app.XXX가 아니라 obfuscating 클래스 만 작동합니다. – vrs

+0

답안과 똑같은 규칙을 사용 했습니까? 그것이 효과가 없다면 나는 놀랄 것이다. com.vrs.app. **을 유지할 수있는 다른 규칙이 없는지 확인하십시오. –

+0

그래, 나는 대답과 같은 규칙을 사용했다. 아마 내 파일에있는 다른 프로 가드 규칙이 그것을 멈출 수 있습니다. – vrs