Android 从defaultConfig看不到Gradle项目配置
我试图在BuildConfig.java中列出我的所有Android Gradle项目的实际依赖项(请参阅)。为此,我使用了与以下类似的代码:Android 从defaultConfig看不到Gradle项目配置,android,gradle,Android,Gradle,我试图在BuildConfig.java中列出我的所有Android Gradle项目的实际依赖项(请参阅)。为此,我使用了与以下类似的代码: def getProjectAndBuildscriptDependencies() { project.allprojects.collectMany{ proj -> def configurations = (proj.configurations + proj.buildscript.configurations)
def getProjectAndBuildscriptDependencies() {
project.allprojects.collectMany{ proj ->
def configurations = (proj.configurations + proj.buildscript.configurations)
configurations.collectMany { it.allDependencies }
}.findAll { it instanceof ExternalDependency }
}
private def resolveActualDependencyVersion(Dependency dependency) {
def version = dependency.version
boolean mightBeDynamicVersion = version != null && (version.endsWith('+') || version.endsWith(']') || version.endsWith(')') || version.startsWith('latest.'))
if (!mightBeDynamicVersion){
return version
}
def actualVersion = resolveWithAllRepositories{
project.configurations.detachedConfiguration(dependency).resolvedConfiguration.lenientConfiguration
.getFirstLevelModuleDependencies(org.gradle.api.specs.Specs.SATISFIES_ALL).find()?.moduleVersion ?: version
}
return actualVersion
}
这个函数应该收集我所有的依赖项。如果我从某个任务调用它,它会执行它必须执行的操作:
task printCurrentDependencies << {
def current = getProjectAndBuildscriptDependencies()
def currentVersions = [:]
current.each { dependency ->
def actualVersion = resolveActualDependencyVersion(dependency)
currentVersions.put(keyOf(dependency), actualVersion)
}
}
这种行为上的差异让我困惑。为什么会发生这种情况,以及如何解决它并实现我真正想要的
android {
defaultConfig {
buildConfigField "int", "depsCount", getProjectDependencies().size().toString()
}
}