不应该使用 .class.getSimpleName() 作为标签吗?

the*_*ole 4 obfuscation android

我读到人们不应该使用像这样的标签

private static final String TAG = ThisClassName.class.getSimpleName();
Run Code Online (Sandbox Code Playgroud)

反而

private static final String TAG = "MCLSN";
Run Code Online (Sandbox Code Playgroud)

因为 ProGuard 会产生错误和/或无法正确混淆代码。这些理由合理吗?

参考:

http://www.drewhannay.com/2016/02/android-logcat-tag-best-practices.html https://blog.mindorks.com/applying-proguard-in-an-android-application

小智 5

这肯定是一个问题。我目前正在使用用于getSimpleName()标签的代码,正如已经提到的,使用 proguard 可以将这些代码从“FragmentA”混淆为“a”。

如果使用这些标签进行识别,则很容易引入错误,因为可能有多个名称被混淆为“a”。

我们还有一个额外的问题,因为这些混淆的标签用于数据库 ID 和字段。因此,解决此问题将破坏客户的数据库行为。

不好的事情,如果可能的话,最好尽早避免。