Невозможно получить доступ к объекту-компаньону, используемому в классе kotlin после включения proguard - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть класс 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 *;    
}    

Ответы [ 2 ]

0 голосов
/ 21 августа 2019

В принятом ответе используется аннотация @Keep.Если это работает для вас, тогда отлично, но в нашем случае это не имеет значения.

Для всех, кто находится в той же лодке, вот решение, которое сработало для нас (добавьте к вашим правилам защиты):

-keepclassmembers class com.example.some.package.SomeClass {
    public static ** Companion;
}
0 голосов
/ 20 декабря 2018

Проблема решена с помощью @Keep перед сопутствующим объектом

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