【发布时间】:2016-05-31 23:29:54
【问题描述】:
我有一个简洁的函数可以在视图上做一些事情:
fun<T : View> Activity.withView(nr : Int, fn : T.()->Unit) {
(findViewById(nr) as T?)?.fn()
}
现在,当我在我的活动中使用此功能时:
withView<Spinner>(R.id.spinner_toolbar) {
adapter = AdapterIndeksuDlaSpinnera(this@NewMainActivity, PlaylistIndex)
...在我使用 ProGuard 之前一切正常。我可以看到AdapterIndeksuDlaSpinnera 像预期的那样被损坏了,但是当使用“无法加载类 AdapterIndeksuDlaSpinnera”进行保护时应用程序失败(虽然它应该抱怨损坏的适配器名称)。
我能够通过禁用可在我的withView 中使用的所有适配器来创建临时解决方法
-keep class pl.qus.xenoamp.adapter.** { *; }
但我觉得这不是一个好的解决方案(而且我不知道其他类会以这种方式失败!)。那么任何人都可以解释问题是什么以及我应该添加什么 ProGuard 行来潜在地修复 withView 中使用的其他类的类似情况?
【问题讨论】:
-
能否请您发布适配器的
.class文件以及包含闭包的文件?它们可以在 Android 项目的build/intermediates/classes/中找到。
标签: android lambda proguard kotlin