Android R8 Build Release Apk失败

问题描述

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>(...); }

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...