我有一个已发布的应用程序,它在Log.i("TAG", myCustomObject.toString())
时崩溃了。我通过修复自定义对象的toString()
方法来解决崩溃问题。我在那里真的有问题,这不是问题。
但是,我很好奇,因为该方法不应在“发行”版本上调用,因为我已通过proguard“禁用”了android.util.Log
。
我通过proguard禁用了android.util.Log
,如下所示:
proguard-rules_release.pro
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int d(...);
public static int w(...);
public static int v(...);
public static int i(...);
}
build.gradle
release {
zipAlignEnabled true
debuggable false
shrinkResources true
minifyEnabled true
signingConfig signingConfigs.common
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules_release.pro'
}
崩溃行:
Log.i(LOG_TAG, "Result: " + myCustomObject);
由于自定义对象的toString()
方法发生错误,导致崩溃。没关系...我只是好奇,因为我认为该行将被proguard完全删除。.在发行版中看不到任何日志消息,因此我假设proguard正常工作并删除了所有日志消息从应用程序中。但是我很好奇为什么我在那条线上撞车了...