diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 3f3b158812a264dce39a7215d15d4de1440b66ac..154ee706f0cdfc8aa1fab6a3a67c8ed758f2d3b8 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -35,6 +35,55 @@ static ** INSTANCE; } +# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and +# EnclosingMethod is required to use InnerClasses. +-keepattributes Signature, InnerClasses, EnclosingMethod + +# Retrofit does reflection on method and parameter annotations. +-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations + +# Keep annotation default values (e.g., retrofit2.http.Field.encoded). +-keepattributes AnnotationDefault + +# Retain service method parameters when optimizing. +-keepclassmembers,allowshrinking,allowobfuscation interface * { + @retrofit2.http.* <methods>; +} + +# Ignore annotation used for build tooling. +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement + +# Ignore JSR 305 annotations for embedding nullability information. +-dontwarn javax.annotation.** + +# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath. +-dontwarn kotlin.Unit + +# Top-level functions that can only be used by Kotlin. +-dontwarn retrofit2.KotlinExtensions +-dontwarn retrofit2.KotlinExtensions$* + +# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy +# and replaces all potential values with null. Explicitly keeping the interfaces prevents this. +-if interface * { @retrofit2.http.* <methods>; } +-keep,allowobfuscation interface <1> + +# Keep inherited services. +-if interface * { @retrofit2.http.* <methods>; } +-keep,allowobfuscation interface * extends <1> + +# With R8 full mode generic signatures are stripped for classes that are not +# kept. Suspend functions are wrapped in continuations where the type argument +# is used. +-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation + +# R8 full mode strips generic signatures from return types if not kept. +-if interface * { @retrofit2.http.* public *** *(...); } +-keep,allowoptimization,allowshrinking,allowobfuscation class <3> + +# With R8 full mode generic signatures are stripped for classes that are not kept. +-keep,allowobfuscation,allowshrinking class retrofit2.Response + # remove unnecessary warnings # Android HTTP Libs -dontnote android.net.http.** @@ -43,8 +92,6 @@ -dontnote kotlin.** # Dagger -dontwarn com.google.errorprone.annotations.* -# Retrofit --dontwarn retrofit2.** # Annotation used by Retrofit on Java 8 VMs -dontwarn javax.annotation.Nullable -dontwarn javax.annotation.ParametersAreNonnullByDefault diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/avatars/MatrixAvatarResponse.kt b/app/src/main/java/de/kuschku/quasseldroid/util/avatars/MatrixAvatarResponse.kt index badd4c342ca0081ec720170fa6bee41b72d9dfbb..fce94b5a6f42b4b45242e2311508f426637725a9 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/avatars/MatrixAvatarResponse.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/avatars/MatrixAvatarResponse.kt @@ -25,6 +25,6 @@ import kotlinx.serialization.Serializable @Serializable data class MatrixAvatarResponse( @SerialName("avatar_url") - val avatarUrl: String? + val avatarUrl: String? = null )