基于Android 11的自定义SDK接入Android Studio遇依赖兼容问题
解决API 30环境下依赖兼容与自定义API调用问题
方案1:降级依赖库适配API 30
- 逐个排查报错的Gradle依赖,替换为支持API 30的稳定版本:
- 例如
androidx.core:core-ktx可选用1.7.0(API 30兼容的最新稳定版) com.google.android.material:material可选用1.6.1
- 例如
- 修改模块级
build.gradle中的依赖声明,替换版本号后同步Gradle,验证依赖是否正常加载。
方案2:保留高编译SDK,通过版本隔离调用自定义API
- 保持项目
compileSdk = 34、targetSdk = 34,仅设置minSdk = 30 - 创建API 30专属代码目录
src/main/java-api30,将调用自定义API的逻辑放在该目录下 - 在模块级
build.gradle中配置源集:android { sourceSets { main { java { srcDirs = ['src/main/java', 'src/main/java-api30'] } } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } - 调用自定义API前做版本判断,避免高版本环境报错:
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) { // 执行自定义系统服务调用逻辑 CustomSystemService.getInstance().customMethod() } - 限制Custom SDK的依赖范围:
dependencies { implementation("com.your.custom:sdk:1.0.0") { version { strictly "1.0.0" because "Custom SDK only supports API 30" } constraints { require("androidx.core:core-ktx", "1.7.0") } } }
方案3:扩展Custom SDK的API适配范围(需修改AOSP)
- 若有权限修改AOSP源码,将自定义系统服务的API适配逻辑扩展至API 34,添加
@RequiresApi(Build.VERSION_CODES.R)或兼容更高版本的注解 - 重新构建支持API 34的Custom SDK,导入Android Studio后即可在
compileSdk=34环境下正常调用自定义API
内容的提问来源于stack exchange,提问作者Nandish R
相关产品推荐
相关产品推荐

