У меня есть этот класс
object Config {
val type = Type
val clazz = Class
object Type {
val type1 = "1"
val type2 = "2"
val type3 = "3"
}
object Class {
val class1 = "1"
val class2 = "2"
val class3 = "3"
}
}
Мне нужно получить все переменные (type1, type2, type3, class1, class2, class3).
Для этого у меня есть этот метод:
fun getAll(instance: Any? = null, depth: Int = 0): List<String> {
if (depth > 2) {
return emptyList()
}
val result = mutableListOf<String>()
val currentInstance = instance ?: this
val properties = currentInstance.javaClass.kotlin.declaredMemberProperties.filter { it.visibility == KVisibility.PUBLIC }
for (prop in properties) {
prop.get(currentInstance)?.let {
if (it is String) {
result.add(it)
} else {
result.addAll(getAll(it, depth + 1))
}
}
}
return result
}
Он отлично работает, если обфускация кода отключена.
Когда я добавляю:
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
Он больше не работает.
Я пытался добавить аннотацию @Keep или подобное правило proguard. Не работает.
Важное примечание. type1, type2, type3, class1, class2, class3 никогда не используются в коде.