ProGuard对Kotlin反射的规则

时间:2015-05-05 19:44:00

标签: android reflection proguard kotlin

这是一个非常简单的课程:

class MainActivity : AppCompatActivity() {

    val prop: String = "test"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        Log.d("MainActivity", ::prop.name)
    }

}

如果我使用以下规则使用ProGuard运行此应用程序:

-dontwarn kotlin.**
-dontwarn org.w3c.dom.events.*
-dontwarn org.jetbrains.kotlin.di.InjectorForRuntimeDescriptorLoader

我得到了这个例外:

a.d.g: Property 'prop' not resolved in class com.cypressworks.kotlinreflectionproguard.MainActivity

我需要申请哪些ProGuard规则才能使其正常工作?

1 个答案:

答案 0 :(得分:1)

如果ProGuard删除了您的属性,dontwarn规则将仅隐藏警告消息。你需要的是真正告诉ProGuard保留它。

一种可能的方法是:

-keepclassmembers public class com.cypressworks.kotlinreflectionproguard.** {
    public * *;
}