I’ve found that Kotlin leaves so much metadata that it counters a lot of obfuscation. The best I’ve been able to do about it so far is to have the following in my gradle build files for my Android applications:
// Configure Kotlin compiler to remove not-null-assertions for a slight performance improvement,
// but more importantly because the compiler leaves string-representations of method and parameter names
// that ProGuard doesn't obfuscate.
freeCompilerArgs += '-Xno-param-assertions'
freeCompilerArgs += '-Xno-call-assertions'
freeCompilerArgs += '-Xno-receiver-assertions'
I use this only for the release-flavor of my apps, so that I can still get the benefit of not-null-assertions during development.
Admittedly it has been a while since I decompiled an app where I used these rules, so they might need improvement, or might have been disabled in newer versions of Kotlin.