升级Target SDK到30后OkHttpProfilerInterceptor运行崩溃如何处理?
问题根因
这个报错是OkHttp版本依赖冲突导致的:你项目中引入的旧版OkHttp(通常是3.12.x及更早版本,或者4.0-4.2的早期版本)发布时Android 11(API 30)还未推出,旧版本的版本校验逻辑无法识别API 30的版本号,才会抛出Expected Android API level 21+ but was 30的异常。
你单独升级OkHttp不生效的核心原因是:AndroidNetworking框架、OkHttpProfilerInterceptor插件内部默认依赖了旧版OkHttp,会覆盖你手动声明的高版本OkHttp依赖。
解决方案
按顺序执行以下步骤即可解决:
- 第一步:统一升级所有OkHttp相关依赖到适配API 30的版本,最低版本要求:
- OkHttp 3.x分支:至少升级到
3.14.9 - OkHttp 4.x分支:至少升级到
4.3.0
- OkHttp 3.x分支:至少升级到
- 第二步:排除间接依赖的旧版OkHttp,在你的
build.gradle(app层级)中给冲突的依赖添加排除规则:
dependencies { // 排除AndroidNetworking内部的旧版OkHttp implementation ('com.amitshekhar.android:android-networking:1.0.2') { exclude group: 'com.squareup.okhttp3', module: 'okhttp' } // 排除OkHttpProfilerInterceptor内部的旧版OkHttp implementation ('com.localebro:okhttpprofiler:1.0.8') { exclude group: 'com.squareup.okhttp3', module: 'okhttp' } // 手动引入符合版本要求的OkHttp implementation 'com.squareup.okhttp3:okhttp:3.14.9' // 也可替换为4.3.0及以上版本 }
- 第三步:清理项目缓存后重新编译:依次执行菜单栏的Build -> Clean Project,再执行Rebuild Project即可。
验证方式
你可以在Android Studio的Terminal中执行./gradlew app:dependencies(Windows系统执行gradlew app:dependencies),搜索okhttp关键字,确认所有OkHttp依赖的版本都统一为你声明的高版本,没有低版本残留即可。
内容的提问来源于stack exchange,提问作者Siddhesh Pawar
相关产品推荐
相关产品推荐

