我在我的Android应用程序中使用来自Jcenter的外部库(Picasso) . 我正在我的应用程序中实现该库的接口 . 问题是proguard总是剥离我的应用程序中实现的接口的方法 .
外部库中定义的接口是
public interface Callback {
void onSuccess();
void onError();
}
我在我的代码中实现了这个接口 . 当我运行proguard并检查我的.class文件时,我发现在我实现的类中没有 onSuccess
和 onError
方法 .
我已经添加了配置,通过添加它来完全跳过我的proguard文件中的所有外部库
-keep class com.squareup.picasso.** {*;}
-dontwarn com.squareup.picasso.**
防止上述剥离的一种方法是我这样做,其中 PicassoCallback
是我的 Callback
接口的实现
-keep class com.package.className$PicassoCallback{
public void onSuccess();
public void onError();
}
但是我必须为我项目中的外部接口的每个实现执行此操作 .
任何proguard配置可以帮助我防止在整个项目中剥离方法?
2 回答
只需添加以下行:
在这之后:
我使用了几个平方库,所以我的项目中有下一个配置:
编辑:一些有用的例子:https://www.guardsquare.com/en/proguard/manual/examples
您可以配置ProGuard以使用此规则保留实现
Callback
接口的所有类:另一种方法是将
@Keep
注释添加到所有回调中,这基本上告诉ProGuard不要以任何方式剥离/修改它们 .