我有一个很难找到的奇怪的错误: - (
在我的Android应用中,我使用Retrofit2并Moshi访问api。我还使用proguard-android-optimize.txt
使我的应用程序干净小巧。在我的proguard-rules.pro
我有:
-assumenosideeffects class timber.log.Timber { *; }
-assumenosideeffects class android.util.Log { *; }
使用此组合,当我尝试访问api时,我收到此错误stream was reset: null
。
要解决此问题,我必须从我的proguard配置中删除此assumenosideeffects
行。但为什么?当proguard删除日志记录方法时,有没有人知道为什么我会遇到这个网络问题?
答案 0 :(得分:1)
通配符*
匹配所有方法,包括超类中的方法,如Object#wait()
。您真的不想删除这些调用,因此您应该明确列出要删除调用的方法:
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
如果您指定通配符,ProGuard已经打印出警告。