如何不混淆类名,反而获得正确的简单名称?

时间:2018-11-26 16:04:51

标签: obfuscation android-proguard matomo piwiktracker adjust-android

我有20多个从MyFragment扩展的片段,例如:

  • LoginFragment extends MyFragment
  • UploadFragment extends MyFragment
  • CameraFragment extends MyFragment
  • 等。

MyFragment依次从Fragment扩展。因此,在我的Android应用程序中,每当我为其中之一充气时,我都会在我的抽象类中将其称为showFragment(MyFragment f),在其中触发Adjust事件,

AdjustEvent event = new AdjustEvent(EVENT_LOAD_FRAGMENT);
// Add callback parameters to this parameter.
event.addCallbackParameter("LoadFragment", 
f.getClass().getSimpleName());
Adjust.trackEvent(event);

以便我可以测量哪个片段作为kay值对的使用频率。到目前为止,一切都很好,并且在调试阶段,效果很好。

您现在可以想象,getClass().getSimpleName()在生产环境中被混淆了。我不想触及所有的20个片段,如果对这些类进行了混淆,那会很好。但是我仍然想获得该类的有效getSimpleName()字符串..

混淆了getSimpleName()的类如何有效?

2 个答案:

答案 0 :(得分:0)

将以下内容添加到您的proguard配置文件中。

-keep,allowobfuscation class  * extends com.you.package.name.MyFragment

答案 1 :(得分:0)

我用过

-keepnames class  * extends com.you.package.name.MyFragment

打开aar和classes.jar的包装,并检查构建forlder中的seed.txt和mapping.txt以查看混淆情况