Gradle构建Android应用时报错“已配置依赖功能但未设置包ID”原因咨询
报错根因
本次构建报错的核心是模块插件类型配置错位:
- 被主应用依赖的
network模块错误使用了com.android.application插件,该插件仅面向可独立打包安装的应用入口模块,不适用于被其他模块依赖的共享代码模块。 - Android Gradle Plugin在识别到被依赖模块的application插件配置时,会将其误判定为动态特性(Dynamic Feature)类型的依赖项,触发动态特性模块的强制校验逻辑:动态特性依赖必须配置关联的基础包ID,但当前配置不存在对应设置,最终抛出
Dependent features configured but no package ID was set.错误。
解决方案
按以下步骤修正配置即可解决报错:
- 修正network模块的插件声明
打开network模块的build.gradle文件,将错误的application插件替换为Library模块对应的插件:
原错误插件配置:
修正后插件配置:plugins { id 'com.android.application' id 'kotlin-android' id 'dagger.hilt.android.plugin' id 'kotlin-kapt' id 'kotlin-parcelize' }plugins { id 'com.android.library' id 'kotlin-android' id 'dagger.hilt.android.plugin' id 'kotlin-kapt' id 'kotlin-parcelize' } - 清理network模块的冗余配置
删除android.defaultConfig块下的applicationId配置:Library模块没有独立的应用ID权限,最终运行时的包名完全由主应用模块统一指定,单独给Library设置applicationId属于无效配置,也是触发校验异常的诱因之一。
修正后的defaultConfig示例:defaultConfig { minSdkVersion 21 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - 执行缓存清理后重新构建
完成配置修正后,先执行项目的Clean Project操作清除旧的构建缓存,再重新触发构建流程,即可正常完成打包。
内容的提问来源于stack exchange,提问作者Svetl9chok
相关产品推荐
相关产品推荐

