我在我的Android应用程序中使用SLF4J进行日志记录。在发布版本中,我不希望所有的调试日志都出现,所以我试图用ProGuard删除它们。但日志语句仍然打印到logcat控制台,我无法弄清楚我自己做错了什么。这是我第一次使用ProGuard,因此非常感谢任何帮助!谢谢!Android:如何使用ProGuard删除SLF4J调试日志记录
MainActivity.java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MainActivity {
private static final Logger log = LoggerFactory
.getLogger(MainActivity.class.getSimpleName());
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
log.debug("Starting application.");
}
}
项目proguard.txt
-assumenosideeffects class org.slf4j.Logger {
public *** trace(...);
public *** debug(...);
}
项目proguard.txt(扩展的第一个版本没有工作)
-assumenosideeffects class org.slf4j.Logger {
public *** trace(...);
public *** debug(...);
}
-assumenosideeffects interface org.slf4j.Logger {
public *** trace(...);
public *** debug(...);
}
-assumenosideeffects class * implements org.slf4j.Logger {
public *** trace(...);
public *** debug(...);
}
-assumenosideeffects class * implements org.slf4j.Logger {
public void trace(java.lang.String);
public void trace(java.lang.String, java.lang.Object);
public void trace(java.lang.String, java.lang.Object, java.lang.Object);
public void trace(java.lang.String, java.lang.Object[]);
public void trace(java.lang.String, java.lang.Throwable);
public void trace(org.slf4j.Marker, java.lang.String);
public void trace(org.slf4j.Marker, java.lang.String, java.lang.Object);
public void trace(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object);
public void trace(org.slf4j.Marker, java.lang.String, java.lang.Object[]);
public void trace(org.slf4j.Marker, java.lang.String, java.lang.Throwable);
public void debug(java.lang.String);
public void debug(java.lang.String, java.lang.Object);
public void debug(java.lang.String, java.lang.Object, java.lang.Object);
public void debug(java.lang.String, java.lang.Object[]);
public void debug(java.lang.String, java.lang.Throwable);
public void debug(org.slf4j.Marker, java.lang.String);
public void debug(org.slf4j.Marker, java.lang.String, java.lang.Object);
public void debug(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object);
public void debug(org.slf4j.Marker, java.lang.String, java.lang.Object[]);
public void debug(org.slf4j.Marker, java.lang.String, java.lang.Throwable);
}
的logcat - 调试建立
01-08 11:27:02.105 31142-31142/com.example.android D/MainActivity﹕ Starting application.
logcat的 - (!不应该有)发布版本
01-08 11:30:08.615 26483-26483/? D/MainActivity﹕ Starting application.
您的长期配置中唯一对我有用的部分是引用该接口的部分。 –