更多混淆相关的知识见: 读懂 Android 中的代码混淆 - 技术小黑屋 为什么需要保留四大组件? 问题描述分析原因解决方法开发过程中发现即使混淆文件里不keep四大组件,它们也不会被混淆。 四大组件声明必须在manifest中注册,如果混淆后类名更改,而混淆后的类名没有在manifest注册,是不符合Android组件注册机制的。外部程序可能使用组件的字符串类名,如果类名混淆,可能导致出现异常为什么没有手动Keep四大组件也没有什么问题? 默认的Proguard配置已经默认了四大组件的keep.只要是没在manifest文件注册的,都会参与混淆,比如BaseActivity。