Proguard保持类名?

你好,我正在写一个Android应用程序,我已经设置了Proguard混淆我的应用程序。 然而,我使用类加载器dynamic加载不同的扩展到我的应用程序。 问题是如果他们的名字被改变,这些不能正确加载。 我如何让Proguard不要混淆特定的类名?

Solutions Collecting From Web of "Proguard保持类名?"

在你的proguard.cfg中使用-keepnames选项

请参阅手册https://www.guardsquare.com/en/proguard/manual/usage#keepoptions

-keepnames class_specification

保持简短-keep,allowshrinking class_specification

指定要保留名称的类和类成员(如果它们在缩小阶段未被删除)。 例如,您可能希望保留所有实现Serializable接口的类的类名,以便处理后的代码与原始序列化的类保持兼容。 完全没有使用的类仍然可以被删除。 只有在混淆时才适用。

这使得类名保持不变:

 -keepnames class com.somepackage.* 

对于不希望ProGuard更改任何类名的所有人,提供方便的提示:

 # please KEEP ALL THE NAMES -keepnames class ** { *; } 

这样,您将获得可读的堆栈跟踪,同时仍然抛出不需要的东西。 🙂