Android R8 Build Release Apk fail



minimyEnabled=错误生成成功,minimyEnableD=错误生成失败

build-debugApk成功,但build-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>(...); }

相关内容

  • 没有找到相关文章