user14297969
user14297969

Reputation: 21

Android R8 Build Release Apk fail

minifyEnabled=false build success,minifyEnabled=false build fail

build debugApk is success but build releaseApk is fail

please help me,I can't find the problem

FORCE inlining on non-inlinable: void io.reactivex.rxjava3.disposables.RunnableDisposable.constructor$io$reactivex$rxjava3$disposables$ReferenceDisposable(java.lang.Object)
Stack trace:
com.android.tools.r8.errors.a: FORCE inlining on non-inlinable: void io.reactivex.rxjava3.disposables.RunnableDisposable.constructor$io$reactivex$rxjava3$disposables$ReferenceDisposable(java.lang.Object)
    at com.android.tools.r8.ir.conversion.O.b(:57)
    at com.android.tools.r8.ir.conversion.O.a(:390)
    at com.android.tools.r8.ir.conversion.O.a(:336)
    at com.android.tools.r8.utils.U0.a(:10)
...
    [CIRCULAR REFERENCE:com.android.tools.r8.errors.a: FORCE inlining on non-inlinable: void io.reactivex.rxjava3.disposables.RunnableDisposable.constructor$io$reactivex$rxjava3$disposables$ReferenceDisposable(java.lang.Object)]
Caused by: com.android.tools.r8.errors.b: FORCE inlining on non-inlinable: void io.reactivex.rxjava3.disposables.RunnableDisposable.constructor$io$reactivex$rxjava3$disposables$ReferenceDisposable(java.lang.Object)
    at com.android.tools.r8.graph.T.a(:42)
...

Upvotes: 2

Views: 562

Answers (1)

Pike8
Pike8

Reputation: 31

I encountered this phenomena with RxJava3 ver. 3.0.6, too.
The cause is that R8 tries to remove the method and inline it at the single call site.
See https://developer.android.com/studio/build/shrink-code in detail.
So, if our app calls RunnableDisposable.constructor from multiple places, this issue doesn't happen.
I mean that if two or more kinds of extended classes of RunnableDisposable are used, we don't encounter this issue.
And the workaround is adding the following proguard rule simply.

-keep class io.reactivex.rxjava3.disposables.RunnableDisposable { <init>(...); }

Upvotes: 3

Related Questions