Android项目中已删除的appcompat依赖来源排查
关于删除appcompat依赖后仍可使用AppCompatActivity的原因
核心原因是Material Design库(com.google.android.material:material:1.8.0)本身包含对androidx.appcompat:appcompat的传递依赖,这是Gradle依赖管理的特性导致的:
- 当你引入
material:1.8.0时,Gradle会自动解析并下载它依赖的所有子库,其中就包含了appcompat:1.5.0。所以即便你手动删除了自己显式声明的appcompat依赖,项目依然能通过material的传递依赖获取到该库,自然可以正常使用AppCompatActivity。 - 当你手动添加并升级到
implementation 'androidx.appcompat:appcompat:1.6.1'时,Gradle会优先使用你显式声明的更高版本,覆盖material依赖的旧版本——这符合依赖解析规则:显式声明的依赖版本优先级高于传递依赖的版本。 - 你通过
Project structures->Dependencies查到的结果也直接验证了这一点:appcompat确实是material:1.8.0的传递依赖。
如果想更直观地查看所有依赖的层级关系,可以在项目根目录的终端执行命令:
# macOS/Linux ./gradlew app:dependencies # Windows gradlew.bat app:dependencies
执行后会列出项目所有依赖的完整树状结构,能清晰看到appcompat的来源路径。
内容的提问来源于stack exchange,提问作者William Hu
相关产品推荐
相关产品推荐

