关注Removing unused strings during ProGuard optimisation我创建了Logg
类,旨在通过Proguard轻松删除:
public class Logg {
public static void e(Object... args) {
Log.e(TAG, buildString(args));
}
public static void d(Object... args) {
Log.d(TAG, buildString(args));
}
}
接下来,我将这些规则添加到项目使用的proguard-rules.pro
:
-assumenosideeffects class com.mypackage.Logg {
public static *** d(...);
public static *** e(...);
}
-optimizationpasses 10
在构建项目之后,我使用JD-GUI检查生成的classes.jar
文件并查看以下行:
new Object[1][0] = "Some log message";
Logg.e(...
调用已被删除,但常量仍然存在。 -optimizationpasses 5
行提到了String
而不是Object
。
有没有办法确保Proguard会删除这些字符串?