避免单个实例变量在android

时间:2016-07-27 14:04:47

标签: java android proguard android-proguard

我的情况是我有一个实例变量TAG,它只是我使用方法MainActivity.class.getsimpleName()获取的类名。

EG。 public static final String TAG=MainActivity.class.getsimpleName();

我正在使用此TAG变量进行谷歌分析跟踪。事实上因为pro guard我的变量是obfuscated而我得到一些无用的字符串作为我的跟踪类名,因此分析是不可能的,我有100个类的类硬编码每个类的所有TAG变量(我将作为我的最后手段)。

我还想混淆代码以保持我的应用程序的安全性。有没有办法我只能排除TAG变量被混淆或以任何方式让我的分析有意义。

我如何才能有效地解决这个问题?

2 个答案:

答案 0 :(得分:3)

public static final String TAG = "MainActivity";

如果您想更改TAG的值,请让AndroidStudio为您重构。

这是TAG未被混淆的唯一可能性。这是您的TAG所有者,会被混淆。

如果我是对的,你的活动对此很好(因为AndroidManifest需要确切的语法)。但你的碎片是。重构的价值仍然较低。

尝试使用正则表达式替换所有AndroidStudio功能,以节省您的时间,例如:

查找:TAG = (.+).class.getSimpleName\(\); 替换:TAG = "$1";

答案 1 :(得分:0)

作为一个缺点,这样的解决方案在很大程度上抵消了大小/混淆改进,因为代码现在再次包含原始类名,尽管是间接的。