Kotlin: запутанный вызываемый объект ожидает 2 аргумента, но 1 предоставлен (проблема DefaultConstructorMarker)Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Kotlin: запутанный вызываемый объект ожидает 2 аргумента, но 1 предоставлен (проблема DefaultConstructorMarker)

Сообщение Anonymous »

Я столкнулся с проблемой в Kotlin, когда включена обфускация, особенно при динамическом вызове функции с использованием KFunction.callBy. Код работает нормально в среде без обфускации, но дает сбой после применения обфускации.
data class User(
val name: String
)

private fun buildObject(
...
constructor: KFunction,
): T {
val params = constructor.valueParameters.mapIndexed { index, param ->
val res = getValueForParam()
param to res
}.toMap()
return constructor.callBy(params)
}

После включения обфускации я получаю следующую ошибку:
Callable ожидает 2 аргумента, но был предоставлен 1.
Похоже, чтоstructor.caller.parameterTypes включает дополнительный параметр типа DefaultConstructorMarker.
правила proguard:
-keepattributes *Annotation*, Signature, InnerClasses, Synthetic, MethodParameters, RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations, Record, InnerClasses, EnclosingMethod
-keep class my.package.** { *;(...); }
-keepclassmembers class my.package.**$* { *; }
-keepclassmembernames class my.package.**$* { *; }
-keep class kotlin.Metadata { *; }


Подробнее здесь: https://stackoverflow.com/questions/790 ... tconstruct
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»