2017-04-12 7 views
0

Android 애플리케이션에서 Jcenter의 외부 라이브러리 (Picasso)를 사용하고 있습니다. 내 애플 리케이션에서 해당 라이브러리의 인터페이스를 구현하고 있습니다. 문제는 프로 가드가 항상 앱에서 구현 된 인터페이스의 메소드를 제거한다는 것입니다.Proguard가 구현 된 인터페이스의 메소드를 제거하지 못하게합니다

외부 라이브러리에 정의 된 인터페이스는

public interface Callback { 
    void onSuccess(); 

    void onError(); 
} 

내가 내 코드에서이 인터페이스를 구현합니다. 내가 proguard를 실행하고 .class 파일을 검사 할 때, 구현 된 클래스에 onSuccessonError 메소드가 없다는 것을 알았습니다.

는 이미 위의 스트립을 방지이

-keep class com.squareup.picasso.** {*;} 
-dontwarn com.squareup.picasso.** 

방법 중 하나를 추가하여 내 난독 파일 완전히 모든 외부 라이브러리를 건너 구성을 추가 한 것입니다 내가이 작업을 수행 할 것을, 내 구현 곳 PicassoCallback입니다 Callback 인터페이스

-keep class com.package.className$PicassoCallback{ 
    public void onSuccess(); 
    public void onError(); 
} 

하지만 난 내 프로젝트의 외부 인터페이스의 모든 구현이 작업을 수행해야합니다.

프로젝트 전체에서 메소드를 스트립하지 못하도록 막아주는 프로 가이드 구성이 있습니까? 이 일 후에

-keep interface com.squareup.picasso.** { *; } 

:

답변

0

그냥이 줄을 추가

-keep class com.squareup.picasso.** {*;} 

을 내가 그렇게 여러 squareup libs와 사용 나는 내 프로젝트의 다음 구성이 :

-keep class com.squareup.** { *; } 
    -keep interface com.squareup.** { *; } 

편집 : 몇 가지 유용한 예 : https://www.guardsquare.com/en/proguard/manual/examples

또 다른 방법은 여러분 모두 기본적으로 제거하지 ProGuard를 알려줍니다 콜백의 @Keep 주석을 추가하는 것입니다
-keep class ** implements com.squareup.picasso.Callback { *; } 

/수정

:
+0

아니요. 그게 도움이되지 못했습니다. – Diffy

0

이 규칙을 사용하여 Callback 인터페이스를 구현하는 모든 클래스를 유지하는 ProGuard를 구성 할 수 있습니다 그것들은 어떤 식 으로든.

+0

나는 이것을 시도하고 점검 할 것이다. – Diffy