问题描述
minifyEnabled = false构建成功,minifyEnabled = false构建失败
构建debugApk成功,但是构建releaseApk失败
请帮助我,我找不到问题
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)
...
解决方法
我在RxJava3版本中遇到了这种现象。也是3.0.6。
原因是R8尝试删除该方法并在单个调用站点上内联它。
详细请参见https://developer.android.com/studio/build/shrink-code。
因此,如果我们的应用程序从多个位置调用RunnableDisposable.constructor
,则不会发生此问题。
我的意思是,如果使用两种或更多种RunnableDisposable
扩展类,我们就不会遇到此问题。
解决方法是简单地添加以下proguard规则。
-keep class io.reactivex.rxjava3.disposables.RunnableDisposable { <init>(...); }