com.android.application与com.android.tools.build的区别及依赖疑问
关于nowinandroid项目中AGP依赖与插件的区别解答
核心场景差异:app模块中使用
com.android.application插件,是在Gradle构建脚本里应用插件——这会让Gradle在构建阶段加载Android Gradle插件(AGP)的运行时功能,但不会给编写自定义插件的代码(比如build-logic里的ConventionPlugin)提供编译期的API依赖。build-logic需单独引入
com.android.tools.build的原因:
当你在build-logic的Kotlin代码里直接引用ApplicationExtension这类AGP的API类型时,代码在编译阶段就需要找到这些类的定义。而com.android.application插件是给应用模块的构建脚本使用的,它不会自动把AGP的API依赖传递给build-logic模块。所以必须在build-logic的build.gradle.kts里显式引入com.android.tools.build:gradle-api类库,这样编译器才能找到ApplicationExtension的类定义,避免出现找不到的编译错误。本质区别:
com.android.application是Gradle插件,作用是为Android应用模块提供构建能力,应用后Gradle会完成AGP的初始化与运行逻辑。com.android.tools.build:gradle-api是编译期依赖,用于给编写自定义Gradle插件(比如项目中的AndroidApplicationComposeConventionPlugin)提供AGP的API类库,让你能在代码中操作AGP的扩展配置(比如ApplicationExtension)。
简单总结:app模块是用AGP来构建应用,build-logic是写代码来配置AGP的行为,后者必须拿到AGP的API类文件才能编译通过。
内容的提问来源于stack exchange,提问作者user24732499
相关产品推荐
相关产品推荐

