You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio开发APP启动崩溃:ExceptionInInitializerError错误成因分析求助

解决OkHttp抛出"Expected Android API level 21+ but was 30"的崩溃问题

这个错误看起来特别矛盾——明明你的设备API Level是30(远高于要求的21),但OkHttp却抛出了这个异常。我之前遇到过类似情况,根源是OkHttp版本兼容性问题,具体来说是旧版本OkHttp对Android 11(API30)的支持存在bug,或者项目中存在OkHttp依赖冲突。

错误原因分析

从错误栈可以看到,异常来自OkHttp的AndroidPlatform.buildIfSupported()方法。在OkHttp 4.9.0之前的旧版本中,内部的API Level检测逻辑存在缺陷:当运行在Android 11(API30)上时,会错误地判定当前API Level不满足21+的要求,进而抛出这个异常。另外,如果项目中同时依赖了多个版本的OkHttp,也可能导致运行时加载了存在bug的旧版本类。

解决方案

1. 升级OkHttp到最新稳定版本

OkHttp在4.9.0版本修复了Android 11的兼容性问题,建议直接升级到最新稳定版。在你的项目Module级别build.gradle中更新依赖:

// 确保使用4.9.0及以上版本
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
// 同步更新Retrofit相关依赖,确保版本兼容
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'

2. 检查并解决依赖冲突

有时候项目中的第三方库可能依赖了旧版本的OkHttp,导致依赖冲突。你可以通过以下命令查看项目的依赖树:

# macOS/Linux
./gradlew app:dependencies

# Windows
gradlew app:dependencies

在输出中查找okhttp相关条目,如果发现多个版本,需要排除旧版本的依赖。比如,假设某个库com.example:some-library依赖了旧版本OkHttp,可以在依赖声明中排除:

implementation('com.example:some-library:1.0.0') {
    exclude group: 'com.squareup.okhttp3', module: 'okhttp'
}

3. 验证Android Gradle插件版本

确保你的Android Gradle插件(AGP)版本支持Android 11(API30)。在项目根目录的build.gradle中,AGP版本至少要在4.1.0及以上:

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.3' // 或更高兼容版本
    }
}

4. 临时关闭混淆测试(可选)

如果以上方法都无效,可能是混淆配置导致OkHttp的核心类被错误处理。可以暂时在proguard-rules.pro中添加OkHttp的混淆规则,或者直接关闭混淆(将minifyEnabled设为false)测试:

buildTypes {
    release {
        minifyEnabled false // 临时关闭混淆
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

额外调试建议

你的Service类实现没问题,但可以给RxJava的订阅添加错误日志,方便后续调试:

@Override
public void onError(@NonNull Throwable e) {
    Log.e("MainActivity", "API调用失败: ", e); // 添加错误日志
}

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 09:24:08