diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index a1173227..b468b826 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -62,15 +62,6 @@ -keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {} -keepnames class kotlinx.coroutines.CoroutineExceptionHandler {} -# Exclude Retrofit2 --keepattributes Signature, InnerClasses, EnclosingMethod --keepclassmembers,allowshrinking,allowobfuscation interface * { - @retrofit2.http.* ; -} --dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement --dontwarn javax.annotation.** --dontwarn kotlin.Unit - # Most of volatile fields are updated with AFU and should not be mangled -keepclassmembernames class kotlinx.** { volatile ; @@ -82,9 +73,36 @@ -keep class pl.szczodrzynski.edziennik.data.api.szkolny.interceptor.Signing { public final byte[] pleaseStopRightNow(java.lang.String, long); } +-keepclassmembers class pl.szczodrzynski.edziennik.ui.login.qr.* { *; } -keepclassmembers class pl.szczodrzynski.edziennik.data.api.szkolny.request.** { *; } -keepclassmembers class pl.szczodrzynski.edziennik.data.api.szkolny.response.** { *; } -keepclassmembernames class pl.szczodrzynski.edziennik.ui.login.LoginInfo$Platform { *; } -keepclassmembernames class pl.szczodrzynski.fslogin.realm.RealmData { *; } -keepclassmembernames class pl.szczodrzynski.fslogin.realm.RealmData$Type { *; } + +# Exclude Retrofit2 +-keepattributes Signature, InnerClasses, EnclosingMethod +-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations +-keepattributes AnnotationDefault + +-keepclassmembers,allowshrinking,allowobfuscation interface * { + @retrofit2.http.* ; +} + +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement +-dontwarn javax.annotation.** +-dontwarn kotlin.Unit +-dontwarn retrofit2.KotlinExtensions +-dontwarn retrofit2.KotlinExtensions$* + +-if interface * { @retrofit2.http.* ; } +-keep,allowobfuscation interface <1> + +-if interface * { @retrofit2.http.* ; } +-keep,allowobfuscation interface * extends <1> + +-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation +-if interface * { @retrofit2.http.* public *** *(...); } +-keep,allowoptimization,allowshrinking,allowobfuscation class <3> +-keep,allowobfuscation,allowshrinking class retrofit2.Response \ No newline at end of file diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt index c4485aba..4af16ccd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt @@ -228,7 +228,7 @@ class LoginFormFragment : Fragment(), CoroutineScope { val qrDecoderClass = credential.qrDecoderClass ?: return app.permissionManager.requestCameraPermission(activity, R.string.permissions_qr_scanner) { QrScannerDialog(activity, onCodeScanned = { code -> - val decoder = qrDecoderClass.newInstance() + val decoder = qrDecoderClass.getDeclaredConstructor().newInstance() val values = decoder.decode(code) if (values == null) { Toast.makeText(activity, R.string.login_qr_decoding_error, Toast.LENGTH_SHORT).show()