diff --git a/moshi/src/main/java/com/squareup/moshi/internal/Util.java b/moshi/src/main/java/com/squareup/moshi/internal/Util.java index 08c56ee..423b289 100644 --- a/moshi/src/main/java/com/squareup/moshi/internal/Util.java +++ b/moshi/src/main/java/com/squareup/moshi/internal/Util.java @@ -52,13 +52,20 @@ public final class Util { static { Class metadata = null; - Class defaultConstructorMarker = null; try { + //noinspection unchecked metadata = (Class) Class.forName("kotlin.Metadata"); - defaultConstructorMarker = Class.forName("kotlin.jvm.internal.DefaultConstructorMarker"); } catch (ClassNotFoundException ignored) { } METADATA = metadata; + + // We look up the constructor marker separately because Metadata might be (justifiably) + // stripped by R8/Proguard but the DefaultConstructorMarker is still present. + Class defaultConstructorMarker = null; + try { + defaultConstructorMarker = Class.forName("kotlin.jvm.internal.DefaultConstructorMarker"); + } catch (ClassNotFoundException ignored) { + } DEFAULT_CONSTRUCTOR_MARKER = defaultConstructorMarker; }