如何配置ProGuard规则避免密封类Banana的构造方法被移除?
解决方案
当然有对应的ProGuard规则可以阻止Banana类的构造方法被移除。
具体规则
在你的ProGuard配置文件(通常为proguard-rules.pro)中添加以下规则:
# 保留Fruits.Banana类的所有构造方法 -keepclassmembers class com.yourpackage.Fruits$Banana { <init>(...); } # 可选:若需保留Banana类名称不被混淆(按需添加) -keep class com.yourpackage.Fruits$Banana
规则说明
<init>(...)匹配类的所有构造方法,-keepclassmembers指令会强制ProGuard不移除、不混淆这些构造方法。- 将
com.yourpackage替换为Fruits类实际所在的包名。 - 第二条可选规则用于保留
Banana类的原始名称,如果你需要通过反射等方式引用这个类名,建议添加。
构造被移除的原因
你的Kotlin代码里Banana是普通类,若代码中没有显式调用它的构造方法(比如没有Banana()这样的实例化操作),ProGuard的优化阶段会判定该构造方法无实际用途,进而将其移除。上述规则能强制保留该构造方法。
内容的提问来源于stack exchange,提问作者Navinpd
相关产品推荐
相关产品推荐

