我有一个 Kotlin 类,在伴随对象中有一些变量。启用 proguard 后,变量不会被访问。
class Test{
......
companion object {
const val USER_NAME = "user_name"
.....
}
.....
}
Run Code Online (Sandbox Code Playgroud)
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 *;
}
Run Code Online (Sandbox Code Playgroud)
@Keep
在伴随对象之前使用解决的问题
class Test{
......
@Keep companion object {
const val USER_NAME = "user_name"
.....
}
.....
}
Run Code Online (Sandbox Code Playgroud)
经过多次斗争后,对我来说最有效的事情是:
-keep class <class>$Companion { *; }
Run Code Online (Sandbox Code Playgroud)
无需注释。
接受的答案使用@Keep
注释。如果这对您有用,那就太好了,但在我们的情况下,这并没有什么不同。
对于同一条船上的其他任何人,以下是对我们有用的解决方案(添加到您的 proguard 规则中):
-keepclassmembers class com.example.some.package.SomeClass {
public static ** Companion;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3415 次 |
最近记录: |