You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

添加RxJava 3.0.0后Android空Activity项目启动崩溃求助

问题分析与解决方案

这绝对不是bug,而是你的项目缺少了RxJava 3所需的Java 8字节码支持配置,导致Dex验证失败,最终引发了类找不到的崩溃。

问题根源

RxJava 3.0.0及后续版本默认采用Java 8的字节码特性(比如默认方法、lambda优化等),而Android Studio 3.6创建的默认Empty Activity项目,默认并未开启Java 8编译支持。当你引入RxJava 3依赖后,编译出的Dex文件包含了Android旧版Dex编译器无法识别的字节码类型(日志里的Bad method handle type 8就是最直接的证据),导致Dex加载失败,进而触发ClassNotFoundException(本质是MainActivity的类无法从损坏的Dex中加载)。

而RxJava 2.2.18这类版本,依然兼容Java 7的字节码规范,所以不需要额外配置就能正常运行。

解决步骤

只需在你的app模块的build.gradle文件中,添加Java 8编译支持配置即可:

android {
    // 保留你原有的其他配置...

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    // 如果你使用Kotlin开发,还需要添加以下配置
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

添加完成后,点击Android Studio右上角的Sync Now同步gradle,然后重新运行项目就能正常启动了。

内容的提问来源于stack exchange,提问作者Elye

火山引擎 最新活动