Obfuscation of closure method causes AbstractMethodError
Java class file shrinker, optimizer, obfuscator, and preverifier
Brought to you by:
guardsquare
https://github.com/uber/AutoDispose/issues/267
./gradlew installFlossReleaseFatal Exception: java.lang.AbstractMethodError: abstract method "java.lang.Object com.uber.autodispose.lifecycle.a.a(java.lang.Object)"
at com.uber.autodispose.lifecycle.LifecycleScopes.resolveScopeFromLifecycle$28a56d8f(LifecycleScopes.java:87)
at com.uber.autodispose.lifecycle.LifecycleScopes.resolveScopeFromLifecycle(LifecycleScopes.java:57)
at com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider.requestScope(AndroidLifecycleScopeProvider.java:147)
at com.uber.autodispose.AutoDispose.lambda$autoDisposable$0(AutoDispose.java:83)
at com.uber.autodispose.AutoDispose.lambda$MhJlo8Z2Vdj4-KIAZlAls6e5pmM(Unknown Source)
at com.uber.autodispose.-$$Lambda$c$MhJlo8Z2Vdj4-KIAZlAls6e5pmM.call(Unknown Source:2)
at io.reactivex.internal.operators.completable.CompletableDefer.subscribeActual(CompletableDefer.java:36)
at io.reactivex.Completable.subscribe(Completable.java:2185)
at com.uber.autodispose.AutoDisposingCompletableObserverImpl.onSubscribe(AutoDisposingCompletableObserverImpl.java:58)
at io.reactivex.internal.operators.completable.CompletableObserveOn$ObserveOnCompletableObserver.onSubscribe(CompletableObserveOn.java:67)
at io.reactivex.internal.operators.completable.CompletableSubscribeOn.subscribeActual(CompletableSubscribeOn.java:36)
at io.reactivex.Completable.subscribe(Completable.java:2185)
at io.reactivex.internal.operators.completable.CompletableObserveOn.subscribeActual(CompletableObserveOn.java:34)
at io.reactivex.Completable.subscribe(Completable.java:2185)
at com.uber.autodispose.AutoDisposeCompletable.subscribeActual(AutoDisposeCompletable.java:34)
at io.reactivex.Completable.subscribe(Completable.java:2185)
at io.reactivex.Completable.subscribe(Completable.java:2284)
at com.uber.autodispose.AutoDispose$1$1.subscribe(AutoDispose.java:125)
at com.tasomaniac.devwidget.widget.click.WidgetRefreshActivity.onCreate(WidgetRefreshActivity.kt:31)
at android.app.Activity.performCreate(Activity.java:7041)
at android.app.Activity.performCreate(Activity.java:7032)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1231)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2864)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2989)
at android.app.ActivityThread.-wrap11(Unknown Source)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6753)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
I have optimizations enabled and that causes the problem. It might be a bug in Proguard actually. I've fixed it with the following rule:
-keepnames public interface com.uber.autodispose.lifecycle.CorrespondingEventsFunction { *; }