混淆Java程序会影响其性能吗(排除重命名)?
不,混淆只是将您的有意义的命名代码替换为难以阅读的代码。在某些情况下(例如使用ProGuard时),我们的代码甚至可以通过删除所有无用的代码块(例如if(false)
和类似语句)进行“优化”。
编辑(澄清Magesh的想法)。
当使用混淆器(而不是手动混淆,这不是一个好主意)时,它会加载您的类并内联一些方法或代码块(如上述if),以简化获得大块代码的代码。因此,方法调用较少,需要的堆栈使用较少,从而加快应用程序速度。
混淆器通常还会将所有变量从mySmartVariable
重命名为a$a$a
,从而使反编译变得不可能(因为Java反编译器将$
视为用于标识内部和匿名类而不是变量的符号)。