You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 01:57:43