Mam schludny funkcji, która robi coś na widoku:Kotlin, Proguard i lambdas
fun<T : View> Activity.withView(nr : Int, fn : T.()->Unit) {
(findViewById(nr) as T?)?.fn()
}
Teraz, kiedy korzystać z tej funkcji w mojej działalności:
withView<Spinner>(R.id.spinner_toolbar) {
adapter = AdapterIndeksuDlaSpinnera([email protected], PlaylistIndex)
... wszystko jest OK, dopóki nie skorzystam z ProGuard. Widzę, że AdapterIndeksuDlaSpinnera
zostaje zmanipulowany zgodnie z oczekiwaniami, ale aplikacja kończy się niepowodzeniem, gdy jest wyświetlana z napisem "Nie można załadować klasy AdapterIndeksuDlaSpinnera" (podczas gdy powinna narzekać na zniekształconą nazwę adaptera).
udało mi się stworzyć temporaty obejścia poprzez wyłączenie maglowania wszystkich adapterów, które można wykorzystać w moim withView
-keep class pl.qus.xenoamp.adapter.** { *; }
ale nie czuję, że to dobre rozwiązanie (i nie mam pojęcia, co innych klas może zawieść w ten sposób!). Czy ktoś może wyjaśnić, na czym polega problem i jaką linię ProGuard powinienem dodać, aby potencjalnie naprawić podobne wystąpienia innych klas używanych w withView
?
Czy możesz napisać plik '.class' dla adaptera, jak również plik zawierający zamknięcie? Można je znaleźć w 'build/intermediates/classes /' projektu Android. – user1643723
Pozwól nam [kontynuować tę dyskusję na czacie] (http://chat.stackoverflow.com/rooms/103964/discussion-between-user1643723-and-ssuukk). – user1643723