Menu

#729 Obfuscation of closure method causes AbstractMethodError

v6.0
open-accepted
None
Medium
2018-10-27
2018-10-27
No

https://github.com/uber/AutoDispose/issues/267

  • Checkout the following commit from my project.
  • Install the release version via ./gradlew installFlossRelease
  • Open the app and add a widget to homescreen on ">= Oreo" device. Click Refresh icon in the widget and app will crash.
Fatal 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 { *; }

Discussion


Log in to post a comment.

Monday.com Logo