2015-05-05 99 views
4

這裏是一個非常簡單的類:ProGuard的規則

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規則需要申請才能使用?

+0

你有一個成功的回答這個問題? –

+0

不是,問題在這裏進行追蹤:https://youtrack.jetbrains.com/issue/KT-7652。但是,屬性反射現在可以在沒有'kotlin-reflect.jar'的情況下運行,並且不需要任何proguard規則。 –

回答

1

如果ProGuard正在刪除您的屬性,dontwarn規則將只隱藏警告消息。您需要的是實際告訴ProGuard保留它。

一種可能的方式可以是:

-keepclassmembers public class com.cypressworks.kotlinreflectionproguard.** { 
    public * *; 
} 
相關問題