【问题标题】:How to keep internal var in companion object如何在伴随对象中保留内部变量
【发布时间】:2020-01-21 14:45:59
【问题描述】:

我有以下类定义:

class SomeObject {

    companion object {
       internal val instance = SomeObject()
    }

}

这个类是自我维持的,只是在听事件。 我的问题是 proguard 删除了“实例”字段。

我在我的 proguard 文件中写什么来保留实例字段(它可以被混淆,但我想防止该字段被视为“未使用的代码”)

【问题讨论】:

  • 为什么不使用object 而不是class?在字节码中,它转换为与您编写的内容类似的内容...即您使用object SomeObject { }... 而不是您显示的代码
  • @Roland 可能需要SomeObject 的不同实例(在向其添加更多属性之后),因此不能使用作为单例的object
  • var 是写 SO 的错字;)
  • 好的...那么我的cmets关于罪魁祸首是无关紧要的...现在我只有这个问题是否应该是单身......或者拥有这个内部@的目的是什么987654327@?

标签: kotlin proguard


【解决方案1】:

proguard 规则应如下所示:

-keepclassmembers class com.your.package.path.SomeObject {
    public static ** Companion;
}

通过这种方式,您可以指定不应删除伴随对象的类(包括属性)。

【讨论】:

  • 理论上确实如此,但我的实际问题并非如此;)
猜你喜欢
  • 2022-01-13
  • 2019-07-23
  • 2020-04-27
  • 2019-12-31
  • 2013-04-29
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多