问题背景:
small提供了两个重要模块:
- buildSrc——组件编译插件,用于打包组件
- small——核心库,用于加载组件
问题发现:
只看到small工程中有对small的gradle插件的引用,但是没有看到对small核心库的显式引用:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'
classpath 'net.wequick.tools.build:gradle-small:1.3.0-beta5'
}
}
apply plugin: 'net.wequick.small'
1. 之前看到同事直接把small框架源码放进demo工程里,然后没有在build.gradle中显式地配置任何对small源码模块的依赖就可以正常编译了,我感到很奇怪,难道不需要配置类似“compile xxx”的依赖?
2. 接着看small官方的使用示例demo:
https://github.com/wequick/Small/tree/master/Android/Sample,
里边没有看到small源码模块,同样没看到任何
build.gradle中显式地配置对small核心库的依赖。
问题解决:
经过分析,唯一显式配置的就只有small的打包插件,那么是不是在这个插件中自动为工程引用了small的核心库了呢?答案是对的!
Small\Android\DevSample\buildSrc\src\main\groovy\net\wequick\gradle\AndroidPlugin.groovy
protected void afterEvaluate(boolean released) {
// Automatic add `small' dependency
if (rootSmall.smallProject != null) {
project.dependencies.add(smallCompileType, rootSmall.smallProject)
} else {
project.dependencies.add(smallCompileType, "${SMALL_AAR_PREFIX}$rootSmall.aarVersion")
}
...
}