美文网首页
混淆activity名

混淆activity名

作者: zzjian | 来源:发表于2018-12-13 17:47 被阅读0次

    我们知道一般情况下Activity的子类是不能混淆的,但是呢这句话说的不完全。确切的说应该是在Manifest文件中注册的Activity是不能混淆的。因为Manifest文件中要写一个Activity的class的路径的字符串。如果原始的类被混淆了,而字符串没有修改,那么Android系统在做安全验证的时候就会找不到Activity,那么就没办法通过安全验证。但是设想一下如果我们的继承关系是这个样子的:

    MainActivity--->BaseActivity ---->Activity
    

    那么试问,这个BaseActivity是不是可以混淆,经过验证这个是可以混淆的。因为BaseActivity 不需要在Manifest文件中注册,而MainActivity需要。那么我们变通一下。把这个继承链加长

    a--->MainActivity--->BaseActivity ---->Activity
    

    这个时候,a 类的实现是这个样子的:

    public class a extends MainActivity {
    }
    

    其实a里面啥也没有,就是个占位符,这个a并不是混淆生成的,而是我们本来就把这个类命名为a。并且在Manifest文件里面我们就注册这个a类。那么试问这个时候,MainActivity 和 BaseActivity是不是就可以参与混淆。而这个时候我们的所有业务依然在MainActivity里面实现,a仅仅是个看起来像是混淆名字的占位符而已。。。。

    其他需要在Manifest中注册的文件同理,比如service或application...

    做个记录。原文https://www.jianshu.com/p/3606f006ea7b

    相关文章

      网友评论

          本文标题:混淆activity名

          本文链接:https://www.haomeiwen.com/subject/fumbhqtx.html