首页 > 解决方案 > 启用 proguard 后无法访问 kotlin 类中使用的伴随对象

问题描述

我有一个 Kotlin 类,伴随对象中有一些变量。启用 proguard 后,变量不会被访问。

class Test{    
    ......    
    companion object {    
        const val USER_NAME = "user_name"    
        .....    
  }    
  .....    
}  

Proguard 规则包括:-

-keep class kotlin.** { *; }    
-keep class kotlin.Metadata { *; }    
-dontwarn kotlin.**    
-keepclassmembers class **$WhenMappings {    
    <fields>;    
}    
-keepclassmembers class kotlin.Metadata {    
    public <fields>;    
    public <methods>;    
}    

-keepclassmembers class * {    
    static final % *;    
    static final java.lang.String *;    
}    

标签: kotlinproguard

解决方案


@Keep在伴随对象之前使用解决的问题

class Test{    
    ......    
    @Keep companion object {    
        const val USER_NAME = "user_name"    
        .....    
  }    
  .....    
}  

推荐阅读